{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"API Pillr","version":"1.2.0","description":"Pillr Data : les données immobilières françaises de Pillr. Authentification par clé en en-tête Authorization: Bearer (pk_live_ ou pk_test_). Chaque opération coûte un nombre de crédits fixe, indiqué dans x-pillr-credits ; une réponse identique servie dans les 24 h, une réponse 304, une ressource absente et un échec ne sont pas débités. À l'usage, 0,005 € HT le crédit, facturé chaque mois sous un plafond de dépense, après 500 crédits offerts à l'ouverture du compte ; ou abonnement Data à 200 € HT par mois, 100 000 crédits inclus, puis 0,002 € HT le crédit. x-pillr-palier-minimal vaut usage (ouverte à l'usage et à l'abonnement Data), data (abonnement Data) ou contrat. Listes paginées par curseur opaque (limite, curseur, curseur_suivant) ; opérations longues en tâche (202, Location, attendre) ; variantes en lot (POST .../lot). Erreurs en application/problem+json, en français, avec un code stable."},"servers":[{"url":"https://pillr.fr/api/v1"}],"security":[{"cle":[]}],"paths":{"/annonces/{id}":{"get":{"operationId":"annonce","summary":"Annonce par lien ou identifiant","description":"Fiche complète d'une annonce de vente analysée, retrouvée par son lien Leboncoin, BienIci ou SeLoger, ou par son identifiant : faits du bien et détails du portail (honoraires, taxe foncière, copropriété, équipements), vendeur professionnel nommé avec son enseigne, son SIREN et son mandat, photos et description, analyse complète (score et sous-scores, verdict, forces et faiblesses, leviers et cibles de négociation, loyer, rendements recalculés, budget, travaux par poste lus sur les photos, stratégie locative, régime fiscal), valeurs brutes du modèle à côté des valeurs recalculées, coût de sortie de passoire, échéance de location, historique des prix et diffusion en nombres. Données brutes du portail avec inclure=brut, pour un professionnel. Rien n'est débité si l'annonce est absente ou pas encore analysée. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"inclure","in":"query","required":false,"schema":{"description":"brut : ajoute les données brutes du portail (vendeur professionnel seulement).","type":"string","enum":["brut"]}},{"name":"champs","in":"query","required":false,"schema":{"description":"Champs rendus, séparés par des virgules (« prix,surface,analyse.score ») ; tous si absent.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":60,"type":"array","items":{"type":"string","maxLength":300}}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"statut":{"description":"actif : en ligne ; retire : retirée du portail ; masque : ni l'un ni l'autre (contrôle en cours).","type":"string","enum":["actif","retire","masque"]},"actif":{"type":"boolean"},"type":{"type":"string"},"neuf_ancien":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"description":"Position telle que le portail la donne, avec sa précision.","anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"precision":{"description":"adresse, approchee, centre_commune ou inconnue.","type":"string"}},"required":["lat","lon","precision"],"additionalProperties":false},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_portail":{"description":"Prix au m² affiché par le portail, servi à côté.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"chambres":{"anyOf":[{"type":"number"},{"type":"null"}]},"etage":{"anyOf":[{"type":"number"},{"type":"null"}]},"nb_etages":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_de_bain":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_d_eau":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"jardin_privatif_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_portail_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_suspect":{"description":"Vrai si le terrain d'une maison est plus petit que sa surface habitable.","anyOf":[{"type":"boolean"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"type":"object","properties":{"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges_kg_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_statut":{"anyOf":[{"type":"string","enum":["non_soumis","vierge"]},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["etiquette","conso_kwh_m2_an","ges","ges_kg_m2_an","ges_statut","interdiction_location","mois_restants"],"additionalProperties":false},"equipements":{"type":"object","properties":{"ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"balcon":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cave":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parking":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"meuble":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"terrasse":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"jardin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"piscine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"garage":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_equipee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"visite_virtuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"orientation":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage_mode":{"anyOf":[{"type":"string"},{"type":"null"}]},"liste":{"description":"Équipements listés par le portail.","type":"array","items":{"type":"string"}}},"required":["ascenseur","balcon","cave","parking","meuble","terrasse","jardin","piscine","garage","cuisine_equipee","visite_virtuelle","orientation","chauffage","chauffage_mode","liste"],"additionalProperties":false},"details_portail":{"type":"object","properties":{"prix_hors_honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires_a_charge":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxe_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_copro_annuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_suspectes":{"description":"Vrai si les charges annuelles d'un appartement en copropriété semblent mensuelles.","anyOf":[{"type":"boolean"},{"type":"null"}]},"budget_energie_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_energie_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots_copro":{"anyOf":[{"type":"number"},{"type":"null"}]},"procedure_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"en_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["prix_hors_honoraires","honoraires","honoraires_a_charge","taxe_fonciere","charges_copro_annuelles","charges_suspectes","budget_energie_min","budget_energie_max","lots_copro","procedure_copro","en_copro"],"additionalProperties":false},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est servi en entier (nom, enseigne, SIREN, mandat, coordonnées professionnelles), un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat":{"description":"Type de mandat publié (simple, exclusif) ; null si inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"telephone":{"description":"Téléphone professionnel publié par le portail ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique professionnelle publiée par le portail ; jamais celle d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren","mandat","telephone","email"],"additionalProperties":false},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Description du portail, en texte ; les coordonnées d'un vendeur qui n'est pas un professionnel en sont retirées.","anyOf":[{"type":"string"},{"type":"null"}]},"photos":{"description":"Liens des photos chez le portail.","type":"array","items":{"type":"string"}},"premiere_parution":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"estimee":{"description":"Vrai quand la date est une estimation (portail qui ne la publie pas).","type":"boolean"}},"required":["date","estimee"],"additionalProperties":false},"vu_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retire_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"entree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"bien_uid":{"description":"Bien dédoublonné qui porte l'annonce (opération bien).","anyOf":[{"type":"string"},{"type":"null"}]},"analyse":{"type":"object","properties":{"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"sous_scores":{"type":"object","properties":{"localisation":{"anyOf":[{"type":"number"},{"type":"null"}]},"transport":{"anyOf":[{"type":"number"},{"type":"null"}]},"rentabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"potentiel":{"anyOf":[{"type":"number"},{"type":"null"}]},"etat":{"anyOf":[{"type":"number"},{"type":"null"}]},"marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"fiscalite":{"anyOf":[{"type":"number"},{"type":"null"}]},"risques":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["localisation","transport","rentabilite","potentiel","etat","marche","fiscalite","risques","qualite_annonce"],"additionalProperties":false},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"forces":{"type":"array","items":{"type":"string"}},"faiblesses":{"type":"array","items":{"type":"string"}},"recommandation":{"anyOf":[{"type":"string"},{"type":"null"}]},"leviers":{"description":"Leviers de négociation.","type":"array","items":{"type":"string"}},"negociation":{"type":"object","properties":{"cible_min":{"description":"Cible basse, bornée entre 60 % et 100 % du prix.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"cible_min_moteur":{"description":"Cible basse écrite par le modèle, avant bornage.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["cible_min","cible_max","cible_min_moteur","cible_max_moteur"],"additionalProperties":false},"loyer":{"type":"object","properties":{"estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait ou a écarté son estimation.","anyOf":[{"type":"number"},{"type":"null"}]},"source":{"description":"carte_des_loyers, repli, ecarte ou non_precise.","anyOf":[{"type":"string"},{"type":"null"}]},"estime_moteur":{"description":"Loyer écrit par le moteur, servi tel quel.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["estime","source","estime_moteur"],"additionalProperties":false},"rendement_brut":{"description":"Rendement brut en %, recalculé depuis le loyer estimé et le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire":{"description":"Frais de notaire au taux de l'ancien, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_total":{"description":"Prix, frais de notaire et milieu de la fourchette des travaux, en euros ; null si les travaux ne sont pas évalués.","anyOf":[{"type":"number"},{"type":"null"}]},"budget_total_moteur":{"description":"Budget écrit par le modèle : son sens varie selon les analyses, à lire avec prudence.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 ; null avec des photos de catalogue.","anyOf":[{"type":"number"},{"type":"null"}]},"photos":{"type":"object","properties":{"exploitables":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["exploitables","total","qualite_annonce"],"additionalProperties":false},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"postes":{"description":"Travaux par poste, lus sur les photos.","type":"array","items":{"type":"object","properties":{"poste":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["poste","libelle","min","max","priorite"],"additionalProperties":false}},"defauts":{"description":"Défauts relevés sur les photos, par gravité.","anyOf":[{"type":"object","properties":{"mineur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"moyen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"majeur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mineur","moyen","majeur"],"additionalProperties":false},{"type":"null"}]},"pieces_vues":{"description":"Pièces vues sur les photos.","type":"array","items":{"type":"string"}},"pieces_manquantes":{"description":"Pièces clés absentes des photos (cuisine, salle de bain).","type":"array","items":{"type":"string"}},"etat_general_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"urgence_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"min_moteur":{"description":"Budget bas écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"max_moteur":{"description":"Budget haut écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"alertes":{"type":"array","items":{"type":"string"}}},"required":["statut","min","max","max_m2","postes","defauts","pieces_vues","pieces_manquantes","etat_general_moteur","urgence_moteur","min_moteur","max_moteur","alertes"],"additionalProperties":false},"strategie_locative":{"anyOf":[{"type":"string"},{"type":"null"}]},"strategie_locative_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal_fiable":{"description":"Faux quand le régime vaut LMNP_REEL : le modèle le propose sur presque toutes les analyses.","type":"boolean"},"regime_fiscal_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"economie_fiscale_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxe_fonciere_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_annuelles_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"type":"object","properties":{"enchere":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_catalogue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vendu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raisons":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enchere","photos_catalogue","vendu","loue","raisons"],"additionalProperties":false},"confiance":{"type":"object","properties":{"niveau_moteur":{"description":"Confiance déclarée par le modèle lui-même (high sur la plupart des analyses).","anyOf":[{"type":"string"},{"type":"null"}]},"facteurs":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}}},"required":["niveau_moteur","facteurs","limites"],"additionalProperties":false},"completude":{"anyOf":[{"type":"string","enum":["haute","moyenne","basse"]},{"type":"null"}]},"completude_criteres":{"type":"object","properties":{"dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loyer_communal":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"prix_dvf":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_exploitables":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_salle_de_bain_vues":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["dpe","loyer_communal","prix_dvf","photos_exploitables","cuisine_salle_de_bain_vues"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"moteur":{"type":"object","properties":{"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"analyse_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["modele","version","analyse_le"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["score","sous_scores","profil","verdict","forces","faiblesses","recommandation","leviers","negociation","loyer","rendement_brut","rendement_brut_moteur","rendement_net","rendement_net_moteur","frais_notaire","frais_notaire_moteur","budget_total","budget_total_moteur","etat_visuel","photos","travaux","strategie_locative","strategie_locative_raison","regime_fiscal","regime_fiscal_fiable","regime_fiscal_raison","economie_fiscale_an","taxe_fonciere_moteur","charges_annuelles_moteur","drapeaux","confiance","completude","completude_criteres","sources","moteur","qualite"],"additionalProperties":false},"sortie_passoire":{"description":"Coût de sortie d'une passoire (classe E, F ou G) vers D, C ou B, mesuré sur les audits énergétiques réglementaires de l'ADEME pour des logements comparables. null hors des classes E à G, pour un type de logement sans comparable, ou hors de la métropole.","anyOf":[{"type":"object","properties":{"classe_depart":{"type":"string","enum":["E","F","G"]},"cibles":{"type":"array","items":{"type":"object","properties":{"vers":{"description":"Classe visée.","type":"string","enum":["D","C","B"]},"n_audits":{"description":"Nombre d'audits comparables de la cellule retenue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"euros":{"description":"Coût des travaux chiffré par les audits comparables, sur leurs propres surfaces, en euros arrondis à la centaine.","type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},"eur_m2":{"description":"Le même coût rapporté à la surface habitable, en euros par m² ; null s'il y a trop peu d'audits avec surface.","anyOf":[{"type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"surface_mediane_m2":{"description":"Surface habitable médiane des logements audités.","anyOf":[{"type":"number"},{"type":"null"}]},"pour_la_surface":{"description":"Le coût au m² des audits appliqué à la surface du bien, quand elle est connue : le chiffre à citer.","anyOf":[{"type":"object","properties":{"surface_m2":{"type":"number"},"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["surface_m2","mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"part_au_dela":{"description":"Part des audits (0 à 1) dont l'étape chiffrée atteint déjà la classe suivante : le chiffrage dépasse alors la cible.","anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Les audits comparables, en clair (type de logement, zone climatique, période de construction).","type":"string"},"niveau":{"description":"Finesse de la cellule retenue, de la plus fine (type, zone climatique et période) à la plus large (type seul, France métropolitaine).","type":"string","enum":["complet","sans_periode","sans_zone","national"]}},"required":["vers","n_audits","euros","eur_m2","surface_mediane_m2","pour_la_surface","part_au_dela","perimetre","niveau"],"additionalProperties":false}},"lecture":{"description":"Ce que mesure le chiffre : une estimation d'auditeur, pas un devis.","type":"string"},"source":{"type":"string"}},"required":["classe_depart","cibles","lecture","source"],"additionalProperties":false},{"type":"null"}]},"prix_historique":{"description":"Variations de prix détectées, dédoublonnées au jour ; le détail est dans vie_annonce.","type":"array","items":{"type":"object","properties":{"le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"de":{"anyOf":[{"type":"number"},{"type":"null"}]},"a":{"type":"number"},"doublon_probable":{"type":"boolean"}},"required":["le","de","a","doublon_probable"],"additionalProperties":false}},"diffusion":{"description":"Le même bien chez d'autres annonceurs, en nombres ; les agences nommées sont dans vie_annonce.","anyOf":[{"type":"object","properties":{"annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"particuliers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["annonces","agences","particuliers","portails","prix_min","prix_max","premiere_parution"],"additionalProperties":false},{"type":"null"}]},"brut":{"description":"Données brutes du portail, avec inclure=brut, pour un vendeur professionnel seulement ; null sinon.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonce"}},"/annonces/par-url":{"get":{"operationId":"annonce_2","summary":"Annonce par lien ou identifiant","description":"Fiche complète d'une annonce de vente analysée, retrouvée par son lien Leboncoin, BienIci ou SeLoger, ou par son identifiant : faits du bien et détails du portail (honoraires, taxe foncière, copropriété, équipements), vendeur professionnel nommé avec son enseigne, son SIREN et son mandat, photos et description, analyse complète (score et sous-scores, verdict, forces et faiblesses, leviers et cibles de négociation, loyer, rendements recalculés, budget, travaux par poste lus sur les photos, stratégie locative, régime fiscal), valeurs brutes du modèle à côté des valeurs recalculées, coût de sortie de passoire, échéance de location, historique des prix et diffusion en nombres. Données brutes du portail avec inclure=brut, pour un professionnel. Rien n'est débité si l'annonce est absente ou pas encore analysée. Coût : 3 crédits par appel réussi.","parameters":[{"name":"url","in":"query","required":false,"schema":{"description":"Lien de l'annonce sur le portail d'origine.","type":"string","maxLength":500,"format":"uri"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"statut":{"description":"actif : en ligne ; retire : retirée du portail ; masque : ni l'un ni l'autre (contrôle en cours).","type":"string","enum":["actif","retire","masque"]},"actif":{"type":"boolean"},"type":{"type":"string"},"neuf_ancien":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"description":"Position telle que le portail la donne, avec sa précision.","anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"precision":{"description":"adresse, approchee, centre_commune ou inconnue.","type":"string"}},"required":["lat","lon","precision"],"additionalProperties":false},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_portail":{"description":"Prix au m² affiché par le portail, servi à côté.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"chambres":{"anyOf":[{"type":"number"},{"type":"null"}]},"etage":{"anyOf":[{"type":"number"},{"type":"null"}]},"nb_etages":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_de_bain":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_d_eau":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"jardin_privatif_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_portail_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_suspect":{"description":"Vrai si le terrain d'une maison est plus petit que sa surface habitable.","anyOf":[{"type":"boolean"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"type":"object","properties":{"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges_kg_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_statut":{"anyOf":[{"type":"string","enum":["non_soumis","vierge"]},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["etiquette","conso_kwh_m2_an","ges","ges_kg_m2_an","ges_statut","interdiction_location","mois_restants"],"additionalProperties":false},"equipements":{"type":"object","properties":{"ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"balcon":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cave":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parking":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"meuble":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"terrasse":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"jardin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"piscine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"garage":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_equipee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"visite_virtuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"orientation":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage_mode":{"anyOf":[{"type":"string"},{"type":"null"}]},"liste":{"description":"Équipements listés par le portail.","type":"array","items":{"type":"string"}}},"required":["ascenseur","balcon","cave","parking","meuble","terrasse","jardin","piscine","garage","cuisine_equipee","visite_virtuelle","orientation","chauffage","chauffage_mode","liste"],"additionalProperties":false},"details_portail":{"type":"object","properties":{"prix_hors_honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires_a_charge":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxe_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_copro_annuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_suspectes":{"description":"Vrai si les charges annuelles d'un appartement en copropriété semblent mensuelles.","anyOf":[{"type":"boolean"},{"type":"null"}]},"budget_energie_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_energie_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots_copro":{"anyOf":[{"type":"number"},{"type":"null"}]},"procedure_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"en_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["prix_hors_honoraires","honoraires","honoraires_a_charge","taxe_fonciere","charges_copro_annuelles","charges_suspectes","budget_energie_min","budget_energie_max","lots_copro","procedure_copro","en_copro"],"additionalProperties":false},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est servi en entier (nom, enseigne, SIREN, mandat, coordonnées professionnelles), un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat":{"description":"Type de mandat publié (simple, exclusif) ; null si inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"telephone":{"description":"Téléphone professionnel publié par le portail ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique professionnelle publiée par le portail ; jamais celle d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren","mandat","telephone","email"],"additionalProperties":false},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Description du portail, en texte ; les coordonnées d'un vendeur qui n'est pas un professionnel en sont retirées.","anyOf":[{"type":"string"},{"type":"null"}]},"photos":{"description":"Liens des photos chez le portail.","type":"array","items":{"type":"string"}},"premiere_parution":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"estimee":{"description":"Vrai quand la date est une estimation (portail qui ne la publie pas).","type":"boolean"}},"required":["date","estimee"],"additionalProperties":false},"vu_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retire_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"entree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"bien_uid":{"description":"Bien dédoublonné qui porte l'annonce (opération bien).","anyOf":[{"type":"string"},{"type":"null"}]},"analyse":{"type":"object","properties":{"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"sous_scores":{"type":"object","properties":{"localisation":{"anyOf":[{"type":"number"},{"type":"null"}]},"transport":{"anyOf":[{"type":"number"},{"type":"null"}]},"rentabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"potentiel":{"anyOf":[{"type":"number"},{"type":"null"}]},"etat":{"anyOf":[{"type":"number"},{"type":"null"}]},"marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"fiscalite":{"anyOf":[{"type":"number"},{"type":"null"}]},"risques":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["localisation","transport","rentabilite","potentiel","etat","marche","fiscalite","risques","qualite_annonce"],"additionalProperties":false},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"forces":{"type":"array","items":{"type":"string"}},"faiblesses":{"type":"array","items":{"type":"string"}},"recommandation":{"anyOf":[{"type":"string"},{"type":"null"}]},"leviers":{"description":"Leviers de négociation.","type":"array","items":{"type":"string"}},"negociation":{"type":"object","properties":{"cible_min":{"description":"Cible basse, bornée entre 60 % et 100 % du prix.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"cible_min_moteur":{"description":"Cible basse écrite par le modèle, avant bornage.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["cible_min","cible_max","cible_min_moteur","cible_max_moteur"],"additionalProperties":false},"loyer":{"type":"object","properties":{"estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait ou a écarté son estimation.","anyOf":[{"type":"number"},{"type":"null"}]},"source":{"description":"carte_des_loyers, repli, ecarte ou non_precise.","anyOf":[{"type":"string"},{"type":"null"}]},"estime_moteur":{"description":"Loyer écrit par le moteur, servi tel quel.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["estime","source","estime_moteur"],"additionalProperties":false},"rendement_brut":{"description":"Rendement brut en %, recalculé depuis le loyer estimé et le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire":{"description":"Frais de notaire au taux de l'ancien, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_total":{"description":"Prix, frais de notaire et milieu de la fourchette des travaux, en euros ; null si les travaux ne sont pas évalués.","anyOf":[{"type":"number"},{"type":"null"}]},"budget_total_moteur":{"description":"Budget écrit par le modèle : son sens varie selon les analyses, à lire avec prudence.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 ; null avec des photos de catalogue.","anyOf":[{"type":"number"},{"type":"null"}]},"photos":{"type":"object","properties":{"exploitables":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["exploitables","total","qualite_annonce"],"additionalProperties":false},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"postes":{"description":"Travaux par poste, lus sur les photos.","type":"array","items":{"type":"object","properties":{"poste":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["poste","libelle","min","max","priorite"],"additionalProperties":false}},"defauts":{"description":"Défauts relevés sur les photos, par gravité.","anyOf":[{"type":"object","properties":{"mineur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"moyen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"majeur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mineur","moyen","majeur"],"additionalProperties":false},{"type":"null"}]},"pieces_vues":{"description":"Pièces vues sur les photos.","type":"array","items":{"type":"string"}},"pieces_manquantes":{"description":"Pièces clés absentes des photos (cuisine, salle de bain).","type":"array","items":{"type":"string"}},"etat_general_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"urgence_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"min_moteur":{"description":"Budget bas écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"max_moteur":{"description":"Budget haut écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"alertes":{"type":"array","items":{"type":"string"}}},"required":["statut","min","max","max_m2","postes","defauts","pieces_vues","pieces_manquantes","etat_general_moteur","urgence_moteur","min_moteur","max_moteur","alertes"],"additionalProperties":false},"strategie_locative":{"anyOf":[{"type":"string"},{"type":"null"}]},"strategie_locative_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal_fiable":{"description":"Faux quand le régime vaut LMNP_REEL : le modèle le propose sur presque toutes les analyses.","type":"boolean"},"regime_fiscal_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"economie_fiscale_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxe_fonciere_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_annuelles_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"type":"object","properties":{"enchere":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_catalogue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vendu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raisons":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enchere","photos_catalogue","vendu","loue","raisons"],"additionalProperties":false},"confiance":{"type":"object","properties":{"niveau_moteur":{"description":"Confiance déclarée par le modèle lui-même (high sur la plupart des analyses).","anyOf":[{"type":"string"},{"type":"null"}]},"facteurs":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}}},"required":["niveau_moteur","facteurs","limites"],"additionalProperties":false},"completude":{"anyOf":[{"type":"string","enum":["haute","moyenne","basse"]},{"type":"null"}]},"completude_criteres":{"type":"object","properties":{"dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loyer_communal":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"prix_dvf":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_exploitables":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_salle_de_bain_vues":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["dpe","loyer_communal","prix_dvf","photos_exploitables","cuisine_salle_de_bain_vues"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"moteur":{"type":"object","properties":{"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"analyse_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["modele","version","analyse_le"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["score","sous_scores","profil","verdict","forces","faiblesses","recommandation","leviers","negociation","loyer","rendement_brut","rendement_brut_moteur","rendement_net","rendement_net_moteur","frais_notaire","frais_notaire_moteur","budget_total","budget_total_moteur","etat_visuel","photos","travaux","strategie_locative","strategie_locative_raison","regime_fiscal","regime_fiscal_fiable","regime_fiscal_raison","economie_fiscale_an","taxe_fonciere_moteur","charges_annuelles_moteur","drapeaux","confiance","completude","completude_criteres","sources","moteur","qualite"],"additionalProperties":false},"sortie_passoire":{"description":"Coût de sortie d'une passoire (classe E, F ou G) vers D, C ou B, mesuré sur les audits énergétiques réglementaires de l'ADEME pour des logements comparables. null hors des classes E à G, pour un type de logement sans comparable, ou hors de la métropole.","anyOf":[{"type":"object","properties":{"classe_depart":{"type":"string","enum":["E","F","G"]},"cibles":{"type":"array","items":{"type":"object","properties":{"vers":{"description":"Classe visée.","type":"string","enum":["D","C","B"]},"n_audits":{"description":"Nombre d'audits comparables de la cellule retenue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"euros":{"description":"Coût des travaux chiffré par les audits comparables, sur leurs propres surfaces, en euros arrondis à la centaine.","type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},"eur_m2":{"description":"Le même coût rapporté à la surface habitable, en euros par m² ; null s'il y a trop peu d'audits avec surface.","anyOf":[{"type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"surface_mediane_m2":{"description":"Surface habitable médiane des logements audités.","anyOf":[{"type":"number"},{"type":"null"}]},"pour_la_surface":{"description":"Le coût au m² des audits appliqué à la surface du bien, quand elle est connue : le chiffre à citer.","anyOf":[{"type":"object","properties":{"surface_m2":{"type":"number"},"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["surface_m2","mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"part_au_dela":{"description":"Part des audits (0 à 1) dont l'étape chiffrée atteint déjà la classe suivante : le chiffrage dépasse alors la cible.","anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Les audits comparables, en clair (type de logement, zone climatique, période de construction).","type":"string"},"niveau":{"description":"Finesse de la cellule retenue, de la plus fine (type, zone climatique et période) à la plus large (type seul, France métropolitaine).","type":"string","enum":["complet","sans_periode","sans_zone","national"]}},"required":["vers","n_audits","euros","eur_m2","surface_mediane_m2","pour_la_surface","part_au_dela","perimetre","niveau"],"additionalProperties":false}},"lecture":{"description":"Ce que mesure le chiffre : une estimation d'auditeur, pas un devis.","type":"string"},"source":{"type":"string"}},"required":["classe_depart","cibles","lecture","source"],"additionalProperties":false},{"type":"null"}]},"prix_historique":{"description":"Variations de prix détectées, dédoublonnées au jour ; le détail est dans vie_annonce.","type":"array","items":{"type":"object","properties":{"le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"de":{"anyOf":[{"type":"number"},{"type":"null"}]},"a":{"type":"number"},"doublon_probable":{"type":"boolean"}},"required":["le","de","a","doublon_probable"],"additionalProperties":false}},"diffusion":{"description":"Le même bien chez d'autres annonceurs, en nombres ; les agences nommées sont dans vie_annonce.","anyOf":[{"type":"object","properties":{"annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"particuliers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["annonces","agences","particuliers","portails","prix_min","prix_max","premiere_parution"],"additionalProperties":false},{"type":"null"}]},"brut":{"description":"Données brutes du portail, avec inclure=brut, pour un vendeur professionnel seulement ; null sinon.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonce"}},"/annonces/lot":{"post":{"operationId":"annonce_lot","summary":"Annonce par lien ou identifiant, en lot","description":"Annonce par lien ou identifiant pour 100 éléments au plus en un appel : chaque élément est servi ou refusé seul, avec son code d'erreur, et seuls les éléments servis sont débités. Fiche complète d'une annonce de vente analysée, retrouvée par son lien Leboncoin, BienIci ou SeLoger, ou par son identifiant : faits du bien et détails du portail (honoraires, taxe foncière, copropriété, équipements), vendeur professionnel nommé avec son enseigne, son SIREN et son mandat, photos et description, analyse complète (score et sous-scores, verdict, forces et faiblesses, leviers et cibles de négociation, loyer, rendements recalculés, budget, travaux par poste lus sur les photos, stratégie locative, régime fiscal), valeurs brutes du modèle à côté des valeurs recalculées, coût de sortie de passoire, échéance de location, historique des prix et diffusion en nombres. Données brutes du portail avec inclure=brut, pour un professionnel. Rien n'est débité si l'annonce est absente ou pas encore analysée. Coût : 3 crédits par élément rendu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"elements":{"description":"Les entrées de l'opération unitaire, 100 au plus.","minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200},"url":{"description":"Lien de l'annonce sur le portail d'origine.","type":"string","maxLength":500,"format":"uri"},"inclure":{"description":"brut : ajoute les données brutes du portail (vendeur professionnel seulement).","type":"string","enum":["brut"]}},"additionalProperties":false}}},"required":["elements"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Un résultat par élément, dans l'ordre de l'entrée : la sortie de l'opération, ou l'erreur de cet élément.","type":"array","items":{"anyOf":[{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":true},"donnees":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"statut":{"description":"actif : en ligne ; retire : retirée du portail ; masque : ni l'un ni l'autre (contrôle en cours).","type":"string","enum":["actif","retire","masque"]},"actif":{"type":"boolean"},"type":{"type":"string"},"neuf_ancien":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"description":"Position telle que le portail la donne, avec sa précision.","anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"precision":{"description":"adresse, approchee, centre_commune ou inconnue.","type":"string"}},"required":["lat","lon","precision"],"additionalProperties":false},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_portail":{"description":"Prix au m² affiché par le portail, servi à côté.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"chambres":{"anyOf":[{"type":"number"},{"type":"null"}]},"etage":{"anyOf":[{"type":"number"},{"type":"null"}]},"nb_etages":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_de_bain":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_d_eau":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"jardin_privatif_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_portail_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_suspect":{"description":"Vrai si le terrain d'une maison est plus petit que sa surface habitable.","anyOf":[{"type":"boolean"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"type":"object","properties":{"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges_kg_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_statut":{"anyOf":[{"type":"string","enum":["non_soumis","vierge"]},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["etiquette","conso_kwh_m2_an","ges","ges_kg_m2_an","ges_statut","interdiction_location","mois_restants"],"additionalProperties":false},"equipements":{"type":"object","properties":{"ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"balcon":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cave":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parking":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"meuble":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"terrasse":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"jardin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"piscine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"garage":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_equipee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"visite_virtuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"orientation":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage_mode":{"anyOf":[{"type":"string"},{"type":"null"}]},"liste":{"description":"Équipements listés par le portail.","type":"array","items":{"type":"string"}}},"required":["ascenseur","balcon","cave","parking","meuble","terrasse","jardin","piscine","garage","cuisine_equipee","visite_virtuelle","orientation","chauffage","chauffage_mode","liste"],"additionalProperties":false},"details_portail":{"type":"object","properties":{"prix_hors_honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires_a_charge":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxe_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_copro_annuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_suspectes":{"description":"Vrai si les charges annuelles d'un appartement en copropriété semblent mensuelles.","anyOf":[{"type":"boolean"},{"type":"null"}]},"budget_energie_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_energie_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots_copro":{"anyOf":[{"type":"number"},{"type":"null"}]},"procedure_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"en_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["prix_hors_honoraires","honoraires","honoraires_a_charge","taxe_fonciere","charges_copro_annuelles","charges_suspectes","budget_energie_min","budget_energie_max","lots_copro","procedure_copro","en_copro"],"additionalProperties":false},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est servi en entier (nom, enseigne, SIREN, mandat, coordonnées professionnelles), un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat":{"description":"Type de mandat publié (simple, exclusif) ; null si inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"telephone":{"description":"Téléphone professionnel publié par le portail ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique professionnelle publiée par le portail ; jamais celle d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren","mandat","telephone","email"],"additionalProperties":false},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"description":"Description du portail, en texte ; les coordonnées d'un vendeur qui n'est pas un professionnel en sont retirées.","anyOf":[{"type":"string"},{"type":"null"}]},"photos":{"description":"Liens des photos chez le portail.","type":"array","items":{"type":"string"}},"premiere_parution":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"estimee":{"description":"Vrai quand la date est une estimation (portail qui ne la publie pas).","type":"boolean"}},"required":["date","estimee"],"additionalProperties":false},"vu_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retire_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"entree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"bien_uid":{"description":"Bien dédoublonné qui porte l'annonce (opération bien).","anyOf":[{"type":"string"},{"type":"null"}]},"analyse":{"type":"object","properties":{"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"sous_scores":{"type":"object","properties":{"localisation":{"anyOf":[{"type":"number"},{"type":"null"}]},"transport":{"anyOf":[{"type":"number"},{"type":"null"}]},"rentabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"potentiel":{"anyOf":[{"type":"number"},{"type":"null"}]},"etat":{"anyOf":[{"type":"number"},{"type":"null"}]},"marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"fiscalite":{"anyOf":[{"type":"number"},{"type":"null"}]},"risques":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["localisation","transport","rentabilite","potentiel","etat","marche","fiscalite","risques","qualite_annonce"],"additionalProperties":false},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"forces":{"type":"array","items":{"type":"string"}},"faiblesses":{"type":"array","items":{"type":"string"}},"recommandation":{"anyOf":[{"type":"string"},{"type":"null"}]},"leviers":{"description":"Leviers de négociation.","type":"array","items":{"type":"string"}},"negociation":{"type":"object","properties":{"cible_min":{"description":"Cible basse, bornée entre 60 % et 100 % du prix.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"cible_min_moteur":{"description":"Cible basse écrite par le modèle, avant bornage.","anyOf":[{"type":"number"},{"type":"null"}]},"cible_max_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["cible_min","cible_max","cible_min_moteur","cible_max_moteur"],"additionalProperties":false},"loyer":{"type":"object","properties":{"estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait ou a écarté son estimation.","anyOf":[{"type":"number"},{"type":"null"}]},"source":{"description":"carte_des_loyers, repli, ecarte ou non_precise.","anyOf":[{"type":"string"},{"type":"null"}]},"estime_moteur":{"description":"Loyer écrit par le moteur, servi tel quel.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["estime","source","estime_moteur"],"additionalProperties":false},"rendement_brut":{"description":"Rendement brut en %, recalculé depuis le loyer estimé et le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire":{"description":"Frais de notaire au taux de l'ancien, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"frais_notaire_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_total":{"description":"Prix, frais de notaire et milieu de la fourchette des travaux, en euros ; null si les travaux ne sont pas évalués.","anyOf":[{"type":"number"},{"type":"null"}]},"budget_total_moteur":{"description":"Budget écrit par le modèle : son sens varie selon les analyses, à lire avec prudence.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 ; null avec des photos de catalogue.","anyOf":[{"type":"number"},{"type":"null"}]},"photos":{"type":"object","properties":{"exploitables":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite_annonce":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["exploitables","total","qualite_annonce"],"additionalProperties":false},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette du barème déterministe, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"postes":{"description":"Travaux par poste, lus sur les photos.","type":"array","items":{"type":"object","properties":{"poste":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["poste","libelle","min","max","priorite"],"additionalProperties":false}},"defauts":{"description":"Défauts relevés sur les photos, par gravité.","anyOf":[{"type":"object","properties":{"mineur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"moyen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"majeur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mineur","moyen","majeur"],"additionalProperties":false},{"type":"null"}]},"pieces_vues":{"description":"Pièces vues sur les photos.","type":"array","items":{"type":"string"}},"pieces_manquantes":{"description":"Pièces clés absentes des photos (cuisine, salle de bain).","type":"array","items":{"type":"string"}},"etat_general_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"urgence_moteur":{"anyOf":[{"type":"string"},{"type":"null"}]},"min_moteur":{"description":"Budget bas écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"max_moteur":{"description":"Budget haut écrit par le modèle de langage, servi à côté du barème.","anyOf":[{"type":"number"},{"type":"null"}]},"alertes":{"type":"array","items":{"type":"string"}}},"required":["statut","min","max","max_m2","postes","defauts","pieces_vues","pieces_manquantes","etat_general_moteur","urgence_moteur","min_moteur","max_moteur","alertes"],"additionalProperties":false},"strategie_locative":{"anyOf":[{"type":"string"},{"type":"null"}]},"strategie_locative_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal":{"anyOf":[{"type":"string"},{"type":"null"}]},"regime_fiscal_fiable":{"description":"Faux quand le régime vaut LMNP_REEL : le modèle le propose sur presque toutes les analyses.","type":"boolean"},"regime_fiscal_raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"economie_fiscale_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxe_fonciere_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_annuelles_moteur":{"anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"type":"object","properties":{"enchere":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_catalogue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vendu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loue":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raisons":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enchere","photos_catalogue","vendu","loue","raisons"],"additionalProperties":false},"confiance":{"type":"object","properties":{"niveau_moteur":{"description":"Confiance déclarée par le modèle lui-même (high sur la plupart des analyses).","anyOf":[{"type":"string"},{"type":"null"}]},"facteurs":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}}},"required":["niveau_moteur","facteurs","limites"],"additionalProperties":false},"completude":{"anyOf":[{"type":"string","enum":["haute","moyenne","basse"]},{"type":"null"}]},"completude_criteres":{"type":"object","properties":{"dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"loyer_communal":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"prix_dvf":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"photos_exploitables":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_salle_de_bain_vues":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["dpe","loyer_communal","prix_dvf","photos_exploitables","cuisine_salle_de_bain_vues"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"moteur":{"type":"object","properties":{"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"number"},{"type":"null"}]},"analyse_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["modele","version","analyse_le"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["score","sous_scores","profil","verdict","forces","faiblesses","recommandation","leviers","negociation","loyer","rendement_brut","rendement_brut_moteur","rendement_net","rendement_net_moteur","frais_notaire","frais_notaire_moteur","budget_total","budget_total_moteur","etat_visuel","photos","travaux","strategie_locative","strategie_locative_raison","regime_fiscal","regime_fiscal_fiable","regime_fiscal_raison","economie_fiscale_an","taxe_fonciere_moteur","charges_annuelles_moteur","drapeaux","confiance","completude","completude_criteres","sources","moteur","qualite"],"additionalProperties":false},"sortie_passoire":{"description":"Coût de sortie d'une passoire (classe E, F ou G) vers D, C ou B, mesuré sur les audits énergétiques réglementaires de l'ADEME pour des logements comparables. null hors des classes E à G, pour un type de logement sans comparable, ou hors de la métropole.","anyOf":[{"type":"object","properties":{"classe_depart":{"type":"string","enum":["E","F","G"]},"cibles":{"type":"array","items":{"type":"object","properties":{"vers":{"description":"Classe visée.","type":"string","enum":["D","C","B"]},"n_audits":{"description":"Nombre d'audits comparables de la cellule retenue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"euros":{"description":"Coût des travaux chiffré par les audits comparables, sur leurs propres surfaces, en euros arrondis à la centaine.","type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},"eur_m2":{"description":"Le même coût rapporté à la surface habitable, en euros par m² ; null s'il y a trop peu d'audits avec surface.","anyOf":[{"type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"surface_mediane_m2":{"description":"Surface habitable médiane des logements audités.","anyOf":[{"type":"number"},{"type":"null"}]},"pour_la_surface":{"description":"Le coût au m² des audits appliqué à la surface du bien, quand elle est connue : le chiffre à citer.","anyOf":[{"type":"object","properties":{"surface_m2":{"type":"number"},"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["surface_m2","mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"part_au_dela":{"description":"Part des audits (0 à 1) dont l'étape chiffrée atteint déjà la classe suivante : le chiffrage dépasse alors la cible.","anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Les audits comparables, en clair (type de logement, zone climatique, période de construction).","type":"string"},"niveau":{"description":"Finesse de la cellule retenue, de la plus fine (type, zone climatique et période) à la plus large (type seul, France métropolitaine).","type":"string","enum":["complet","sans_periode","sans_zone","national"]}},"required":["vers","n_audits","euros","eur_m2","surface_mediane_m2","pour_la_surface","part_au_dela","perimetre","niveau"],"additionalProperties":false}},"lecture":{"description":"Ce que mesure le chiffre : une estimation d'auditeur, pas un devis.","type":"string"},"source":{"type":"string"}},"required":["classe_depart","cibles","lecture","source"],"additionalProperties":false},{"type":"null"}]},"prix_historique":{"description":"Variations de prix détectées, dédoublonnées au jour ; le détail est dans vie_annonce.","type":"array","items":{"type":"object","properties":{"le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"de":{"anyOf":[{"type":"number"},{"type":"null"}]},"a":{"type":"number"},"doublon_probable":{"type":"boolean"}},"required":["le","de","a","doublon_probable"],"additionalProperties":false}},"diffusion":{"description":"Le même bien chez d'autres annonceurs, en nombres ; les agences nommées sont dans vie_annonce.","anyOf":[{"type":"object","properties":{"annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"particuliers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["annonces","agences","particuliers","portails","prix_min","prix_max","premiere_parution"],"additionalProperties":false},{"type":"null"}]},"brut":{"description":"Données brutes du portail, avec inclure=brut, pour un vendeur professionnel seulement ; null sinon.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","id_portail","lien","source","statut","actif","type","neuf_ancien","commune","code_postal","insee","departement","region","position","prix","prix_m2","prix_m2_portail","surface","pieces","chambres","etage","nb_etages","salles_de_bain","salles_d_eau","terrain_m2","jardin_privatif_m2","terrain_portail_m2","terrain_suspect","annee_construction","dpe","equipements","details_portail","type_vendeur","annonceur","titre","description","photos","premiere_parution","vu_le","retire_le","entree_le","maj_le","bien_uid","analyse","sortie_passoire","prix_historique","diffusion","brut","drapeaux","qualite"],"additionalProperties":false}},"required":["index","ok","donnees"],"additionalProperties":false},{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":false},"erreur":{"type":"object","properties":{"code":{"description":"Code stable de l'erreur (lib/api/v1/erreurs.ts).","type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false}},"required":["index","ok","erreur"],"additionalProperties":false}]}},"n_ok":{"type":"integer","minimum":0,"maximum":9007199254740991},"n_erreurs":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","n_ok","n_erreurs","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonce_lot","x-pillr-lot-de":"annonce"}},"/annonces":{"get":{"operationId":"rechercher_annonces","summary":"Recherche d'annonces analysées","description":"Annonces de vente actives et analysées, par communes, codes postaux, départements ou autour d'un point, filtrées par type (appartement, maison, immeuble), prix, pièces, chambres, surface, prix au m², rendement brut ou net, score, DPE, passoires, état visuel, travaux, type de vendeur, SIREN ou enseigne de l'agence, mots-clés, date de parution, résidences gérées et règle « sous le marché ». Tri par rendement, score, état, date, prix, prix au m², distance ou opportunité (le radar du Hub : décote sur la commune, rendement, score, ancienneté). Chaque annonce porte son vendeur (professionnel nommé), sa diffusion multi-agences et ses drapeaux. Un crédit par annonce rendue. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE d'une commune, ou liste de 10 codes au plus (paramètre répété).","anyOf":[{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}]}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal, ou liste de 10 codes au plus.","anyOf":[{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}]}},{"name":"departement","in":"query","required":false,"schema":{"description":"Code de département, ou liste de 8 codes au plus.","anyOf":[{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"},{"minItems":1,"maxItems":8,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}]}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude du point de recherche (avec lon et rayon_km).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude du point de recherche (avec lat et rayon_km).","type":"number","minimum":-180,"maximum":180}},{"name":"rayon_km","in":"query","required":false,"schema":{"description":"Rayon autour du point, en km (50 au plus).","type":"number","exclusiveMinimum":0,"maximum":50}},{"name":"mots_cles","in":"query","required":false,"schema":{"description":"Mots à trouver dans le titre ou la description (4 mots au plus, accents indifférents).","type":"string","minLength":3,"maxLength":100}},{"name":"type","in":"query","required":false,"schema":{"description":"Type de bien : appartement, maison ou immeuble entier.","type":"string","enum":["appartement","maison","immeuble"]}},{"name":"prix_min","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"prix_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"pieces_min","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"pieces_max","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"chambres_min","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"surface_min","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"surface_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"prix_m2_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"rendement_min","in":"query","required":false,"schema":{"description":"Rendement brut minimal, en %.","type":"number","minimum":0,"maximum":100}},{"name":"rendement_net_min","in":"query","required":false,"schema":{"description":"Rendement net minimal, en %.","type":"number","minimum":0,"maximum":100}},{"name":"score_min","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":100}},{"name":"dpe","in":"query","required":false,"schema":{"description":"Étiquettes DPE acceptées (une ou plusieurs).","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["A","B","C","D","E","F","G"]}}]}},{"name":"dpe_max","in":"query","required":false,"schema":{"description":"Étiquette DPE la moins bonne acceptée (D : de A à D).","type":"string","enum":["A","B","C","D","E","F","G"]}},{"name":"passoires","in":"query","required":false,"schema":{"description":"Vrai : les seules passoires thermiques (F et G).","anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"etat_visuel_max","in":"query","required":false,"schema":{"description":"État visuel maximal sur 100 (pour chercher des biens à rénover).","type":"number","minimum":0,"maximum":100}},{"name":"travaux_min","in":"query","required":false,"schema":{"description":"Travaux minimaux, sur le bas de la fourchette, en euros.","type":"number","minimum":0}},{"name":"travaux_max","in":"query","required":false,"schema":{"description":"Travaux maximaux, sur le haut de la fourchette (le pire cas), en euros.","type":"number","minimum":0}},{"name":"travaux_max_m2","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"type_vendeur","in":"query","required":false,"schema":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]}},{"name":"siren","in":"query","required":false,"schema":{"description":"SIREN de l'agence ou du professionnel.","type":"string","pattern":"^\\d{9}$"}},{"name":"enseigne","in":"query","required":false,"schema":{"description":"Nom ou enseigne de l'agence (début du nom).","type":"string","minLength":2,"maxLength":80}},{"name":"exclure_residences_gerees","in":"query","required":false,"schema":{"description":"Vrai : écarte les logements de résidence gérée.","anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"sous_le_marche","in":"query","required":false,"schema":{"description":"Vrai : la règle « sous le marché » de la carte du site (rendement brut d'au moins 7 % et score d'au moins 70).","anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"publie_depuis","in":"query","required":false,"schema":{"description":"Annonces parues depuis cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"tri","in":"query","required":false,"schema":{"description":"rendement (défaut), rendement_net, score, etat (meilleur état d'abord), date (plus récentes), prix, prix_desc, prix_m2, distance (avec lat, lon, rayon_km), opportunite (radar du Hub, sur les 250 annonces les mieux notées de la recherche).","type":"string","enum":["rendement","rendement_net","score","etat","date","prix","prix_desc","prix_m2","opportunite","distance"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}},{"name":"champs","in":"query","required":false,"schema":{"description":"Champs rendus, séparés par des virgules (« prix,surface,analyse.score ») ; tous si absent.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":60,"type":"array","items":{"type":"string","maxLength":300}}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce (à repasser à /annonces/{id}).","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Portail d'origine : lbc, bienici ou seloger.","type":"string"},"type":{"description":"Type de bien : appartement, maison, immeuble.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision_coordonnees":{"description":"Précision de la position : adresse, approchee, centre_commune, ou inconnue tant que le lac ne l'a pas dite.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"description":"Rendement brut en %, recalculé : loyer estimé sur 12 mois divisé par le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total (prix, frais de notaire, travaux).","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 (100 : neuf) ; null sans photos exploitables.","anyOf":[{"type":"number"},{"type":"null"}]},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"description":"Haut de la fourchette rapporté à la surface, en euros par m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["statut","min","max","max_m2"],"additionalProperties":false},"profil":{"description":"Profil de l'annonce selon le moteur d'analyse.","anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel tel que le portail l'affiche ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false},"agences":{"description":"Agences qui proposent le même bien (diffusion multi-agences) ; null si une seule annonce connue.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"residence_geree":{"description":"Vrai si le titre ou la description décrit un logement de résidence gérée (bail commercial).","type":"boolean"},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"distance_km":{"description":"Distance au point de recherche, en km ; null sans point.","anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"opportunite":{"description":"Lecture d'opportunité du radar du Hub, avec tri=opportunite seulement ; null sinon.","anyOf":[{"type":"object","properties":{"note":{"description":"Note composite du radar : décote bornée, rendement borné, score, ancienneté, taille du marché.","type":"number"},"signaux":{"type":"array","items":{"type":"string"}},"ecart_marche_pct":{"description":"Écart du prix au m² au prix médian de la commune pour ce type de bien, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_marche":{"description":"Prix médian au m² de la commune pour ce type de bien.","anyOf":[{"type":"number"},{"type":"null"}]},"fiable":{"description":"Vrai si l'annonce passe les garde-fous du radar (marché assez peuplé, écart et prix plausibles).","type":"boolean"}},"required":["note","signaux","ecart_marche_pct","prix_m2_marche","fiable"],"additionalProperties":false},{"type":"null"}]}},"required":["id"],"additionalProperties":false}},"total":{"description":"Annonces qui répondent, comptées sur la première page jusqu'à 10 000 ; null au-delà ou sur les pages suivantes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"notes":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","total","notes","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"rechercher_annonces"}},"/annonces/recherche-naturelle":{"get":{"operationId":"rechercher_annonces_phrase","summary":"Recherche d'annonces en langage naturel","description":"Une phrase libre (« T3 avec balcon sous 250 000 euros à Nantes ») traduite en filtres de rechercher_annonces, d'abord par le parseur de règles du site, sinon par un modèle de langage, puis exécutée comme rechercher_annonces : 12 annonces au plus, comprises dans le prix. La réponse dit les filtres retenus, ce qui a été ignoré et l'interprétation de la phrase. Les crédits sont rendus si la traduction échoue. Coût : 15 crédits par appel réussi.","parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"La recherche, en une phrase.","type":"string","minLength":3,"maxLength":400}},{"name":"limite","in":"query","required":false,"schema":{"description":"Annonces rendues (12 au plus).","type":"integer","minimum":1,"maximum":12}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"interpretation":{"description":"Ce que la phrase a été comprise vouloir dire.","type":"string"},"parseur":{"description":"local : lue par le parseur de règles du site ; modele : traduite par un modèle de langage.","type":"string","enum":["local","modele"]},"filtres_retenus":{"description":"Les filtres de rechercher_annonces tirés de la phrase, exécutés tels quels.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"ignores":{"description":"Ce que la phrase demandait et que la recherche ne sait pas appliquer.","type":"array","items":{"type":"string"}},"donnees":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce (à repasser à /annonces/{id}).","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Portail d'origine : lbc, bienici ou seloger.","type":"string"},"type":{"description":"Type de bien : appartement, maison, immeuble.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision_coordonnees":{"description":"Précision de la position : adresse, approchee, centre_commune, ou inconnue tant que le lac ne l'a pas dite.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"description":"Rendement brut en %, recalculé : loyer estimé sur 12 mois divisé par le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total (prix, frais de notaire, travaux).","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 (100 : neuf) ; null sans photos exploitables.","anyOf":[{"type":"number"},{"type":"null"}]},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"description":"Haut de la fourchette rapporté à la surface, en euros par m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["statut","min","max","max_m2"],"additionalProperties":false},"profil":{"description":"Profil de l'annonce selon le moteur d'analyse.","anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel tel que le portail l'affiche ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false},"agences":{"description":"Agences qui proposent le même bien (diffusion multi-agences) ; null si une seule annonce connue.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"residence_geree":{"description":"Vrai si le titre ou la description décrit un logement de résidence gérée (bail commercial).","type":"boolean"},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"distance_km":{"description":"Distance au point de recherche, en km ; null sans point.","anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}}},"required":["id","id_portail","lien","source","type","insee","code_postal","commune","lat","lon","precision_coordonnees","prix","surface","pieces","prix_m2","dpe","score","rendement_brut","rendement_net","loyer_estime","etat_visuel","travaux","profil","type_vendeur","annonceur","agences","residence_geree","premiere_parution","distance_km","drapeaux"],"additionalProperties":false}},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"notes":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["interpretation","parseur","filtres_retenus","ignores","donnees","total","notes","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":15,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"recherche_phrase"}},"/annonces/{id}/similaires":{"get":{"operationId":"annonces_similaires","summary":"Biens semblables à une annonce","description":"Annonces actives et analysées proches d'une annonce de référence. Mode memes_criteres (défaut, outil du Hub) : même type, même commune, surface et prix à plus ou moins 20 %, classées par score. Mode proximite (fiche du site) : même code postal, surface et prix à plus ou moins 30 %, élargi à la commune (surface seule) quand il y a moins de quatre candidats, classées par une note qui mêle score, type, code postal, distance et écarts de prix et de surface. Une seule page. Un crédit par annonce rendue ; rien si la référence est absente. Coût : 1 crédit par élément rendu.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["memes_criteres","proximite"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":5,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"reference_id":{"description":"Identifiant Pillr de l'annonce de référence.","type":"string"},"mode":{"type":"string","enum":["memes_criteres","proximite"]},"criteres":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["type","insee","code_postal","surface_min","surface_max","prix_min","prix_max"],"additionalProperties":false},"donnees":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce (à repasser à /annonces/{id}).","type":"string"},"id_portail":{"description":"Identifiant chez le portail (lbc:<n>, bienici:<id>, seloger:<id>), servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Portail d'origine : lbc, bienici ou seloger.","type":"string"},"type":{"description":"Type de bien : appartement, maison, immeuble.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision_coordonnees":{"description":"Précision de la position : adresse, approchee, centre_commune, ou inconnue tant que le lac ne l'a pas dite.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"description":"Score Pillr sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"description":"Rendement brut en %, recalculé : loyer estimé sur 12 mois divisé par le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total (prix, frais de notaire, travaux).","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime":{"description":"Loyer mensuel estimé, en euros ; null quand le moteur s'est replié sur un forfait.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100 (100 : neuf) ; null sans photos exploitables.","anyOf":[{"type":"number"},{"type":"null"}]},"travaux":{"type":"object","properties":{"statut":{"description":"chiffre : travaux chiffrés poste par poste sur les photos ; aucun : aucun travaux vu ; partiel : chiffrés, mais la cuisine ou la salle de bain n'apparaît pas sur les photos ; non_evalue : photos absentes, inexploitables ou de catalogue ; non_analyse : annonce pas encore analysée.","type":"string","enum":["chiffre","aucun","partiel","non_evalue","non_analyse"]},"min":{"description":"Bas de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max":{"description":"Haut de la fourchette des travaux, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"max_m2":{"description":"Haut de la fourchette rapporté à la surface, en euros par m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["statut","min","max","max_m2"],"additionalProperties":false},"profil":{"description":"Profil de l'annonce selon le moteur d'analyse.","anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel tel que le portail l'affiche ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false},"agences":{"description":"Agences qui proposent le même bien (diffusion multi-agences) ; null si une seule annonce connue.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"residence_geree":{"description":"Vrai si le titre ou la description décrit un logement de résidence gérée (bail commercial).","type":"boolean"},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"distance_km":{"description":"Distance au point de recherche, en km ; null sans point.","anyOf":[{"type":"number"},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"similarite":{"description":"Note de similarité du mode proximité ; null en mode mêmes critères.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","id_portail","lien","source","type","insee","code_postal","commune","lat","lon","precision_coordonnees","prix","surface","pieces","prix_m2","dpe","score","rendement_brut","rendement_net","loyer_estime","etat_visuel","travaux","profil","type_vendeur","annonceur","agences","residence_geree","premiere_parution","distance_km","drapeaux","similarite"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["reference_id","mode","criteres","donnees","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonces_similaires"}},"/annonces/{id}/vie":{"get":{"operationId":"vie_annonce","summary":"Vie d'une annonce : prix, diffusion, fatigue vendeur","description":"La vie d'une annonce en un appel : chaque variation de prix datée (doublons et corrections de prix mal lus signalés et écartés des calculs), baisse nette et cumulée, nombre de baisses et de hausses, plus forte baisse, prix en yo-yo, jours sur le marché et depuis la dernière baisse ; diffusion du même bien chez tous ses annonceurs, agences nommées avec leur SIREN quand il se rapproche, prix par agence, écart et agence la moins chère, première parution réelle ; parcours du bien étape par étape (annonceur, portails, début et fin, prix d'entrée et de sortie, mandat exclusif, republications) et date du passage en multi-mandat ; fatigue vendeur et republications. Un particulier n'est jamais nommé. Rien n'est débité si l'annonce est absente. Coût : 2 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"prix":{"type":"object","properties":{"initial":{"anyOf":[{"type":"number"},{"type":"null"}]},"actuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisse_totale_eur":{"description":"Variation nette du prix initial au prix actuel, en euros (négatif : baisse).","anyOf":[{"type":"number"},{"type":"null"}]},"baisse_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses_cumulees_eur":{"description":"Somme des seules baisses, en euros.","type":"number"},"nb_baisses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_hausses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plus_forte_baisse_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"en_yoyo":{"description":"Vrai si le prix revient à des valeurs déjà vues, avec des hausses et des baisses : souvent un prix avec ou sans honoraires.","type":"boolean"},"evenements":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"ancien":{"anyOf":[{"type":"number"},{"type":"null"}]},"nouveau":{"type":"number"},"variation_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"doublon_probable":{"description":"Même mouvement que le précédent, écrit deux fois : écarté des calculs.","type":"boolean"},"aberrant":{"description":"Correction d'un prix mal lu (facteur dix, ou variation hors de toute plausibilité) : écartée des calculs.","type":"boolean"}},"required":["date","ancien","nouveau","variation_eur","variation_pct","source","doublon_probable","aberrant"],"additionalProperties":false}},"suivi_depuis":{"description":"Date de début de la détection des variations de prix.","type":"string"},"publiee_avant_le_suivi":{"description":"Vrai si l'annonce était en ligne avant le début du suivi : son prix a pu bouger avant.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["initial","actuel","baisse_totale_eur","baisse_pct","baisses_cumulees_eur","nb_baisses","nb_hausses","plus_forte_baisse_pct","en_yoyo","evenements","suivi_depuis","publiee_avant_le_suivi","qualite"],"additionalProperties":false},"jours_sur_le_marche":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"jours_depuis_derniere_baisse":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"diffusion":{"description":"Le même bien chez tous ses annonceurs (dédoublonnage du catalogue) ; null si une seule annonce est connue.","anyOf":[{"type":"object","properties":{"nb_annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_particuliers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_credible":{"description":"Faux au-delà de l'écart plausible entre honoraires : erreur de saisie ou deux biens mal rapprochés.","type":"boolean"},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"jours_reels":{"description":"Jours depuis la première parution du bien, toutes annonces confondues.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"agences":{"type":"array","items":{"type":"object","properties":{"particulier":{"type":"boolean"},"nom":{"description":"Nom de l'agence ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN de l'agence, rapproché par son nom dans la commune ; null si aucun rapprochement.","anyOf":[{"type":"string"},{"type":"null"}]},"portails":{"type":"array","items":{"type":"string"}},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"active":{"type":"boolean"},"depuis":{"anyOf":[{"type":"string"},{"type":"null"}]},"vue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"la_moins_chere":{"type":"boolean"}},"required":["particulier","nom","siren","portails","prix","prix_max","active","depuis","vue_le","la_moins_chere"],"additionalProperties":false}},"parcours":{"description":"Le parcours du bien : une étape par annonceur et par période de diffusion continue, dans l'ordre ; vide tant que le parcours n'est pas calculé.","type":"array","items":{"type":"object","properties":{"annonceur":{"type":"string","enum":["agence","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"portails":{"type":"array","items":{"type":"string"}},"debut":{"anyOf":[{"type":"string"},{"type":"null"}]},"debut_avant_suivi":{"description":"Vrai si le début est la date déclarée par le portail, antérieure à notre premier relevé : « depuis au moins ».","type":"boolean"},"fin":{"description":"Dernière vue au balayage ; null si l'annonceur diffuse encore le bien.","anyOf":[{"type":"string"},{"type":"null"}]},"prix_entree":{"description":"Premier prix relevé (pas forcément celui de la mise en ligne si debut_avant_suivi).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_sortie":{"description":"Dernier prix relevé, actuel si l'étape est en cours.","anyOf":[{"type":"number"},{"type":"null"}]},"nb_baisses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_hausses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusif":{"description":"Mandat exclusif lu sur au moins une annonce de l'étape.","type":"boolean"},"exclusif_jusqu_au":{"description":"Dernière date à laquelle le mandat a été lu exclusif, s'il ne l'est plus.","anyOf":[{"type":"string"},{"type":"null"}]},"republications":{"description":"Annonces republiées par le même annonceur sur le même portail dans l'étape.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["annonceur","nom","portails","debut","debut_avant_suivi","fin","prix_entree","prix_sortie","nb_baisses","nb_hausses","exclusif","exclusif_jusqu_au","republications"],"additionalProperties":false}},"multi_mandat_depuis":{"description":"Date à laquelle au moins deux agences nommées proposent le bien en même temps ; null s'il n'est pas en multi-mandat aujourd'hui.","anyOf":[{"type":"string"},{"type":"null"}]},"nb_agences_max":{"description":"Le plus grand nombre d'agences nommées en même temps sur toute l'histoire du bien.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exclusif_en_cours":{"description":"Une agence diffuse aujourd'hui le bien en mandat exclusif.","anyOf":[{"type":"boolean"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["nb_annonces","nb_agences","nb_particuliers","nb_portails","prix_min","prix_max","ecart_prix_eur","ecart_prix_pct","ecart_credible","premiere_parution","jours_reels","agences","parcours","multi_mandat_depuis","nb_agences_max","exclusif_en_cours","maj_le","qualite"],"additionalProperties":false},{"type":"null"}]},"fatigue_vendeur":{"type":"string","enum":["faible","moderee","elevee","inconnue"]},"republications":{"description":"Republications de l'annonce relevées par le balayage.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"methode":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","prix","jours_sur_le_marche","jours_depuis_derniere_baisse","diffusion","fatigue_vendeur","republications","methode","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"vie_annonce"}},"/biens/{bien_uid}":{"get":{"operationId":"bien","summary":"Bien dédoublonné et toutes ses annonces","description":"Le bien unique derrière ses annonces, tous portails et toutes périodes confondus, par son identifiant ou par celui d'une de ses annonces : toutes les annonces rattachées, actives et retirées, avec leur vendeur (professionnel nommé) ; verdict et méthode du rattachement, servis tels quels, indécis compris ; clés d'identité et empreintes des photos ; agrégat (statut, agences, portails, republications, prix minimal, maximal et dernier) ; journal de certification des doublons. Rien n'est débité si le bien est inconnu. Coût : 3 crédits par appel réussi.","parameters":[{"name":"bien_uid","in":"path","required":true,"schema":{"description":"Identifiant Pillr du bien dédoublonné (bien_uid).","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"bien_uid":{"type":"string"},"verdict":{"description":"Verdict du dédoublonnage pour l'annonce qui ancre le bien : rattachee, nouvelle ou indecise (servi tel quel).","anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"description":"Méthode du rattachement de l'annonce qui ancre le bien ; chaque annonce porte la sienne.","anyOf":[{"type":"string"},{"type":"null"}]},"ancre_id":{"description":"Annonce du lac qui ancre le bien.","anyOf":[{"type":"string"},{"type":"null"}]},"decide_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonces":{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"actif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"vue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retiree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel tel que le portail l'affiche ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false}},"required":["id_lac","id_portail","lien","source","prix","actif","parue_le","vue_le","retiree_le","verdict","methode","type_vendeur","annonceur"],"additionalProperties":false}},"cles":{"description":"Clés d'identité des annonces (code postal, typologie, prix, empreinte de description) ; null si la vue des clés n'est pas encore publiée.","anyOf":[{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"cp":{"anyOf":[{"type":"string"},{"type":"null"}]},"tn":{"anyOf":[{"type":"string"},{"type":"null"}]},"pn":{"anyOf":[{"type":"string"},{"type":"null"}]},"dh":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","cp","tn","pn","dh"],"additionalProperties":false}},{"type":"null"}]},"empreintes_photo":{"description":"Empreintes perceptuelles des photos ; null si la lecture a échoué.","anyOf":[{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"phash":{"anyOf":[{"type":"string"},{"type":"null"}]},"photo":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","rang","phash","photo"],"additionalProperties":false}},{"type":"null"}]},"agregat":{"type":"object","properties":{"statut":{"type":"string","enum":["en_vente","retire"]},"nb_annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_republications":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"dernier_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["statut","nb_annonces","nb_agences","nb_portails","nb_republications","prix_min","prix_max","dernier_prix","ecart_prix_pct","premiere_parution"],"additionalProperties":false},"certifications":{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"regle":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict_avant":{"anyOf":[{"type":"string"},{"type":"null"}]},"applique_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","regle","verdict_avant","applique_le","annule_le"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["bien_uid","verdict","methode","ancre_id","decide_le","annonces","cles","empreintes_photo","agregat","certifications","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"bien"}},"/annonces/{id}/bien":{"get":{"operationId":"bien_2","summary":"Bien dédoublonné et toutes ses annonces","description":"Le bien unique derrière ses annonces, tous portails et toutes périodes confondus, par son identifiant ou par celui d'une de ses annonces : toutes les annonces rattachées, actives et retirées, avec leur vendeur (professionnel nommé) ; verdict et méthode du rattachement, servis tels quels, indécis compris ; clés d'identité et empreintes des photos ; agrégat (statut, agences, portails, republications, prix minimal, maximal et dernier) ; journal de certification des doublons. Rien n'est débité si le bien est inconnu. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"bien_uid":{"type":"string"},"verdict":{"description":"Verdict du dédoublonnage pour l'annonce qui ancre le bien : rattachee, nouvelle ou indecise (servi tel quel).","anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"description":"Méthode du rattachement de l'annonce qui ancre le bien ; chaque annonce porte la sienne.","anyOf":[{"type":"string"},{"type":"null"}]},"ancre_id":{"description":"Annonce du lac qui ancre le bien.","anyOf":[{"type":"string"},{"type":"null"}]},"decide_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonces":{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"actif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"vue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retiree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict":{"anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel tel que le portail l'affiche ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false}},"required":["id_lac","id_portail","lien","source","prix","actif","parue_le","vue_le","retiree_le","verdict","methode","type_vendeur","annonceur"],"additionalProperties":false}},"cles":{"description":"Clés d'identité des annonces (code postal, typologie, prix, empreinte de description) ; null si la vue des clés n'est pas encore publiée.","anyOf":[{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"cp":{"anyOf":[{"type":"string"},{"type":"null"}]},"tn":{"anyOf":[{"type":"string"},{"type":"null"}]},"pn":{"anyOf":[{"type":"string"},{"type":"null"}]},"dh":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","cp","tn","pn","dh"],"additionalProperties":false}},{"type":"null"}]},"empreintes_photo":{"description":"Empreintes perceptuelles des photos ; null si la lecture a échoué.","anyOf":[{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"phash":{"anyOf":[{"type":"string"},{"type":"null"}]},"photo":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","rang","phash","photo"],"additionalProperties":false}},{"type":"null"}]},"agregat":{"type":"object","properties":{"statut":{"type":"string","enum":["en_vente","retire"]},"nb_annonces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_portails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_republications":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"dernier_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["statut","nb_annonces","nb_agences","nb_portails","nb_republications","prix_min","prix_max","dernier_prix","ecart_prix_pct","premiere_parution"],"additionalProperties":false},"certifications":{"type":"array","items":{"type":"object","properties":{"id_lac":{"type":"string"},"regle":{"anyOf":[{"type":"string"},{"type":"null"}]},"verdict_avant":{"anyOf":[{"type":"string"},{"type":"null"}]},"applique_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_lac","regle","verdict_avant","applique_le","annule_le"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["bien_uid","verdict","methode","ancre_id","decide_le","annonces","cles","empreintes_photo","agregat","certifications","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"bien"}},"/annonces/archives":{"get":{"operationId":"annonces_archives","summary":"Pige complète : annonces actives et retirées du lac","description":"Toutes les annonces collectées par Pillr, actives et retirées, analysées ou non, avec les champs du portail et la vie de l'annonce (jours en ligne, baisses, republications, retrait) : par commune, code postal, département, point et rayon, ou SIREN d'agence, filtrées par type, prix, surface, dates de parution et de retrait, statut, portail, type de vendeur et baisse de prix. Le fonds pige et le fonds scraper_lbc servent les archives figées de l'ancienne pige et de l'ancien balayage Leboncoin, sans code INSEE, date de retrait ni statut actuel (un filtre qu'un fonds ne connaît pas est refusé sans débit).Un vendeur professionnel est servi en entier ; un particulier jamais par son nom ni ses coordonnées. Lecture lourde : servie depuis la mémoire seulement entre 20h30 et minuit. Un crédit par annonce rendue. Coût : 1 crédit par élément rendu.","parameters":[{"name":"fonds","in":"query","required":false,"schema":{"description":"lac (défaut) : toutes les annonces balayées par Pillr ; pige et scraper_lbc : archives figées de l'ancienne pige et de l'ancien balayage Leboncoin.","type":"string","enum":["lac","pige","scraper_lbc"]}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE d'une commune, ou liste de 10 codes au plus (paramètre répété).","anyOf":[{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}]}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal, ou liste de 10 codes au plus.","anyOf":[{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}]}},{"name":"departement","in":"query","required":false,"schema":{"description":"Code de département, ou liste de 8 codes au plus.","anyOf":[{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"},{"minItems":1,"maxItems":8,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}]}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude du point de recherche (avec lon et rayon_km).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude du point de recherche (avec lat et rayon_km).","type":"number","minimum":-180,"maximum":180}},{"name":"rayon_km","in":"query","required":false,"schema":{"description":"Rayon autour du point, en km (50 au plus).","type":"number","exclusiveMinimum":0,"maximum":50}},{"name":"siren","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{9}$"}},{"name":"type","in":"query","required":false,"schema":{"description":"Type de bien : appartement, maison ou immeuble entier.","type":"string","enum":["appartement","maison","immeuble"]}},{"name":"prix_min","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"prix_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"surface_min","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"surface_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"publie_apres","in":"query","required":false,"schema":{"description":"Parues à partir de cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"publie_avant","in":"query","required":false,"schema":{"description":"Parues avant cette date.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"retire_apres","in":"query","required":false,"schema":{"description":"Retirées à partir de cette date.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"retire_avant","in":"query","required":false,"schema":{"description":"Retirées avant cette date.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"statut","in":"query","required":false,"schema":{"description":"toutes par défaut.","type":"string","enum":["active","retiree","toutes"]}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["lbc","bienici","seloger","zefir"]}},{"name":"type_vendeur","in":"query","required":false,"schema":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]}},{"name":"avec_baisse","in":"query","required":false,"schema":{"description":"Vrai : seulement les annonces dont le prix a baissé.","anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"tri","in":"query","required":false,"schema":{"description":"date (défaut, plus récentes d'abord), prix, prix_desc.","type":"string","enum":["date","prix","prix_desc"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}},{"name":"champs","in":"query","required":false,"schema":{"description":"Champs rendus, séparés par des virgules (« prix,surface,analyse.score ») ; tous si absent.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":60,"type":"array","items":{"type":"string","maxLength":300}}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce dans son fonds (lac : identifiant du lac ; archives : identifiant chez le portail).","type":"string"},"fonds":{"type":"string","enum":["lac","pige","scraper_lbc"]},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"neuf_ancien":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"sejour_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"chambres":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_de_bain":{"anyOf":[{"type":"number"},{"type":"null"}]},"salles_d_eau":{"anyOf":[{"type":"number"},{"type":"null"}]},"etage":{"anyOf":[{"type":"number"},{"type":"null"}]},"nb_etages":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe_valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges":{"anyOf":[{"type":"string"},{"type":"null"}]},"ges_valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"equipements":{"type":"object","properties":{"ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"balcon":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"terrasse":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"jardin":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cave":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"piscine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"parking":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"garage":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"meuble":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"cuisine_equipee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage_mode":{"anyOf":[{"type":"string"},{"type":"null"}]},"orientation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["ascenseur","balcon","terrasse","jardin","cave","piscine","parking","garage","meuble","cuisine_equipee","chauffage","chauffage_mode","orientation"],"additionalProperties":false},"charges_annuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxe_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_hors_honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires":{"anyOf":[{"type":"number"},{"type":"null"}]},"honoraires_a_charge":{"anyOf":[{"type":"string"},{"type":"null"}]},"frais_notaire_estimes":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_energie_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_energie_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots_copro":{"anyOf":[{"type":"number"},{"type":"null"}]},"en_copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est servi en entier (nom, enseigne, SIREN, mandat, coordonnées professionnelles), un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat":{"description":"Type de mandat publié (simple, exclusif) ; null si inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"telephone":{"description":"Téléphone professionnel publié par le portail ; jamais celui d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique professionnelle publiée par le portail ; jamais celle d'un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren","mandat","telephone","email"],"additionalProperties":false},"photos":{"type":"array","items":{"type":"string"}},"vignette":{"anyOf":[{"type":"string"},{"type":"null"}]},"visite_virtuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"premiere_parution_estimee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"vue_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"retiree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"jours_en_ligne":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_baisses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"baisse_totale_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"nb_republications":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bien_uid":{"anyOf":[{"type":"string"},{"type":"null"}]},"etat":{"description":"État du bien déclaré par le portail.","anyOf":[{"type":"string"},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}}},"required":["id","fonds"],"additionalProperties":false}},"notes":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","notes","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonces_archives"}},"/annonces/carte":{"get":{"operationId":"annonces_carte","summary":"Annonces dans une emprise de carte","description":"Les points des annonces actives et analysées dans une emprise de carte (sud, ouest, nord, est ; 3 degrés de côté au plus), filtrables par communes, départements, mots-clés, type, type de vendeur, DPE, travaux et règle « sous le marché » (rendement brut d'au moins 7 % et score d'au moins 70, comme la carte du site). Chaque point porte sa position et sa précision, son prix, sa surface, son score, son rendement et son identifiant. Les mieux notés d'abord, 1 000 points par page au plus. Coût : 1 crédit par tranche de 10 lignes rendues.","parameters":[{"name":"bbox","in":"query","required":true,"schema":{"description":"Emprise de la carte : sud,ouest,nord,est en degrés décimaux (3 degrés de côté au plus).","type":"string","maxLength":120,"pattern":"^ ?-?\\d{1,3}(?:\\.\\d{1,12})? ?, ?-?\\d{1,3}(?:\\.\\d{1,12})? ?, ?-?\\d{1,3}(?:\\.\\d{1,12})? ?, ?-?\\d{1,3}(?:\\.\\d{1,12})? ?$"}},{"name":"insee","in":"query","required":false,"schema":{"anyOf":[{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}]}},{"name":"departement","in":"query","required":false,"schema":{"anyOf":[{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"},{"minItems":1,"maxItems":8,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}]}},{"name":"cp","in":"query","required":false,"schema":{"anyOf":[{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}]}},{"name":"mots_cles","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":100}},{"name":"type","in":"query","required":false,"schema":{"description":"Type de bien : appartement, maison ou immeuble entier.","type":"string","enum":["appartement","maison","immeuble"]}},{"name":"type_vendeur","in":"query","required":false,"schema":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]}},{"name":"dpe","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["A","B","C","D","E","F","G"]}}]}},{"name":"travaux_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"sous_le_marche","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (1000 au plus).","default":500,"type":"integer","minimum":1,"maximum":1000}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"precision_coordonnees":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"type":{"type":"string"}},"required":["id","lat","lon","precision_coordonnees","prix","surface","prix_m2","score","rendement_brut","dpe","type"],"additionalProperties":false}},"total":{"description":"Points de l'emprise qui répondent, comptés sur la première page jusqu'à 10 000 ; null au-delà ou sur les pages suivantes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tronque":{"description":"Vrai s'il reste des points après cette page (curseur_suivant).","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["points","total","tronque","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"tranche","x-pillr-tranche":10,"x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonces_carte"}},"/annonces/{id}/analyse-detaillee":{"get":{"operationId":"analyse_detaillee","summary":"Lecture photo par photo et rapport complet","description":"Ce que le moteur d'analyse de Pillr a produit sur une annonce analysée, en deux volets. Volet photos : chaque photo lue (pièce, état sur 100, défauts, observations, travaux déduits, exploitable ou motif du rejet), travaux groupés par poste et chiffrés par le barème déterministe avec leurs photos sources, postes écartés et leur motif, défauts par gravité, pièces vues et manquantes, plancher énergétique, score de qualité de l'annonce. Volet rapport, celui de la page d'analyse : plan financier avec crédit, notation sur six axes, anomalies du moteur de règles, analyse rédigée (forces, points d'attention, verdict, confiance) et photo du marché communal. Avec des photos de catalogue, l'état visuel n'est pas servi et la lecture le dit. Rien n'est débité si l'annonce est absente ou pas encore analysée. Coût : 5 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"volets","in":"query","required":false,"schema":{"description":"Volets à servir, séparés par une virgule : photos, rapport ou photos,rapport (défaut : les deux).","type":"string","pattern":"^(?:photos|rapport)(?:,(?:photos|rapport))?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"id_portail":{"description":"Identifiant chez le portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur : pro (professionnel nommé), particulier, ou inconnu quand le portail ne le dit pas. Une annonce qui n'est pas celle d'un professionnel perd les téléphones et les emails de ses textes.","type":"string","enum":["pro","particulier","inconnu"]},"volets":{"description":"Les volets servis.","type":"array","items":{"type":"string","enum":["photos","rapport"]}},"moteur":{"description":"Le moteur d'analyse de Pillr qui a produit ces valeurs.","type":"object","properties":{"modele":{"description":"Modèle qui a produit l'analyse, tel que le moteur l'a noté.","anyOf":[{"type":"string"},{"type":"null"}]},"version":{"description":"Version du moteur d'analyse.","anyOf":[{"type":"number"},{"type":"null"}]},"analyse_le":{"description":"Date de l'analyse (ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["modele","version","analyse_le"],"additionalProperties":false},"photos":{"description":"Volet photos ; null s'il n'est pas demandé ou si l'annonce n'a pas de lecture des photos.","anyOf":[{"description":"La lecture des photos par le moteur de vision de Pillr et les travaux qu'il en déduit.","type":"object","properties":{"photos_total":{"type":"integer","minimum":0,"maximum":9007199254740991},"photos_exploitables":{"type":"integer","minimum":0,"maximum":9007199254740991},"qualite_annonce":{"description":"Part des photos exploitables, en % : le score de qualité de l'annonce.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_moyen":{"description":"État visuel moyen des pièces vues, sur 100 ; null sans photo exploitable.","anyOf":[{"type":"number"},{"type":"null"}]},"pieces_vues":{"type":"array","items":{"type":"string"}},"pieces_manquantes":{"description":"Pièces clés absentes des photos (cuisine, salle de bain, salon, façade).","type":"array","items":{"type":"string"}},"defauts":{"type":"object","properties":{"mineur":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"moyen":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"majeur":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mineur","moyen","majeur"],"additionalProperties":false},"travaux_groupes":{"description":"Travaux groupés par poste, chiffrés par le barème déterministe à partir de l'intensité décrite et de la surface.","type":"array","items":{"type":"object","properties":{"poste":{"type":"string"},"intensite":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"cout_min":{"type":"number"},"cout_max":{"type":"number"},"priorite":{"anyOf":[{"type":"string"},{"type":"null"}]},"justifications":{"type":"array","items":{"type":"string"}},"photos":{"description":"Rangs des photos qui fondent ce poste.","type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["poste","intensite","libelle","cout_min","cout_max","priorite","justifications","photos"],"additionalProperties":false}},"travaux_ecartes":{"description":"Travaux proposés par la vision et écartés faute de preuve sur la photo, avec leur motif.","type":"array","items":{"type":"object","properties":{"poste":{"type":"string"},"motif":{"type":"string"},"photo":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["poste","motif","photo"],"additionalProperties":false}},"travaux":{"description":"Total des travaux du barème, avant imprévus : plancher énergétique et rénovation complète compris.","type":"object","properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["min","max","qualite"],"additionalProperties":false},"plancher_energie":{"description":"Ligne énergie déduite d'un DPE E, F ou G quand elle relève le total ; null sinon.","anyOf":[{"type":"object","properties":{"classe":{"type":"string"},"cout_min":{"type":"number"},"cout_max":{"type":"number"}},"required":["classe","cout_min","cout_max"],"additionalProperties":false},{"type":"null"}]},"par_photo":{"type":"array","items":{"type":"object","properties":{"index":{"description":"Rang de la photo dans la liste lue (0 pour la première).","type":"integer","minimum":0,"maximum":9007199254740991},"piece":{"description":"Pièce reconnue (cuisine, salon, salle_de_bain, facade_exterieur, plan_2d, indetermine...).","type":"string"},"etat":{"description":"État visuel de la pièce sur 100 (60 correct, 80 bon, 95 neuf) ; null si la photo est inexploitable.","anyOf":[{"type":"number"},{"type":"null"}]},"exploitable":{"type":"boolean"},"motif":{"description":"Pourquoi la photo est inexploitable ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"observations":{"type":"array","items":{"type":"string"}},"defauts":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"gravite":{"type":"string","enum":["mineur","moyen","majeur"]},"poste":{"description":"Poste de travaux auquel le défaut se rattache.","type":"string"}},"required":["libelle","gravite","poste"],"additionalProperties":false}},"travaux":{"type":"array","items":{"type":"object","properties":{"poste":{"type":"string"},"intensite":{"description":"leger, moyen ou lourd : l'intervention décrite, qui pilote le barème.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"justification":{"description":"Ce que le modèle de vision voit sur la photo.","anyOf":[{"type":"string"},{"type":"null"}]},"priorite":{"description":"urgent, recommande ou optionnel.","anyOf":[{"type":"string"},{"type":"null"}]},"cout_min_indicatif":{"description":"Montant proposé par le modèle de vision pour cette photo, non retenu : le chiffrage servi est celui des travaux groupés, calculé par le barème.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_max_indicatif":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["poste","intensite","libelle","justification","priorite","cout_min_indicatif","cout_max_indicatif"],"additionalProperties":false}}},"required":["index","piece","etat","exploitable","motif","observations","defauts","travaux"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["photos_total","photos_exploitables","qualite_annonce","etat_moyen","pieces_vues","pieces_manquantes","defauts","travaux_groupes","travaux_ecartes","travaux","plancher_energie","par_photo","qualite"],"additionalProperties":false},{"type":"null"}]},"rapport":{"description":"Volet rapport ; null s'il n'est pas demandé ou si aucun rapport n'existe pour le lien de l'annonce.","anyOf":[{"description":"Le rapport de la page d'analyse de Pillr.","type":"object","properties":{"bien":{"description":"Le bien tel que l'analyse l'a lu.","type":"object","properties":{"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"localisation":{"description":"Commune et code postal, tels que l'analyse les a lus.","anyOf":[{"type":"string"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","type","prix","surface","pieces","localisation","dpe","annee_construction","terrain_m2","premiere_parution","description","lien"],"additionalProperties":false},"financier":{"description":"Le plan financier de la page d'analyse, avec le crédit qu'il suppose.","type":"object","properties":{"prix_achat":{"anyOf":[{"type":"number"},{"type":"null"}]},"investissement_total":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_annuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_mensuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"charges_annuelles":{"anyOf":[{"type":"number"},{"type":"null"}]},"cash_flow_annuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"cap_rate_pct":{"description":"Loyer annuel rapporté au prix, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"roi_pct":{"description":"Cash-flow annuel rapporté à l'apport, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"mensualite":{"anyOf":[{"type":"number"},{"type":"null"}]},"montant_emprunte":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_annees":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_interet_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_achat","investissement_total","loyer_mensuel","loyer_annuel","charges_mensuelles","charges_annuelles","cash_flow_annuel","cap_rate_pct","roi_pct","mensualite","montant_emprunte","duree_annees","taux_interet_pct","qualite"],"additionalProperties":false},"notation":{"description":"La notation sur six axes de la page d'analyse, sur 100.","type":"object","properties":{"globale":{"anyOf":[{"type":"number"},{"type":"null"}]},"financiere":{"anyOf":[{"type":"number"},{"type":"null"}]},"localisation":{"anyOf":[{"type":"number"},{"type":"null"}]},"bien":{"anyOf":[{"type":"number"},{"type":"null"}]},"marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"risque":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["globale","financiere","localisation","bien","marche","risque"],"additionalProperties":false},"scores_modele":{"description":"Les sous-scores du modèle sur 100 (etat, marche, rentabilite, potentiel, localisation, transport, fiscalite, risques, qualite_annonce) ; null pour un rapport antérieur.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},{"type":"null"}]},"note":{"type":"object","properties":{"lettre":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lettre","libelle"],"additionalProperties":false},"anomalies":{"description":"Anomalies relevées par le moteur de règles, annonce contre marché.","type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"severite":{"type":"string"},"message":{"type":"string"}},"required":["type","severite","message"],"additionalProperties":false}},"analyse":{"description":"L'analyse rédigée par le modèle, telle que la page d'analyse la montre.","type":"object","properties":{"verdict":{"description":"ACHAT_RECOMMANDE, ACHAT_SOUS_CONDITIONS ou ACHAT_DECONSEILLE.","anyOf":[{"type":"string"},{"type":"null"}]},"resume":{"anyOf":[{"type":"string"},{"type":"null"}]},"synthese":{"anyOf":[{"type":"string"},{"type":"null"}]},"forces":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"impact_eur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["titre","detail","impact_eur"],"additionalProperties":false}},"faiblesses":{"description":"Tous les points d'attention du modèle.","type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"gravite":{"description":"FAIBLE, MOYEN, ELEVE ou CRITIQUE, tel que le modèle l'a noté.","anyOf":[{"type":"string"},{"type":"null"}]},"impact_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"solution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","detail","gravite","impact_eur","solution"],"additionalProperties":false}},"risques":{"description":"Les points d'attention de gravité ELEVE ou CRITIQUE.","type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"gravite":{"description":"FAIBLE, MOYEN, ELEVE ou CRITIQUE, tel que le modèle l'a noté.","anyOf":[{"type":"string"},{"type":"null"}]},"impact_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"solution":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","detail","gravite","impact_eur","solution"],"additionalProperties":false}},"opportunites":{"description":"Les travaux d'amélioration proposés par le modèle, avec leur valorisation.","type":"array","items":{"type":"object","properties":{"poste":{"type":"string"},"cout_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"cout_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"valorisation_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"justification":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["poste","cout_min","cout_max","valorisation_pct","justification"],"additionalProperties":false}},"conditions":{"type":"array","items":{"type":"string"}},"plan_action":{"type":"array","items":{"type":"string"}},"analyse_photo":{"anyOf":[{"type":"string"},{"type":"null"}]},"recommandation":{"description":"La recommandation rédigée de la page d'analyse.","anyOf":[{"type":"string"},{"type":"null"}]},"confiance":{"type":"object","properties":{"niveau":{"description":"high, medium ou low, déclaré par le modèle.","anyOf":[{"type":"string"},{"type":"null"}]},"facteurs":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}}},"required":["niveau","facteurs","limites"],"additionalProperties":false},"sources":{"description":"Sources que le modèle déclare avoir utilisées.","type":"array","items":{"type":"string"}}},"required":["verdict","resume","synthese","forces","faiblesses","risques","opportunites","conditions","plan_action","analyse_photo","recommandation","confiance","sources"],"additionalProperties":false},"marche":{"description":"La photo du marché communal utilisée par l'analyse : les indicateurs de la commune au jour de l'analyse.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"},{"type":"null"}]}},{"type":"null"}]},"genere_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["bien","financier","notation","scores_modele","note","anomalies","analyse","marche","genere_le","qualite"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","type_vendeur","volets","moteur","photos","rapport","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"analyses_photo","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"analyse_detaillee"}},"/annonces/{id}/ecart-marche":{"get":{"operationId":"ecart_marche","summary":"Écart au marché, anomalies et ventes du rayon","description":"Écart du prix au m² d'une annonce analysée au prix de référence Pillr de sa commune (le chiffre de la fiche, calculé par le même module canonique), avec le signal du modèle prédictif, les anomalies annonce contre marché du moteur de règles, les données de l'analyse (travaux, rendements, loyer, score, profil), les cibles et leviers de négociation, et toutes les ventes DVF du rayon une par une, reconstituées à la mutation entière, avec leurs agrégats par type et par année. Aucun seuil ne masque : chaque agrégat porte son nombre de ventes, chaque vente atypique son drapeau. Rien n'est débité si l'annonce est absente. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"rayon_m","in":"query","required":false,"schema":{"description":"Rayon des ventes DVF autour de l'annonce, en mètres, de 50 à 1 000 (défaut 300).","type":"integer","minimum":50,"maximum":1000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur : pro (professionnel nommé), particulier, ou inconnu quand le portail ne le dit pas. Une annonce qui n'est pas celle d'un professionnel perd les téléphones et les emails de ses textes.","type":"string","enum":["pro","particulier","inconnu"]},"prix_m2_annonce":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_marche":{"description":"Prix de référence Pillr de la commune pour ce type de bien : le chiffre de la fiche.","anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart du prix au m² de l'annonce au prix de référence, en % (positif : plus cher). null quand la référence n'est pas mesurée sur des ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"verdict":{"type":"string","enum":["tres_sous_cote","sous_cote","au_marche","sur_cote","tres_sur_cote","inconnu"]},"signal_ml":{"description":"Signal du modèle prédictif départemental (un signal, jamais la valeur du marché).","anyOf":[{"type":"string"},{"type":"null"}]},"reference":{"type":"object","properties":{"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"provenance":{"description":"dvf : médiane de ventes notariées ; estimation : modèle Pillr, faute de ventes locales du type.","anyOf":[{"type":"string","enum":["dvf","estimation"]},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["commune","code_insee","code_postal","provenance","qualite"],"additionalProperties":false},"anomalies":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"severite":{"type":"string"},"message":{"type":"string"}},"required":["type","severite","message"],"additionalProperties":false}},"donnees_annonce":{"type":"object","properties":{"travaux_statut":{"anyOf":[{"type":"string"},{"type":"null"}]},"travaux_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"travaux_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["travaux_statut","travaux_min","travaux_max","rendement_brut","rendement_net","loyer","loyer_source","score","profil"],"additionalProperties":false},"negociation":{"type":"object","properties":{"cible_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"cible_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"leviers":{"type":"array","items":{"type":"string"}}},"required":["cible_min","cible_max","leviers"],"additionalProperties":false},"ventes_rayon":{"type":"object","properties":{"rayon_m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n":{"description":"Ventes typiques du type de l'annonce dans le rayon, toutes années.","type":"integer","minimum":0,"maximum":9007199254740991},"mediane_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"q1":{"anyOf":[{"type":"number"},{"type":"null"}]},"q3":{"anyOf":[{"type":"number"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesimes":{"anyOf":[{"type":"string"},{"type":"null"}]},"agregats":{"type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string","enum":["appartement","maison"]},"periode":{"type":"string"},"nb_ventes":{"type":"integer","minimum":0,"maximum":9007199254740991},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_q1":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_q3":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_mediane_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"derniere_vente_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_prix_atypiques":{"description":"Ventes du groupe écartées de l'agrégat pour prix atypique (listées une par une).","type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type_bien","periode","nb_ventes","prix_m2_median","prix_m2_q1","prix_m2_q3","prix_m2_min","prix_m2_max","surface_mediane_m2","derniere_vente_le","nb_prix_atypiques"],"additionalProperties":false}},"par_annee":{"type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string","enum":["appartement","maison"]},"periode":{"type":"string"},"nb_ventes":{"type":"integer","minimum":0,"maximum":9007199254740991},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_q1":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_q3":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_mediane_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"derniere_vente_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_prix_atypiques":{"description":"Ventes du groupe écartées de l'agrégat pour prix atypique (listées une par une).","type":"integer","minimum":0,"maximum":9007199254740991}},"required":["type_bien","periode","nb_ventes","prix_m2_median","prix_m2_q1","prix_m2_q3","prix_m2_min","prix_m2_max","surface_mediane_m2","derniere_vente_le","nb_prix_atypiques"],"additionalProperties":false}},"ventes":{"description":"Toutes les ventes du rayon, une par une, les plus proches d'abord, chacune avec son drapeau prix_atypique.","type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"adresse":{"description":"Numéro et voie tels que DVF les écrit ; null sans numéro.","anyOf":[{"type":"string"},{"type":"null"}]},"type_bien":{"type":"string","enum":["appartement","maison"]},"surface_m2":{"type":"number"},"prix":{"description":"Valeur foncière de la mutation entière.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"type":"number"},"distance_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"id_mutation":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_atypique":{"type":"boolean"},"motif_atypique":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","adresse","type_bien","surface_m2","prix","prix_m2","distance_m","id_mutation","prix_atypique","motif_atypique"],"additionalProperties":false}},"note":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["rayon_m","n","mediane_m2","q1","q3","min","max","millesimes","agregats","par_annee","ventes","note","qualite"],"additionalProperties":false},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","type_vendeur","prix_m2_annonce","prix_m2_marche","ecart_pct","verdict","signal_ml","reference","anomalies","donnees_annonce","negociation","ventes_rayon","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ecart_marche"}},"/annonces/{id}/negociation":{"post":{"operationId":"negociation","summary":"Recommandation de négociation et lettre d'offre","description":"Recommandation de négociation et lettre de proposition d'achat pour une annonce analysée : prix proposé (le vôtre, ou le prix demandé moins les travaux estimés et une marge de négociation, borné, comme sur la fiche), cibles et leviers relevés par l'analyse, vie de l'annonce (jours en ligne, baisses de prix), écart au prix de référence de la commune, puis arguments et lettre rédigés par l'IA à partir de ce seul contexte, au ton et au destinataire choisis. Un appel à un modèle Gemini par appel. Rien n'est débité si l'annonce est absente ou si l'IA ne rend rien d'exploitable. Coût : 20 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prix_propose":{"description":"Votre prix proposé, en euros ; à défaut, le prix recommandé est calculé.","type":"integer","minimum":1000,"maximum":50000000},"ton":{"description":"Ton de la lettre (défaut : neutre).","type":"string","enum":["cordial","neutre","ferme"]},"destinataire":{"description":"À qui la lettre s'adresse : l'agence ou le vendeur.","type":"string","enum":["agence","vendeur"]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur : pro (professionnel nommé), particulier, ou inconnu quand le portail ne le dit pas. Une annonce qui n'est pas celle d'un professionnel perd les téléphones et les emails de ses textes.","type":"string","enum":["pro","particulier","inconnu"]},"prix_demande":{"type":"number"},"recommandation":{"type":"object","properties":{"prix_propose":{"type":"number"},"remise":{"type":"number"},"remise_pct":{"type":"number"},"origine":{"description":"calcul : prix demandé moins les travaux et une marge, borné ; client : le prix proposé par l'appelant.","type":"string","enum":["calcul","client"]},"methode":{"type":"string"}},"required":["prix_propose","remise","remise_pct","origine","methode"],"additionalProperties":false},"cible":{"type":"object","properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["min","max","qualite"],"additionalProperties":false},"leviers":{"description":"Leviers de négociation relevés par l'analyse de l'annonce.","type":"array","items":{"type":"string"}},"arguments":{"description":"Arguments rédigés par l'IA, tirés du seul contexte servi.","type":"array","items":{"type":"string"}},"lettre":{"description":"Lettre de proposition d'achat, à compléter du nom et de la date.","type":"string"},"vie":{"type":"object","properties":{"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"jours_en_ligne":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses":{"type":"integer","minimum":0,"maximum":9007199254740991},"baisse_cumulee_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"dernier_changement_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["premiere_parution","jours_en_ligne","baisses","baisse_cumulee_pct","dernier_changement_le"],"additionalProperties":false},"ecart_marche":{"type":"object","properties":{"prix_m2_annonce":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix_m2_annonce","prix_m2_marche","ecart_pct"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"moteur":{"type":"object","properties":{"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"genere_le":{"type":"string"}},"required":["modele","genere_le"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","type_vendeur","prix_demande","recommandation","cible","leviers","arguments","lettre","vie","ecart_marche","sources","moteur","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"negociation"}},"/annonces/{id}/division":{"get":{"operationId":"division_annonce","summary":"Potentiel de division d'un bien","description":"Potentiel de division d'une annonce analysée, par la règle du Hub : la parcelle cadastrale du point de l'annonce (contenance, section, numéro, lue en direct à l'API Carto de l'IGN) croisée avec la surface habitable, le terrain déclaré, le prix au m² face au prix de référence de la commune et la demande locative. Rend un verdict (faible, modéré ou élevé) et ses signaux. Le point d'une annonce est souvent approché : la parcelle est celle du point servi, avec sa précision. Rien n'est débité si l'annonce est absente. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"id_portail":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur : pro (professionnel nommé), particulier, ou inconnu quand le portail ne le dit pas. Une annonce qui n'est pas celle d'un professionnel perd les téléphones et les emails de ses textes.","type":"string","enum":["pro","particulier","inconnu"]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_bien_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"terrain_annonce_m2":{"description":"Terrain déclaré par le portail.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bien":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_m2_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_demande":{"description":"Score de demande locative de la commune, sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"point":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision":{"description":"adresse, approchee, centre de la commune ou inconnue : la précision du point donné par le portail.","type":"string"}},"required":["lat","lon","precision"],"additionalProperties":false},"parcelle":{"description":"Parcelle cadastrale qui contient le point de l'annonce (API Carto de l'IGN) ; null sans point ou sans réponse.","anyOf":[{"type":"object","properties":{"contenance_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["contenance_m2","section","numero","commune"],"additionalProperties":false},{"type":"null"}]},"potentiel_decoupe":{"type":"string","enum":["faible","modere","eleve"]},"signaux":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","type_vendeur","commune","surface_bien_m2","pieces","terrain_annonce_m2","prix_m2_bien","prix_m2_marche","ecart_prix_m2_pct","score_demande","point","parcelle","potentiel_decoupe","signaux","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"division"}},"/annonces/{id}/adresse":{"get":{"operationId":"adresse_annonce","summary":"Adresse retrouvée d'une annonce","description":"Adresse retrouvée d'une annonce floutée, de trois façons, chacune avec sa qualité : l'adresse résolue par le croisement de sources indépendantes dans le disque de flou (ventes DVF, DPE, copropriétés, parcelles), avec sa confiance, sa méthode, la distance entre les sources et la clé BAN quand la Base Adresse Nationale la retrouve au numéro ; les adresses que désigne l'empreinte du DPE affiché (numéro de DPE, clé BAN, écart de surface), ambiguë quand elle en désigne plusieurs ; l'adresse validée par un utilisateur de Pillr. La résolution n'est pas relancée à l'appel : elle date du dernier passage du résolveur (resolue_le). Rien n'est débité si aucune des trois n'existe. Coût : 5 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.","anyOf":[{"type":"string"},{"type":"null"}]},"id_portail":{"description":"Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"resolue":{"description":"Adresse résolue par le croisement de sources indépendantes dans le disque de flou ; null si l'annonce n'a pas été résolue.","anyOf":[{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN de l'adresse résolue, quand la Base Adresse Nationale la retrouve au numéro ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"type":"number"},"lon":{"type":"number"},"confiance":{"description":"Confiance du résolveur, de 0 à 1.","type":"number","minimum":0,"maximum":1},"methode":{"description":"Croisement retenu (dvf_x_dpe, dpe_x_copro, dvf_x_copro, dvf_x_parcelle, dpe_x_parcelle...).","type":"string"},"sources":{"description":"Sources indépendantes qui concordent (dvf, dpe, copro, parcelle).","type":"array","items":{"type":"string"}},"concordance_m":{"description":"Distance entre les positions des sources concordantes, en mètres.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rayon_disque_m":{"description":"Rayon du flou de l'annonce au moment de la résolution, en mètres.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"resolue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"version":{"description":"Version du résolveur.","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","cle_ban","lat","lon","confiance","methode","sources","concordance_m","rayon_disque_m","resolue_le","version","qualite"],"additionalProperties":false},{"type":"null"}]},"empreinte_dpe":{"description":"Adresses retrouvées par l'empreinte du DPE affiché (étiquette, surface, date) ; null si aucune.","anyOf":[{"type":"object","properties":{"n_adresses":{"description":"Adresses que l'empreinte du DPE affiché désigne ; plus d'une : empreinte ambiguë.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"candidats":{"type":"array","items":{"type":"object","properties":{"numero_dpe":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"date_dpe":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"type_batiment":{"anyOf":[{"type":"string"},{"type":"null"}]},"ecart_surface_m2":{"description":"Écart entre la surface du DPE et celle de l'annonce, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero_dpe","cle_ban","date_dpe","type_batiment","ecart_surface_m2"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n_adresses","candidats","qualite"],"additionalProperties":false},{"type":"null"}]},"validee":{"anyOf":[{"description":"Adresse confirmée par un utilisateur de Pillr (cache partagé des localisations) ; null si aucune.","type":"object","properties":{"adresse":{"type":"string"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision":{"anyOf":[{"type":"string","enum":["numero","rue","lieu_dit","commune"]},{"type":"null"}]},"confiance":{"description":"Ce qui a fondé la validation, en clair (Street View, DPE...).","anyOf":[{"type":"string"},{"type":"null"}]},"le":{"description":"Date de la validation.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","lat","lon","precision","confiance","le","qualite"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","resolue","empreinte_dpe","validee","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"adresse_annonce"}},"/annonces/{id}/localisation":{"get":{"operationId":"localiser_annonce","summary":"Localisation pas à pas (étapes déterministes)","description":"Étapes déterministes de la localisation d'une annonce floutée, une par appel (etape), celles de l'outil du Hub : disque (centre et rayon du flou du portail, adresse BAN du centre, précision honnête des coordonnées, immeuble annoncé, adresse validée) ; dpe (DPE du miroir ADEME dans le disque, à la même étiquette, à la surface près et du même type, repli sur l'API de l'ADEME) ; dvf (ventes DVF de 2018 à 2025 du même type à 3 % de surface près, adresse retrouvée par la BAN) ; copro (copropriétés du registre national au nombre de lots annoncé) ; parcelle (maisons : parcelles du cadastre IGN à la contenance du terrain annoncé) ; batiments (bâtiments BD TOPO du disque, compatibles d'abord avec l'étage annoncé) ; geocoder (saisie q géocodée par la Base Adresse Nationale, au code postal de l'annonce ou à code_postal, et contrôlée contre le flou). Les candidats sont croisés avec les disques des rediffusions du même bien sur d'autres portails. tolerance règle l'étape : surface en m² pour dpe (1 à 15), lots pour copro (1 à 8), contenance en % pour parcelle (1 à 30). Street View, Google Maps et l'image aérienne ne sont donnés qu'en lien. Rien n'est débité quand l'annonce ne permet pas l'étape (sans étiquette DPE, sans surface, sans position, hors copropriété, sans terrain). Coût : 5 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"etape","in":"query","required":true,"schema":{"description":"L'étape à exécuter.","type":"string","enum":["disque","dpe","dvf","copro","parcelle","batiments","geocoder"]}},{"name":"tolerance","in":"query","required":false,"schema":{"description":"Tolérance de l'étape dpe (m²), copro (lots) ou parcelle (% de contenance), bornée par l'étape.","type":"number","minimum":1,"maximum":30}},{"name":"q","in":"query","required":false,"schema":{"description":"geocoder : la rue, le lieu ou l'adresse à géocoder.","type":"string","minLength":2,"maxLength":200}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"geocoder : code postal de la recherche (par défaut, celui de l'annonce).","type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.","anyOf":[{"type":"string"},{"type":"null"}]},"id_portail":{"description":"Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"etape":{"type":"string","enum":["disque","dpe","dvf","copro","parcelle","batiments","geocoder"]},"criteres":{"description":"Les critères que l'étape a appliqués.","type":"object","properties":{"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"tolerance":{"description":"Tolérance appliquée, après bornage par l'étape.","anyOf":[{"type":"number"},{"type":"null"}]},"unite_tolerance":{"anyOf":[{"type":"string","enum":["m2","lots","pct"]},{"type":"null"}]},"lots":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"etage_minimum":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"q":{"anyOf":[{"type":"string"},{"type":"null"}]},"annees":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"type":"null"}]}},"required":["dpe","type_bien","surface_m2","tolerance","unite_tolerance","lots","terrain_m2","etage","etage_minimum","code_postal","q","annees"],"additionalProperties":false},"disque":{"anyOf":[{"type":"object","properties":{"centre":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},"rayon_flou_m":{"description":"Rayon du flou donné par le portail ; null quand il ne le donne pas.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rayon_recherche_m":{"description":"Rayon de recherche : le flou, ou le rayon supposé, plus la marge de géocodage.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"origine":{"type":"string","enum":["flou_du_portail","coordonnees_annonce"]},"rediffusions_croisees":{"description":"Disques des rediffusions du même bien sur d'autres portails, croisés avec celui-ci ; null quand l'étape ne les croise pas.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["centre","rayon_flou_m","rayon_recherche_m","origine","rediffusions_croisees"],"additionalProperties":false},{"type":"null"}]},"nb_candidats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"candidats":{"type":"array","items":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN du candidat quand il est retrouvé au numéro ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au centre du disque, en mètres.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ecart":{"description":"Écart au critère de l'étape : m² de surface (dpe, dvf), lots (copro), m² de terrain (parcelle) ; null pour batiments et geocoder.","anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"date":{"description":"Date du DPE (dpe) ou de la vente (dvf).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"description":"Type de bâtiment du DPE (dpe).","anyOf":[{"type":"string"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"description":"Prix de la vente DVF, en euros (dvf).","anyOf":[{"type":"number"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nom_copropriete":{"description":"Nom d'usage de la copropriété au registre (copro).","anyOf":[{"type":"string"},{"type":"null"}]},"contenance_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"niveaux":{"description":"Niveaux du bâtiment BD TOPO, sinon estimés par sa hauteur (batiments).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"hauteur_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"compatible_etage":{"description":"Vrai si l'étage annoncé existe dans le bâtiment ; null sans étage annoncé ou sans hauteur connue.","anyOf":[{"type":"boolean"},{"type":"null"}]},"precision":{"description":"Type du résultat de la Base Adresse Nationale (geocoder) : housenumber, street, locality, municipality.","anyOf":[{"type":"string"},{"type":"null"}]},"score":{"description":"Score de la Base Adresse Nationale, de 0 à 1 (geocoder).","anyOf":[{"type":"number"},{"type":"null"}]},"liens":{"description":"Liens vers le point ; null quand le point manque.","type":"object","properties":{"street_view":{"description":"Lien Google Street View du point (un lien : aucune image Google n'est servie).","anyOf":[{"type":"string"},{"type":"null"}]},"maps":{"description":"Lien Google Maps du point.","anyOf":[{"type":"string"},{"type":"null"}]},"ortho":{"description":"Image aérienne de l'IGN (Géoplateforme, service WMS) centrée sur le point.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street_view","maps","ortho"],"additionalProperties":false}},"required":["adresse","cle_ban","lat","lon","distance_m","ecart","dpe","ges","date","surface_m2","type","periode_construction","valeur_fonciere","lots_total","lots_habitation","nom_copropriete","contenance_m2","section","numero_parcelle","niveaux","hauteur_m","usage","logements","compatible_etage","precision","score","liens"],"additionalProperties":false}},"dans_le_disque":{"description":"geocoder : vrai si l'adresse tombe dans le flou du portail, faux pour une voie homonyme hors du disque ; null sans flou.","anyOf":[{"type":"boolean"},{"type":"null"}]},"situation":{"description":"disque : ce que l'annonce dit de sa position ; null pour les autres étapes.","anyOf":[{"type":"object","properties":{"precision":{"description":"Précision honnête des coordonnées affichées : avec un flou, jamais au numéro.","type":"string","enum":["aucune","disque_de_flou","numero","rue","approchee"]},"adresse_proche":{"description":"Adresse BAN la plus proche du centre : celle du centre du flou, pas celle du bien.","anyOf":[{"type":"object","properties":{"adresse":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"},"score":{"type":"number"}},"required":["adresse","cle_ban","type","score"],"additionalProperties":false},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"quartier":{"anyOf":[{"type":"string"},{"type":"null"}]},"batiment":{"type":"object","properties":{"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_etages":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"en_copropriete":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"lots_copro":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ascenseur":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["etage","nb_etages","en_copropriete","lots_copro","ascenseur"],"additionalProperties":false},"liens":{"description":"Liens vers le point ; null quand le point manque.","type":"object","properties":{"street_view":{"description":"Lien Google Street View du point (un lien : aucune image Google n'est servie).","anyOf":[{"type":"string"},{"type":"null"}]},"maps":{"description":"Lien Google Maps du point.","anyOf":[{"type":"string"},{"type":"null"}]},"ortho":{"description":"Image aérienne de l'IGN (Géoplateforme, service WMS) centrée sur le point.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street_view","maps","ortho"],"additionalProperties":false}},"required":["precision","adresse_proche","commune","code_postal","insee","quartier","batiment","liens"],"additionalProperties":false},{"type":"null"}]},"adresse_validee":{"anyOf":[{"description":"Adresse confirmée par un utilisateur de Pillr (cache partagé des localisations) ; null si aucune.","type":"object","properties":{"adresse":{"type":"string"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision":{"anyOf":[{"type":"string","enum":["numero","rue","lieu_dit","commune"]},{"type":"null"}]},"confiance":{"description":"Ce qui a fondé la validation, en clair (Street View, DPE...).","anyOf":[{"type":"string"},{"type":"null"}]},"le":{"description":"Date de la validation.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","lat","lon","precision","confiance","le","qualite"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","etape","criteres","disque","nb_candidats","candidats","dans_le_disque","situation","adresse_validee","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"localiser_annonce"}},"/annonces/{id}/localisation/indices-photos":{"get":{"operationId":"indices_photos_annonce","summary":"Indices de localisation lus sur les photos","description":"Lecture par vision (Gemini) des 4 premières photos et de la description d'une annonce : noms de rue, enseignes, numéros de voirie, monuments, lieux cités, vue depuis les fenêtres, quartier et indice le plus fort. Seuls des indices lus sont rendus, jamais devinés : un indice se géocode ensuite par localiser_annonce (etape geocoder) ou lieu_par_indice. Les photos sont lues sur les serveurs des portails ; la description d'un particulier est passée au modèle sans ses coordonnées. Coût : 20 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.","anyOf":[{"type":"string"},{"type":"null"}]},"id_portail":{"description":"Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"vues_exterieures":{"description":"Vrai si au moins une photo montre l'extérieur, la façade, la rue ou une vue.","type":"boolean"},"quartier":{"anyOf":[{"type":"string"},{"type":"null"}]},"rues":{"description":"Noms de rue ou de place lus sur un panneau ou dans la description.","type":"array","items":{"type":"string"}},"enseignes":{"description":"Enseignes de commerces lisibles.","type":"array","items":{"type":"string"}},"numeros":{"description":"Numéros de voirie visibles.","type":"array","items":{"type":"string"}},"monuments":{"description":"Monuments, églises, gares, écoles identifiés par leur nom.","type":"array","items":{"type":"string"}},"lieux_proches":{"description":"Lieux nommés dans la description.","type":"array","items":{"type":"string"}},"vue":{"description":"Ce qui se voit depuis les fenêtres ou le balcon.","anyOf":[{"type":"string"},{"type":"null"}]},"indice_principal":{"description":"L'indice le plus exploitable pour situer le bien.","anyOf":[{"type":"string"},{"type":"null"}]},"photos_analysees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","vues_exterieures","quartier","rues","enseignes","numeros","monuments","lieux_proches","vue","indice_principal","photos_analysees","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"indices_photos"}},"/annonces/{id}/localisation/lieux":{"get":{"operationId":"lieu_par_indice","summary":"Lieu réel d'un indice par Google Maps","description":"Résout un indice de localisation (enseigne, repère, ligne de tram) en lieu réel par Gemini avec l'outil Google Maps, biaisé sur le centre du flou de l'annonce (sinon sur lat et lon, sinon sur sa position affichée) pour écarter les homonymes lointains : la réponse du modèle et 5 lieux Google Maps au plus. Le lieu trouvé se contrôle ensuite par localiser_annonce (etape geocoder), qui dit s'il tombe dans le disque. Résultat soumis aux conditions de Google Maps Platform : jamais gardé en mémoire par Pillr, la source est citée. Coût : 40 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}},{"name":"q","in":"query","required":true,"schema":{"description":"L'indice à résoudre : enseigne, repère, ligne de transport.","type":"string","minLength":2,"maxLength":200}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude du biais, quand l'annonce n'a pas de flou.","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude du biais, quand l'annonce n'a pas de flou.","type":"number","minimum":-180,"maximum":180}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.","anyOf":[{"type":"string"},{"type":"null"}]},"id_portail":{"description":"Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"q":{"type":"string"},"reponse":{"description":"La réponse du modèle : le lieu le plus probable, son adresse ou son quartier.","type":"string"},"lieux":{"description":"Les lieux Google Maps cités par la réponse.","type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}]},"place_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","uri","place_id"],"additionalProperties":false}},"point_de_biais":{"description":"Le point autour duquel la recherche est biaisée : le centre du flou, sinon lat et lon, sinon la position affichée.","anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","q","reponse","lieux","point_de_biais","source","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":40,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"lieu_par_indice"}},"/annonces/{id}/localisation/street-view":{"post":{"operationId":"street_view_annonce","summary":"Comparaison de façade avec Street View","description":"Compare par vision (Gemini) la façade des 4 premières photos de l'annonce aux images Google Street View de 1 à 3 adresses candidates, en une seule passe : verdict (oui, non, incertain), confiance, raison et classement des candidats. Un candidat sans couverture Street View n'est pas comparé ni payé. Les images Street View ne sont jamais servies ni gardées : seul un lien l'est. Rien n'est débité sans photo d'annonce, sans couverture ou si le service est coupé. Coût : 40 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"candidats":{"description":"Les adresses candidates.","minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"libelle":{"description":"Adresse ou nom du candidat, repris dans le classement.","type":"string","maxLength":200}},"required":["lat","lon"],"additionalProperties":false}},"lat":{"description":"Un seul candidat : sa latitude (sans candidats).","type":"number","minimum":-90,"maximum":90},"lon":{"description":"Un seul candidat : sa longitude (sans candidats).","type":"number","minimum":-180,"maximum":180},"cap":{"description":"Cap de la prise de vue Street View, en degrés.","type":"number","minimum":0,"maximum":360}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce dans la base servie ; null quand l'annonce n'est connue que des archives du lac.","anyOf":[{"type":"string"},{"type":"null"}]},"id_portail":{"description":"Identifiant de l'annonce chez son portail : lbc:<n>, bienici:<id> ou seloger:<id>.","anyOf":[{"type":"string"},{"type":"null"}]},"correspondance":{"description":"Verdict du candidat retenu : oui, non ou incertain.","type":"string","enum":["oui","non","incertain"]},"confiance":{"description":"Confiance déclarée par le modèle, de 0 à 1.","anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien_street_view":{"description":"Lien Google Street View du candidat retenu (aucune image n'est servie).","anyOf":[{"type":"string"},{"type":"null"}]},"images_comparees":{"description":"Images Street View réellement comparées (un candidat sans couverture n'est pas payé).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"classement":{"type":"array","items":{"type":"object","properties":{"candidat":{"description":"Rang du candidat dans la demande, à partir de 1.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"correspondance":{"type":"string","enum":["oui","non","incertain"]},"confiance":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"lien_street_view":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["candidat","libelle","correspondance","confiance","raison","lat","lon","lien_street_view"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","id_portail","correspondance","confiance","raison","lien_street_view","images_comparees","classement","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":40,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"street_view"}},"/annonces/{id}/adresse-validee":{"post":{"operationId":"valider_adresse_annonce","summary":"Enregistrer l'adresse validée d'une annonce","description":"Enregistre l'adresse que l'utilisateur de la clé a confirmée pour une annonce, dans le cache partagé des localisations de Pillr : une adresse par annonce, la dernière validation remplace la précédente. Elle est ensuite rendue par adresse_annonce et par localiser_annonce (etape disque), et le Hub la lit aussi. Exige une clé rattachée à un compte Pillr. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"libelle":{"description":"L'adresse confirmée, en clair.","type":"string","minLength":5,"maxLength":300},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"precision":{"description":"Précision de l'adresse confirmée.","type":"string","enum":["numero","rue","lieu_dit","commune"]},"confiance":{"description":"Ce qui fonde la validation (Street View, DPE...).","type":"string","maxLength":120}},"required":["libelle"],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"enregistre":{"type":"boolean"},"id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"libelle":{"type":"string"},"note":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["enregistre","id","libelle","note","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"valider_adresse","x-pillr-compte":true,"x-pillr-ecriture":true}},"/adresses/recherche":{"get":{"operationId":"resoudre_adresse","summary":"Résoudre une adresse ou un point","description":"Géocodage par la Base Adresse Nationale d'une adresse en texte (avec son code postal pour départager) ou d'un point (géocodage inverse, du plus proche au plus lointain). Chaque candidat porte sa clé BAN, son numéro, sa voie, sa commune et son ancienne commune, sa position, son score ou sa distance, et pour un numéro le type de position, les parcelles cadastrales et la certification lus dans la copie de la BAN de Pillr. La clé BAN d'un numéro sert aux autres opérations du domaine. Coût : 0 crédit par appel réussi.","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Adresse en texte (recherche).","type":"string","minLength":3,"maxLength":200}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"Code postal, pour départager une adresse homonyme (avec q).","type":"string","pattern":"^\\d{5}$"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre de candidats rendus.","default":5,"type":"integer","minimum":1,"maximum":10}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["recherche","inverse"]},"candidats":{"type":"array","items":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN du candidat : celle d'un numéro (adresse servie par les autres opérations), d'une voie ou d'un lieu-dit.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"type":{"description":"Ce que désigne le candidat : un numéro, une voie, un lieu-dit ou une commune.","type":"string","enum":["numero","voie","lieu_dit","commune"]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffixe":{"description":"Indice de répétition (bis, ter, A...), en minuscules.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"ancienne_commune":{"description":"Commune déléguée ou fusionnée, quand l'adresse en porte une.","anyOf":[{"type":"object","properties":{"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"lat":{"type":"number"},"lon":{"type":"number"},"type_position":{"description":"Type de position de la BAN (entrée, bâtiment, délivrance postale, parcelle, segment...) ; null si non lu.","anyOf":[{"type":"string"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales (14 caractères) rattachées au numéro par la BAN ; vide quand la BAN n'en donne pas (environ une adresse sur deux) ; null quand la base n'a pas été lue.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"score":{"description":"Score de la recherche, de 0 à 1 (recherche en texte).","anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres (géocodage inverse).","anyOf":[{"type":"number"},{"type":"null"}]},"certification":{"description":"Vrai si la commune a certifié l'adresse dans la BAN.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["cle_ban","libelle","type","numero","suffixe","voie","code_postal","insee","commune","ancienne_commune","lat","lon","type_position","parcelles","score","distance_m","certification"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["mode","candidats","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resoudre_adresse"}},"/adresses/inverse":{"get":{"operationId":"resoudre_adresse_2","summary":"Résoudre une adresse ou un point","description":"Géocodage par la Base Adresse Nationale d'une adresse en texte (avec son code postal pour départager) ou d'un point (géocodage inverse, du plus proche au plus lointain). Chaque candidat porte sa clé BAN, son numéro, sa voie, sa commune et son ancienne commune, sa position, son score ou sa distance, et pour un numéro le type de position, les parcelles cadastrales et la certification lus dans la copie de la BAN de Pillr. La clé BAN d'un numéro sert aux autres opérations du domaine. Coût : 0 crédit par appel réussi.","parameters":[{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude en degrés décimaux (WGS 84).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude en degrés décimaux (WGS 84).","type":"number","minimum":-180,"maximum":180}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["recherche","inverse"]},"candidats":{"type":"array","items":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN du candidat : celle d'un numéro (adresse servie par les autres opérations), d'une voie ou d'un lieu-dit.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"type":{"description":"Ce que désigne le candidat : un numéro, une voie, un lieu-dit ou une commune.","type":"string","enum":["numero","voie","lieu_dit","commune"]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffixe":{"description":"Indice de répétition (bis, ter, A...), en minuscules.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"ancienne_commune":{"description":"Commune déléguée ou fusionnée, quand l'adresse en porte une.","anyOf":[{"type":"object","properties":{"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"lat":{"type":"number"},"lon":{"type":"number"},"type_position":{"description":"Type de position de la BAN (entrée, bâtiment, délivrance postale, parcelle, segment...) ; null si non lu.","anyOf":[{"type":"string"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales (14 caractères) rattachées au numéro par la BAN ; vide quand la BAN n'en donne pas (environ une adresse sur deux) ; null quand la base n'a pas été lue.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"score":{"description":"Score de la recherche, de 0 à 1 (recherche en texte).","anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres (géocodage inverse).","anyOf":[{"type":"number"},{"type":"null"}]},"certification":{"description":"Vrai si la commune a certifié l'adresse dans la BAN.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["cle_ban","libelle","type","numero","suffixe","voie","code_postal","insee","commune","ancienne_commune","lat","lon","type_position","parcelles","score","distance_m","certification"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["mode","candidats","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resoudre_adresse"}},"/adresses/{cle_ban}/faits":{"get":{"operationId":"faits_adresse","summary":"Faits complets d'une adresse","description":"La ligne complète d'une adresse BAN dans la table d'adresses de Pillr, en groupes : identité (parcelles, îlot, position), bâtiment, DPE détaillé (chauffage, isolation, ventilation, méthode, numéro, historique daté), audit, ventes DVF au numéro avec leur historique, îlot (ventes sur 5 ans, médiane au m² et son nombre de ventes, annonces actives, copropriétés), copropriété, autorisations d'urbanisme avec leur historique, sociétés civiles nommées avec leur SIREN, mise en vente (annonce rattachée, confiance et méthode), contexte de la commune et variables du pré-marché. Le paramètre champs choisit des groupes ou des colonnes. Un seul DPE par adresse : le plus récent. Coût : 5 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}},{"name":"champs","in":"query","required":false,"schema":{"description":"Champs rendus, séparés par des virgules (« prix,surface,analyse.score ») ; tous si absent.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":60,"type":"array","items":{"type":"string","maxLength":300}}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"identite":{"type":"object","properties":{"cle_ban":{"type":"string"},"origine":{"description":"ban : adresse de la BAN ; dpe : adresse connue par un DPE, absente de la BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse_numerotee":{"description":"Faux pour une pseudo-adresse (voie ou commune seule) : à ne pas lire comme un bâtiment.","anyOf":[{"type":"boolean"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"rep":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lieu_dit":{"anyOf":[{"type":"string"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales de l'adresse (14 caractères).","type":"array","items":{"type":"string"}},"type_position":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"ilot":{"description":"Îlot d'environ 100 m (position arrondie au millième de degré).","anyOf":[{"type":"string"},{"type":"null"}]},"cell4":{"description":"Cellule d'environ 10 m (position arrondie au dix-millième de degré).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cle_ban","origine","adresse_numerotee","adresse","numero","rep","voie","code_postal","insee","commune","lieu_dit","parcelles","type_position","lat","lon","ilot","cell4"],"additionalProperties":false},"batiment":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_immeuble_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"periode":{"anyOf":[{"type":"string"},{"type":"null"}]},"annee":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"niveaux":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appartements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["type","surface_immeuble_m2","periode","annee","niveaux","appartements"],"additionalProperties":false},"dpe":{"description":"Un DPE par adresse ici (le plus récent) : le détail logement par logement est servi par les opérations du domaine DPE.","anyOf":[{"type":"object","properties":{"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_kg_m2_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"chauffage_energie":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage_installation":{"anyOf":[{"type":"string"},{"type":"null"}]},"isolation_enveloppe":{"anyOf":[{"type":"string"},{"type":"null"}]},"isolation_murs":{"anyOf":[{"type":"string"},{"type":"null"}]},"isolation_menuiseries":{"anyOf":[{"type":"string"},{"type":"null"}]},"ventilation":{"anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"description":"Méthode d'application du DPE (logement, immeuble, à partir du DPE de l'immeuble).","anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"description":"Numéro ADEME du DPE le plus récent.","anyOf":[{"type":"string"},{"type":"null"}]},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"premier_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"jours_depuis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_12_mois":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_6_mois":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"refait_pendant_validite":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"historique":{"description":"Tous les DPE datés de l'adresse, du plus ancien au plus récent.","type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]}},"required":["date","etiquette"],"additionalProperties":false}},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["etiquette","ges","conso_kwh_m2_an","ges_kg_m2_an","surface_m2","chauffage_energie","chauffage_installation","isolation_enveloppe","isolation_murs","isolation_menuiseries","ventilation","methode","numero","etabli_le","fin_validite","premier_le","jours_depuis","nb_total","nb_12_mois","nb_6_mois","refait_pendant_validite","historique","interdiction_location","qualite"],"additionalProperties":false},{"type":"null"}]},"audit":{"anyOf":[{"type":"object","properties":{"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nb":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"cout_travaux_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"classe_visee":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"pack_pre_vente":{"description":"Un DPE et un audit établis ensemble, comme avant une vente.","anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["etabli_le","nb","cout_travaux_max","classe_visee","pack_pre_vente","qualite"],"additionalProperties":false},{"type":"null"}]},"ventes":{"description":"Ventes DVF au numéro, résumées par mutation ; le détail est servi par le domaine Ventes DVF.","anyOf":[{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"premiere_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"derniere":{"anyOf":[{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix","type","surface_m2","prix_m2"],"additionalProperties":false},{"type":"null"}]},"historique":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix","type","surface_m2"],"additionalProperties":false}},"vendu_apres_dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n","premiere_le","derniere","historique","vendu_apres_dpe","qualite"],"additionalProperties":false},{"type":"null"}]},"ilot":{"type":"object","properties":{"ventes_5a":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mediane_m2_5a":{"description":"Prix au m² médian des ventes de l'îlot sur 5 ans, servi quel que soit le nombre de ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"derniere_vente_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"anciennete_derniere_vente_j":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"en_vente":{"description":"Annonces actives dans l'îlot.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vente_directe":{"description":"Annonces actives de particuliers dans l'îlot.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"copro":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"lots_max":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sans_syndic":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["ventes_5a","mediane_m2_5a","derniere_vente_le","anciennete_derniere_vente_j","en_vente","vente_directe","copro","lots_max","sans_syndic","qualite"],"additionalProperties":false},"copro":{"anyOf":[{"type":"object","properties":{"immatriculation":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"type_syndic":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat":{"anyOf":[{"type":"string"},{"type":"null"}]},"immatriculee_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"aidee":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["immatriculation","lots_habitation","lots_total","type_syndic","mandat","immatriculee_le","periode_construction","aidee"],"additionalProperties":false},{"type":"null"}]},"permis":{"anyOf":[{"type":"object","properties":{"n_7a":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dernier_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"dernier_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements_crees_7a":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"extension":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"piscine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"demandeur_pro":{"description":"Au moins une autorisation demandée par une personne morale (SIREN).","anyOf":[{"type":"boolean"},{"type":"null"}]},"historique":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["date","type","nature","logements"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n_7a","dernier_le","dernier_type","dernier_nature","logements_crees_7a","extension","piscine","demandeur_pro","historique","qualite"],"additionalProperties":false},{"type":"null"}]},"societes_civiles":{"anyOf":[{"description":"Sociétés civiles (personnes morales) dont le siège est à l'adresse, nommées avec leur SIREN quand l'avis le porte.","type":"object","properties":{"n":{"description":"Sociétés civiles dont le siège est à l'adresse.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"radiation_le":{"description":"Dernier avis de radiation ou de dissolution.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"procedure_le":{"description":"Dernier avis de procédure collective.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"cession_le":{"description":"Dernier avis de vente ou de cession.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"societes":{"type":"array","items":{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"anyOf":[{"type":"string"},{"type":"null"}]},"avis":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","type"],"additionalProperties":false}}},"required":["denomination","siren","forme","avis"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n","derniere_denomination","dernier_avis","dernier_avis_le","radiation_le","procedure_le","cession_le","societes","qualite"],"additionalProperties":false},{"type":"null"}]},"annonce":{"anyOf":[{"description":"La mise en vente de l'adresse : déduite du rattachement d'annonces à l'adresse, jamais déclarée par le vendeur. La confiance et la méthode disent comment lire la valeur.","type":"object","properties":{"deja_en_vente":{"description":"Une annonce en cours est rattachée à l'adresse (concordance ou empreinte active).","anyOf":[{"type":"boolean"},{"type":"null"}]},"mise_en_vente_le":{"description":"Première parution de la mise en vente en cours, lue par l'empreinte de l'adresse.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"derniere_parution_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"concordante":{"description":"L'annonce rattachée par croisement, avec sa confiance et sa méthode.","anyOf":[{"type":"object","properties":{"active":{"description":"L'annonce rattachée est-elle encore en ligne ?","anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Annonces rattachées à l'adresse par cette méthode.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"description":"Identifiant de l'annonce au lac de Pillr.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"confiance":{"description":"Confiance du rattachement de l'annonce à l'adresse, de 0 à 1.","anyOf":[{"type":"number"},{"type":"null"}]},"methode":{"description":"Méthode du rattachement (croisement DVF et DPE, DPE et copropriété, etc.).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","prix","surface_m2","type_vendeur","lien","confiance","methode"],"additionalProperties":false},{"type":"null"}]},"empreinte":{"description":"L'annonce reconnue par l'empreinte de l'adresse.","anyOf":[{"type":"object","properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Parutions reconnues comme le même bien à cette adresse.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","parue_le","prix","type_vendeur","lien"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["deja_en_vente","mise_en_vente_le","derniere_parution_le","concordante","empreinte","qualite"],"additionalProperties":false},{"type":"null"}]},"commune":{"description":"Contexte de la commune, au dernier mois calculé.","anyOf":[{"type":"object","properties":{"prix_m2_median":{"description":"Prix au m² médian des annonces de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"dvf_prix_m2_median":{"description":"Prix au m² médian des ventes DVF de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"taux_vacance":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe_pct":{"description":"Part des annonces entrées publiées par des particuliers, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"entrees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stock":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"mois":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2_median","dvf_prix_m2_median","taux_vacance","vente_directe_pct","entrees","stock","duree_mediane_j","mois","qualite"],"additionalProperties":false},{"type":"null"}]},"pre_marche":{"description":"Variables du pré-marché, datées au jour du DPE (la probabilité calibrée est servie par le domaine Pré-marché).","anyOf":[{"type":"object","properties":{"decroissance_age_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_ilot_avant_dpe":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"achat_avant_dpe_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"annees_detention_au_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_valide_au_dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nb_dpe_365j_avant":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sci_connue_au_dpe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"audit_connu_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"hors_perimetre":{"description":"Motif d'exclusion du périmètre du pré-marché ; null dans le périmètre.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["decroissance_age_dpe","ventes_ilot_avant_dpe","achat_avant_dpe_le","annees_detention_au_dpe","dpe_valide_au_dpe","nb_dpe_365j_avant","sci_connue_au_dpe","audit_connu_le","hors_perimetre"],"additionalProperties":false},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"faits_adresse"}},"/adresses/{cle_ban}/histoire":{"get":{"operationId":"histoire_adresse","summary":"Histoire datée d'une adresse","description":"La frise datée et sourcée d'une adresse, par sa clé BAN, l'adresse en texte ou un point : construction déclarée, DPE depuis 2013 et audits énergétiques, autorisations d'urbanisme depuis 2013 (demandeur personne morale nommé), ventes DVF depuis 2018 au numéro, à la parcelle ou par position, copropriété (syndic professionnel nommé), sociétés civiles domiciliées nommées avec leur SIREN, annonces passées et baisses de prix avec l'agence nommée, catastrophes naturelles de la commune depuis 1982 (Géorisques). Chaque évènement dit son rattachement (adresse, parcelle, immeuble, position ou commune) et chaque source son état. Le même moteur que l'outil Historimmo du Hub ; le nombre d'évènements est plafonné, la construction et la première vente toujours gardées. Coût : 10 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"type":"string"},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffixe":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"type":"number"},"lon":{"type":"number"},"parcelles":{"type":"array","items":{"type":"string"}},"score_geocodage":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","cle_ban","insee","code_postal","commune","numero","suffixe","voie","code_voie","lat","lon","parcelles","score_geocodage"],"additionalProperties":false},"bien":{"anyOf":[{"type":"object","properties":{"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette_ges":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"nombre_niveaux":{"anyOf":[{"type":"number"},{"type":"null"}]},"nombre_logements":{"anyOf":[{"type":"number"},{"type":"null"}]},"copro_lots":{"anyOf":[{"type":"number"},{"type":"null"}]},"copro_type_syndic":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","surface_m2","annee_construction","periode_construction","etiquette_dpe","etiquette_ges","chauffage","nombre_niveaux","nombre_logements","copro_lots","copro_type_syndic"],"additionalProperties":false},{"type":"null"}]},"evenements":{"description":"Du plus ancien au plus récent ; la construction et la première vente sont toujours gardées.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"date_precision":{"type":"string","enum":["jour","mois","annee"]},"type":{"description":"construction, dpe, audit, vente, annonce_parue, annonce_baisse, annonce_retiree, permis_construire, declaration_prealable, permis_amenager, permis_demolir, ouverture_chantier, achevement_travaux, copro_immatriculation, copro_reglement, copro_fin_mandat, societe_civile, catastrophe_naturelle.","type":"string"},"famille":{"type":"string","enum":["bien","transaction","marche","urbanisme","copropriete","societe","commune"]},"titre":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"valeurs":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"valeur":{"type":"string"}},"required":["libelle","valeur"],"additionalProperties":false}},"source":{"type":"string"},"rattachement":{"description":"À quel point l'évènement est rattaché à l'adresse : même adresse, même parcelle, par position, un autre lot du même immeuble, ou la commune.","type":"string","enum":["adresse","parcelle","position","immeuble","commune"]},"lien":{"description":"Lien public (annonce d'origine avec la portée lien_origine, texte officiel).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","date_precision","type","famille","titre","detail","valeurs","source","rattachement","lien"],"additionalProperties":false}},"periode":{"type":"object","properties":{"debut":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["debut","fin"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"libelle":{"type":"string"},"depuis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"statut":{"type":"string","enum":["ok","vide","indisponible"]},"nb":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","libelle","depuis","statut","nb","note"],"additionalProperties":false}},"resume":{"type":"object","properties":{"nb_evenements":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_vente":{"anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix"],"additionalProperties":false},{"type":"null"}]},"premier_evenement":{"anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"titre":{"type":"string"}},"required":["date","titre"],"additionalProperties":false},{"type":"null"}]},"en_vente":{"type":"boolean"}},"required":["nb_evenements","nb_ventes","derniere_vente","premier_evenement","en_vente"],"additionalProperties":false},"mise_en_vente":{"anyOf":[{"description":"La mise en vente de l'adresse : déduite du rattachement d'annonces à l'adresse, jamais déclarée par le vendeur. La confiance et la méthode disent comment lire la valeur.","type":"object","properties":{"deja_en_vente":{"description":"Une annonce en cours est rattachée à l'adresse (concordance ou empreinte active).","anyOf":[{"type":"boolean"},{"type":"null"}]},"mise_en_vente_le":{"description":"Première parution de la mise en vente en cours, lue par l'empreinte de l'adresse.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"derniere_parution_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"concordante":{"description":"L'annonce rattachée par croisement, avec sa confiance et sa méthode.","anyOf":[{"type":"object","properties":{"active":{"description":"L'annonce rattachée est-elle encore en ligne ?","anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Annonces rattachées à l'adresse par cette méthode.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"description":"Identifiant de l'annonce au lac de Pillr.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"confiance":{"description":"Confiance du rattachement de l'annonce à l'adresse, de 0 à 1.","anyOf":[{"type":"number"},{"type":"null"}]},"methode":{"description":"Méthode du rattachement (croisement DVF et DPE, DPE et copropriété, etc.).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","prix","surface_m2","type_vendeur","lien","confiance","methode"],"additionalProperties":false},{"type":"null"}]},"empreinte":{"description":"L'annonce reconnue par l'empreinte de l'adresse.","anyOf":[{"type":"object","properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Parutions reconnues comme le même bien à cette adresse.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","parue_le","prix","type_vendeur","lien"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["deja_en_vente","mise_en_vente_le","derniere_parution_le","concordante","empreinte","qualite"],"additionalProperties":false},{"type":"null"}]},"societes_civiles":{"anyOf":[{"description":"Sociétés civiles (personnes morales) dont le siège est à l'adresse, nommées avec leur SIREN quand l'avis le porte.","type":"object","properties":{"n":{"description":"Sociétés civiles dont le siège est à l'adresse.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"radiation_le":{"description":"Dernier avis de radiation ou de dissolution.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"procedure_le":{"description":"Dernier avis de procédure collective.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"cession_le":{"description":"Dernier avis de vente ou de cession.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"societes":{"type":"array","items":{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"anyOf":[{"type":"string"},{"type":"null"}]},"avis":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","type"],"additionalProperties":false}}},"required":["denomination","siren","forme","avis"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n","derniere_denomination","dernier_avis","dernier_avis_le","radiation_le","procedure_le","cession_le","societes","qualite"],"additionalProperties":false},{"type":"null"}]},"alternatives":{"description":"Autres adresses proposées par la BAN quand la saisie est ambiguë ; vide sinon.","type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","cle_ban","score"],"additionalProperties":false}},"note":{"type":"string"},"calcule_le":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["adresse","bien","evenements","periode","sources","resume","mise_en_vente","societes_civiles","alternatives","note","calcule_le","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"histoire_adresse"}},"/adresses/histoire":{"get":{"operationId":"histoire_adresse_2","summary":"Histoire datée d'une adresse","description":"La frise datée et sourcée d'une adresse, par sa clé BAN, l'adresse en texte ou un point : construction déclarée, DPE depuis 2013 et audits énergétiques, autorisations d'urbanisme depuis 2013 (demandeur personne morale nommé), ventes DVF depuis 2018 au numéro, à la parcelle ou par position, copropriété (syndic professionnel nommé), sociétés civiles domiciliées nommées avec leur SIREN, annonces passées et baisses de prix avec l'agence nommée, catastrophes naturelles de la commune depuis 1982 (Géorisques). Chaque évènement dit son rattachement (adresse, parcelle, immeuble, position ou commune) et chaque source son état. Le même moteur que l'outil Historimmo du Hub ; le nombre d'évènements est plafonné, la construction et la première vente toujours gardées. Coût : 10 crédits par appel réussi.","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude en degrés décimaux (WGS 84).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude en degrés décimaux (WGS 84).","type":"number","minimum":-180,"maximum":180}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"Code postal, pour départager une adresse homonyme (avec q).","type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"type":"string"},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffixe":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"type":"number"},"lon":{"type":"number"},"parcelles":{"type":"array","items":{"type":"string"}},"score_geocodage":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","cle_ban","insee","code_postal","commune","numero","suffixe","voie","code_voie","lat","lon","parcelles","score_geocodage"],"additionalProperties":false},"bien":{"anyOf":[{"type":"object","properties":{"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"number"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette_ges":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"nombre_niveaux":{"anyOf":[{"type":"number"},{"type":"null"}]},"nombre_logements":{"anyOf":[{"type":"number"},{"type":"null"}]},"copro_lots":{"anyOf":[{"type":"number"},{"type":"null"}]},"copro_type_syndic":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","surface_m2","annee_construction","periode_construction","etiquette_dpe","etiquette_ges","chauffage","nombre_niveaux","nombre_logements","copro_lots","copro_type_syndic"],"additionalProperties":false},{"type":"null"}]},"evenements":{"description":"Du plus ancien au plus récent ; la construction et la première vente sont toujours gardées.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"date_precision":{"type":"string","enum":["jour","mois","annee"]},"type":{"description":"construction, dpe, audit, vente, annonce_parue, annonce_baisse, annonce_retiree, permis_construire, declaration_prealable, permis_amenager, permis_demolir, ouverture_chantier, achevement_travaux, copro_immatriculation, copro_reglement, copro_fin_mandat, societe_civile, catastrophe_naturelle.","type":"string"},"famille":{"type":"string","enum":["bien","transaction","marche","urbanisme","copropriete","societe","commune"]},"titre":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"valeurs":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"valeur":{"type":"string"}},"required":["libelle","valeur"],"additionalProperties":false}},"source":{"type":"string"},"rattachement":{"description":"À quel point l'évènement est rattaché à l'adresse : même adresse, même parcelle, par position, un autre lot du même immeuble, ou la commune.","type":"string","enum":["adresse","parcelle","position","immeuble","commune"]},"lien":{"description":"Lien public (annonce d'origine avec la portée lien_origine, texte officiel).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","date_precision","type","famille","titre","detail","valeurs","source","rattachement","lien"],"additionalProperties":false}},"periode":{"type":"object","properties":{"debut":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["debut","fin"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"libelle":{"type":"string"},"depuis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"statut":{"type":"string","enum":["ok","vide","indisponible"]},"nb":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","libelle","depuis","statut","nb","note"],"additionalProperties":false}},"resume":{"type":"object","properties":{"nb_evenements":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_vente":{"anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix"],"additionalProperties":false},{"type":"null"}]},"premier_evenement":{"anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"titre":{"type":"string"}},"required":["date","titre"],"additionalProperties":false},{"type":"null"}]},"en_vente":{"type":"boolean"}},"required":["nb_evenements","nb_ventes","derniere_vente","premier_evenement","en_vente"],"additionalProperties":false},"mise_en_vente":{"anyOf":[{"description":"La mise en vente de l'adresse : déduite du rattachement d'annonces à l'adresse, jamais déclarée par le vendeur. La confiance et la méthode disent comment lire la valeur.","type":"object","properties":{"deja_en_vente":{"description":"Une annonce en cours est rattachée à l'adresse (concordance ou empreinte active).","anyOf":[{"type":"boolean"},{"type":"null"}]},"mise_en_vente_le":{"description":"Première parution de la mise en vente en cours, lue par l'empreinte de l'adresse.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"derniere_parution_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"concordante":{"description":"L'annonce rattachée par croisement, avec sa confiance et sa méthode.","anyOf":[{"type":"object","properties":{"active":{"description":"L'annonce rattachée est-elle encore en ligne ?","anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Annonces rattachées à l'adresse par cette méthode.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"description":"Identifiant de l'annonce au lac de Pillr.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"confiance":{"description":"Confiance du rattachement de l'annonce à l'adresse, de 0 à 1.","anyOf":[{"type":"number"},{"type":"null"}]},"methode":{"description":"Méthode du rattachement (croisement DVF et DPE, DPE et copropriété, etc.).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","prix","surface_m2","type_vendeur","lien","confiance","methode"],"additionalProperties":false},{"type":"null"}]},"empreinte":{"description":"L'annonce reconnue par l'empreinte de l'adresse.","anyOf":[{"type":"object","properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nb":{"description":"Parutions reconnues comme le même bien à cette adresse.","anyOf":[{"type":"number"},{"type":"null"}]},"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"description":"Professionnel ou particulier, selon le portail ; null si le portail ne le dit pas.","anyOf":[{"type":"string","enum":["professionnel","particulier"]},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["active","nb","id","parue_le","prix","type_vendeur","lien"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["deja_en_vente","mise_en_vente_le","derniere_parution_le","concordante","empreinte","qualite"],"additionalProperties":false},{"type":"null"}]},"societes_civiles":{"anyOf":[{"description":"Sociétés civiles (personnes morales) dont le siège est à l'adresse, nommées avec leur SIREN quand l'avis le porte.","type":"object","properties":{"n":{"description":"Sociétés civiles dont le siège est à l'adresse.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"radiation_le":{"description":"Dernier avis de radiation ou de dissolution.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"procedure_le":{"description":"Dernier avis de procédure collective.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"cession_le":{"description":"Dernier avis de vente ou de cession.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"societes":{"type":"array","items":{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"anyOf":[{"type":"string"},{"type":"null"}]},"avis":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","type"],"additionalProperties":false}}},"required":["denomination","siren","forme","avis"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n","derniere_denomination","dernier_avis","dernier_avis_le","radiation_le","procedure_le","cession_le","societes","qualite"],"additionalProperties":false},{"type":"null"}]},"alternatives":{"description":"Autres adresses proposées par la BAN quand la saisie est ambiguë ; vide sinon.","type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","cle_ban","score"],"additionalProperties":false}},"note":{"type":"string"},"calcule_le":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["adresse","bien","evenements","periode","sources","resume","mise_en_vente","societes_civiles","alternatives","note","calcule_le","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"histoire_adresse"}},"/adresses/{cle_ban}/annonces":{"get":{"operationId":"annonces_adresse","summary":"Annonces vues à une adresse","description":"Toutes les annonces de vente rattachées à une adresse BAN, actives et passées : l'annonce concordante (dé-floutée par croisement), l'annonce reconnue par l'empreinte de l'adresse, les annonces reconnues par l'empreinte d'un DPE de l'adresse et celles dont l'adresse résolue tombe à moins de 25 m. Pour chacune : portail, prix, surface, type de vendeur, agence nommée avec son SIREN pour un professionnel, dates de parution et de retrait, baisses de prix, méthode et confiance du rattachement. La réponse dit aussi si l'adresse est en vente et depuis quand. Rien n'est débité quand aucune annonce n'est rattachée à l'adresse. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}},{"name":"actives_seulement","in":"query","required":false,"schema":{"description":"true : seulement les annonces encore en ligne.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"type":"string"},"deja_en_vente":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"mise_en_vente_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"derniere_parution_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"annonces":{"description":"Les annonces rattachées, de la plus récente à la plus ancienne parution.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de portail (lbc:<numéro>, bienici:<identifiant>, seloger:<numéro>) quand le lien le donne, sinon identifiant du lac de Pillr.","type":"string"},"source":{"description":"Portail d'origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["professionnel","particulier","inconnu"]},"annonceur":{"description":"L'agence ou le professionnel qui publie l'annonce, nommé avec son SIREN ; null pour un particulier, qui n'est jamais nommé.","anyOf":[{"type":"object","properties":{"type_vendeur":{"type":"string","enum":["professionnel","particulier","inconnu"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"retiree_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"baisses":{"description":"Baisses de prix relevées sur l'annonce, hors aberrations (chute de plus de moitié, facteur 10).","type":"array","items":{"type":"object","properties":{"le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"de":{"type":"number"},"a":{"type":"number"},"ecart_pct":{"description":"Écart en %, négatif pour une baisse.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["le","de","a","ecart_pct"],"additionalProperties":false}},"methode":{"description":"Comment l'annonce est rattachée à l'adresse.","type":"string","enum":["concordante","empreinte_adresse","empreinte_dpe","position"]},"confiance":{"description":"Confiance du rattachement, de 0 à 1, quand la méthode en donne une.","anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance entre la position résolue de l'annonce et l'adresse (méthode position).","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","source","lien","active","prix","surface_m2","type_bien","type_vendeur","annonceur","parue_le","retiree_le","baisses","methode","confiance","distance_m","qualite"],"additionalProperties":false}},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","deja_en_vente","mise_en_vente_le","derniere_parution_le","annonces","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"annonces_adresse"}},"/parcelles/{id_parcelle}":{"get":{"operationId":"parcelle","summary":"Parcelle cadastrale et ce qui s'y rattache","description":"Une parcelle cadastrale, par son identifiant à 14 caractères ou par la clé BAN d'une adresse : contenance, section, numéro et géométrie (API Carto de l'IGN, en direct), adresses BAN rattachées, ventes DVF de la parcelle, autorisations d'urbanisme Sitadel qui la citent (demandeur personne morale nommé), copropriétés qui la citent et zone du document d'urbanisme à son point intérieur. Par une clé BAN, la parcelle servie est la première de l'adresse, ou celle qui contient le numéro, et la réponse liste les autres. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id_parcelle","in":"path","required":true,"schema":{"description":"Identifiant cadastral de la parcelle sur 14 caractères : code INSEE, préfixe, section et numéro, ex. 35238000AB0123.","type":"string","pattern":"^(?:\\d{2}|2[ABab])\\d{3}\\d{3}[0-9A-Za-z]{2}\\d{4}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id_parcelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefixe":{"description":"Préfixe de la commune absorbée ; 000 sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"contenance_m2":{"description":"Contenance cadastrale (surface du terrain), en m².","anyOf":[{"type":"number"},{"type":"null"}]},"geometrie":{"description":"Géométrie GeoJSON de la parcelle (WGS 84).","type":"object","properties":{"type":{"type":"string","enum":["Polygon","MultiPolygon"]},"coordinates":{"description":"Coordonnées GeoJSON, en degrés (longitude, latitude).","type":"array","items":{}}},"required":["type","coordinates"],"additionalProperties":false},"centre":{"description":"Point intérieur de la parcelle.","type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},"parcelles_adresse":{"description":"Toutes les parcelles de l'adresse, quand la parcelle est demandée par une clé BAN ; null sinon.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"adresses":{"description":"Adresses BAN rattachées à la parcelle.","type":"array","items":{"type":"object","properties":{"cle_ban":{"type":"string"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cle_ban","adresse"],"additionalProperties":false}},"ventes":{"description":"Ventes DVF de la parcelle (2021 à 2025), une ligne par local ou culture de la mutation.","type":"array","items":{"type":"object","properties":{"id_mutation":{"type":"string"},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_local":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_bati_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"nombre_lots":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_atypique":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","type_local","surface_bati_m2","surface_terrain_m2","nombre_lots","prix_atypique"],"additionalProperties":false}},"permis":{"description":"Autorisations d'urbanisme Sitadel dont le dossier cite la parcelle.","type":"array","items":{"type":"object","properties":{"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demandeur":{"description":"Le demandeur personne morale ; null pour une personne physique, jamais nommée.","anyOf":[{"type":"object","properties":{"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren"],"additionalProperties":false},{"type":"null"}]}},"required":["numero","type","date","nature","logements","demandeur"],"additionalProperties":false}},"coproprietes":{"description":"Copropriétés du Registre national qui citent la parcelle.","type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"nom_usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["numero","nom_usage","lots_total","lots_habitation"],"additionalProperties":false}},"zone_plu":{"description":"Zone du document d'urbanisme au point intérieur de la parcelle (Géoportail de l'urbanisme) ; null hors zonage connu.","anyOf":[{"type":"object","properties":{"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["libelle","type","document"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id_parcelle","insee","prefixe","section","numero","commune","contenance_m2","geometrie","centre","parcelles_adresse","adresses","ventes","permis","coproprietes","zone_plu","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"parcelle"}},"/adresses/{cle_ban}/parcelles":{"get":{"operationId":"parcelle_2","summary":"Parcelle cadastrale et ce qui s'y rattache","description":"Une parcelle cadastrale, par son identifiant à 14 caractères ou par la clé BAN d'une adresse : contenance, section, numéro et géométrie (API Carto de l'IGN, en direct), adresses BAN rattachées, ventes DVF de la parcelle, autorisations d'urbanisme Sitadel qui la citent (demandeur personne morale nommé), copropriétés qui la citent et zone du document d'urbanisme à son point intérieur. Par une clé BAN, la parcelle servie est la première de l'adresse, ou celle qui contient le numéro, et la réponse liste les autres. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id_parcelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefixe":{"description":"Préfixe de la commune absorbée ; 000 sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"contenance_m2":{"description":"Contenance cadastrale (surface du terrain), en m².","anyOf":[{"type":"number"},{"type":"null"}]},"geometrie":{"description":"Géométrie GeoJSON de la parcelle (WGS 84).","type":"object","properties":{"type":{"type":"string","enum":["Polygon","MultiPolygon"]},"coordinates":{"description":"Coordonnées GeoJSON, en degrés (longitude, latitude).","type":"array","items":{}}},"required":["type","coordinates"],"additionalProperties":false},"centre":{"description":"Point intérieur de la parcelle.","type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},"parcelles_adresse":{"description":"Toutes les parcelles de l'adresse, quand la parcelle est demandée par une clé BAN ; null sinon.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"adresses":{"description":"Adresses BAN rattachées à la parcelle.","type":"array","items":{"type":"object","properties":{"cle_ban":{"type":"string"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cle_ban","adresse"],"additionalProperties":false}},"ventes":{"description":"Ventes DVF de la parcelle (2021 à 2025), une ligne par local ou culture de la mutation.","type":"array","items":{"type":"object","properties":{"id_mutation":{"type":"string"},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_local":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_bati_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"nombre_lots":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_atypique":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","type_local","surface_bati_m2","surface_terrain_m2","nombre_lots","prix_atypique"],"additionalProperties":false}},"permis":{"description":"Autorisations d'urbanisme Sitadel dont le dossier cite la parcelle.","type":"array","items":{"type":"object","properties":{"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demandeur":{"description":"Le demandeur personne morale ; null pour une personne physique, jamais nommée.","anyOf":[{"type":"object","properties":{"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren"],"additionalProperties":false},{"type":"null"}]}},"required":["numero","type","date","nature","logements","demandeur"],"additionalProperties":false}},"coproprietes":{"description":"Copropriétés du Registre national qui citent la parcelle.","type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"nom_usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["numero","nom_usage","lots_total","lots_habitation"],"additionalProperties":false}},"zone_plu":{"description":"Zone du document d'urbanisme au point intérieur de la parcelle (Géoportail de l'urbanisme) ; null hors zonage connu.","anyOf":[{"type":"object","properties":{"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["libelle","type","document"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id_parcelle","insee","prefixe","section","numero","commune","contenance_m2","geometrie","centre","parcelles_adresse","adresses","ventes","permis","coproprietes","zone_plu","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"parcelle"}},"/batiments":{"get":{"operationId":"batiments","summary":"Bâtiments autour d'un point ou sur une parcelle","description":"Les bâtiments de la BD TOPO de l'IGN (service WFS de la Géoplateforme, en direct) autour d'un point, dans un rayon de 200 m au plus (50 m par défaut), ou sur une parcelle cadastrale : niveaux (estimés sur la hauteur quand la BD TOPO ne les donne pas, et la réponse le dit), hauteur, usage, nature, nombre de logements, emprise au sol et adresse BAN la plus proche. Avec un étage, chaque bâtiment dit s'il compte assez de niveaux. Coût : 2 crédits par appel réussi.","parameters":[{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude en degrés décimaux (WGS 84).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude en degrés décimaux (WGS 84).","type":"number","minimum":-180,"maximum":180}},{"name":"rayon_m","in":"query","required":false,"schema":{"description":"Rayon de recherche autour du point, en mètres.","type":"integer","minimum":1,"maximum":200}},{"name":"etage","in":"query","required":false,"schema":{"description":"Étage d'un logement : chaque bâtiment dit s'il compte assez de niveaux.","type":"integer","minimum":0,"maximum":80}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"batiments":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant BD TOPO du bâtiment.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN de l'adresse la plus proche (dans le bâtiment, sinon à 30 m au plus).","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"niveaux":{"description":"Nombre d'étages de la BD TOPO, sinon estimé sur la hauteur (3 m par niveau).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"niveaux_estimes":{"description":"Vrai quand les niveaux sont estimés sur la hauteur.","type":"boolean"},"hauteur_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"emprise_m2":{"description":"Emprise au sol, calculée sur la géométrie BD TOPO.","anyOf":[{"type":"number"},{"type":"null"}]},"compatible_etage":{"description":"Avec le paramètre etage : vrai si le bâtiment compte au moins autant de niveaux que l'étage demandé (la BD TOPO peut sous-estimer les niveaux) ; null sans etage ou sans niveaux.","anyOf":[{"type":"boolean"},{"type":"null"}]},"distance_m":{"description":"Distance du centre du bâtiment au point demandé (recherche par point).","anyOf":[{"type":"number"},{"type":"null"}]},"part_sur_parcelle":{"description":"Part de l'emprise sur la parcelle, de 0 à 1 (recherche par parcelle).","anyOf":[{"type":"number"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cle_ban","adresse","niveaux","niveaux_estimes","hauteur_m","usage","nature","logements","emprise_m2","compatible_etage","distance_m","part_sur_parcelle","lat","lon"],"additionalProperties":false}},"tronque":{"description":"Vrai si la zone compte plus de bâtiments que ceux lus.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["batiments","tronque","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"batiments"}},"/parcelles/{id_parcelle}/batiments":{"get":{"operationId":"batiments_2","summary":"Bâtiments autour d'un point ou sur une parcelle","description":"Les bâtiments de la BD TOPO de l'IGN (service WFS de la Géoplateforme, en direct) autour d'un point, dans un rayon de 200 m au plus (50 m par défaut), ou sur une parcelle cadastrale : niveaux (estimés sur la hauteur quand la BD TOPO ne les donne pas, et la réponse le dit), hauteur, usage, nature, nombre de logements, emprise au sol et adresse BAN la plus proche. Avec un étage, chaque bâtiment dit s'il compte assez de niveaux. Coût : 2 crédits par appel réussi.","parameters":[{"name":"id_parcelle","in":"path","required":true,"schema":{"description":"Identifiant cadastral de la parcelle sur 14 caractères : code INSEE, préfixe, section et numéro, ex. 35238000AB0123.","type":"string","pattern":"^(?:\\d{2}|2[ABab])\\d{3}\\d{3}[0-9A-Za-z]{2}\\d{4}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"batiments":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant BD TOPO du bâtiment.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN de l'adresse la plus proche (dans le bâtiment, sinon à 30 m au plus).","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"niveaux":{"description":"Nombre d'étages de la BD TOPO, sinon estimé sur la hauteur (3 m par niveau).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"niveaux_estimes":{"description":"Vrai quand les niveaux sont estimés sur la hauteur.","type":"boolean"},"hauteur_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"emprise_m2":{"description":"Emprise au sol, calculée sur la géométrie BD TOPO.","anyOf":[{"type":"number"},{"type":"null"}]},"compatible_etage":{"description":"Avec le paramètre etage : vrai si le bâtiment compte au moins autant de niveaux que l'étage demandé (la BD TOPO peut sous-estimer les niveaux) ; null sans etage ou sans niveaux.","anyOf":[{"type":"boolean"},{"type":"null"}]},"distance_m":{"description":"Distance du centre du bâtiment au point demandé (recherche par point).","anyOf":[{"type":"number"},{"type":"null"}]},"part_sur_parcelle":{"description":"Part de l'emprise sur la parcelle, de 0 à 1 (recherche par parcelle).","anyOf":[{"type":"number"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","cle_ban","adresse","niveaux","niveaux_estimes","hauteur_m","usage","nature","logements","emprise_m2","compatible_etage","distance_m","part_sur_parcelle","lat","lon"],"additionalProperties":false}},"tronque":{"description":"Vrai si la zone compte plus de bâtiments que ceux lus.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["batiments","tronque","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"batiments"}},"/coproprietes":{"get":{"operationId":"coproprietes","summary":"Copropriétés du Registre national","description":"Les copropriétés immatriculées au Registre national des copropriétés, par numéro d'immatriculation, par la clé BAN d'une adresse (immatriculation portée par le DPE, sinon parcelle commune, sinon position à 30 m au plus), ou par filtres (commune, code postal, ou point et rayon, puis nombre de lots, type de syndic, copropriété aidée) : adresse et nom d'usage, lots (total, habitation, stationnement), période de construction, syndic professionnel nommé (raison sociale, SIRET, APE), mandat en cours et fin du dernier mandat, parcelles, dispositifs publics et aide. Le représentant d'un syndic bénévole n'est jamais servi. L'agrégat de la commune accompagne la liste. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude en degrés décimaux (WGS 84).","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude en degrés décimaux (WGS 84).","type":"number","minimum":-180,"maximum":180}},{"name":"rayon_m","in":"query","required":false,"schema":{"description":"Rayon autour du point, en mètres.","type":"integer","minimum":10,"maximum":3000}},{"name":"lots_min","in":"query","required":false,"schema":{"description":"Nombre total de lots, au moins.","type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"lots_max","in":"query","required":false,"schema":{"description":"Nombre total de lots, au plus.","type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"type_syndic","in":"query","required":false,"schema":{"type":"string","enum":["professionnel","benevole","non_renseigne"]}},{"name":"aidee","in":"query","required":false,"schema":{"description":"true : seulement les copropriétés aidées ; false : seulement les autres.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"immatriculee_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nom_usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point ou à l'adresse demandés, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation_bureaux_commerces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_stationnement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"reglement_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"syndic":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"raison_sociale":{"description":"Raison sociale d'un syndic professionnel ; null pour un syndic bénévole ou coopératif, dont le représentant n'est jamais servi.","anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat_en_cours":{"anyOf":[{"type":"string"},{"type":"null"}]},"fin_mandat":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["type","raison_sociale","siret","ape","mandat_en_cours","fin_mandat"],"additionalProperties":false},"parcelles":{"type":"array","items":{"type":"string"}},"dispositifs":{"description":"Dispositifs publics : acv (Action cœur de ville), pvd (Petites villes de demain), qpv (quartier prioritaire), plan_sauvegarde.","type":"array","items":{"type":"string"}},"aidee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qp":{"description":"Quartier prioritaire de la politique de la ville (2024).","anyOf":[{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nom"],"additionalProperties":false},{"type":"null"}]},"residence_service":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"syndicat_cooperatif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rattachement":{"description":"Par une clé BAN : comment la copropriété est rattachée à l'adresse (immatriculation portée par le DPE, parcelle commune, position à 30 m au plus).","anyOf":[{"type":"object","properties":{"methode":{"type":"string","enum":["dpe","parcelle","position"]},"distance_m":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["methode","distance_m"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero","immatriculee_le","maj_le","nom_usage","adresse","code_postal","insee","commune","lat","lon","distance_m","lots_total","lots_habitation","lots_habitation_bureaux_commerces","lots_stationnement","periode_construction","reglement_le","syndic","parcelles","dispositifs","aidee","qp","residence_service","syndicat_cooperatif","rattachement","qualite"],"additionalProperties":false}},"commune":{"description":"L'agrégat de la commune, quand la recherche porte sur une seule commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"copros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sans_mandat":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"aidees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plan_sauvegarde":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"syndic_benevole":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["insee","copros","lots_total","lots_habitation","sans_mandat","aidees","plan_sauvegarde","syndic_benevole","donnees_du"],"additionalProperties":false},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","commune","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"coproprietes"}},"/coproprietes/{numero}":{"get":{"operationId":"coproprietes_2","summary":"Copropriétés du Registre national","description":"Les copropriétés immatriculées au Registre national des copropriétés, par numéro d'immatriculation, par la clé BAN d'une adresse (immatriculation portée par le DPE, sinon parcelle commune, sinon position à 30 m au plus), ou par filtres (commune, code postal, ou point et rayon, puis nombre de lots, type de syndic, copropriété aidée) : adresse et nom d'usage, lots (total, habitation, stationnement), période de construction, syndic professionnel nommé (raison sociale, SIRET, APE), mandat en cours et fin du dernier mandat, parcelles, dispositifs publics et aide. Le représentant d'un syndic bénévole n'est jamais servi. L'agrégat de la commune accompagne la liste. Coût : 1 crédit par élément rendu.","parameters":[{"name":"numero","in":"path","required":true,"schema":{"description":"Numéro d'immatriculation de la copropriété au Registre national des copropriétés, 9 caractères, ex. AA1234567.","type":"string","pattern":"^[0-9A-Za-z]{9}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"immatriculee_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nom_usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point ou à l'adresse demandés, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation_bureaux_commerces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_stationnement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"reglement_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"syndic":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"raison_sociale":{"description":"Raison sociale d'un syndic professionnel ; null pour un syndic bénévole ou coopératif, dont le représentant n'est jamais servi.","anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat_en_cours":{"anyOf":[{"type":"string"},{"type":"null"}]},"fin_mandat":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["type","raison_sociale","siret","ape","mandat_en_cours","fin_mandat"],"additionalProperties":false},"parcelles":{"type":"array","items":{"type":"string"}},"dispositifs":{"description":"Dispositifs publics : acv (Action cœur de ville), pvd (Petites villes de demain), qpv (quartier prioritaire), plan_sauvegarde.","type":"array","items":{"type":"string"}},"aidee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qp":{"description":"Quartier prioritaire de la politique de la ville (2024).","anyOf":[{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nom"],"additionalProperties":false},{"type":"null"}]},"residence_service":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"syndicat_cooperatif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rattachement":{"description":"Par une clé BAN : comment la copropriété est rattachée à l'adresse (immatriculation portée par le DPE, parcelle commune, position à 30 m au plus).","anyOf":[{"type":"object","properties":{"methode":{"type":"string","enum":["dpe","parcelle","position"]},"distance_m":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["methode","distance_m"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero","immatriculee_le","maj_le","nom_usage","adresse","code_postal","insee","commune","lat","lon","distance_m","lots_total","lots_habitation","lots_habitation_bureaux_commerces","lots_stationnement","periode_construction","reglement_le","syndic","parcelles","dispositifs","aidee","qp","residence_service","syndicat_cooperatif","rattachement","qualite"],"additionalProperties":false}},"commune":{"description":"L'agrégat de la commune, quand la recherche porte sur une seule commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"copros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sans_mandat":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"aidees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plan_sauvegarde":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"syndic_benevole":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["insee","copros","lots_total","lots_habitation","sans_mandat","aidees","plan_sauvegarde","syndic_benevole","donnees_du"],"additionalProperties":false},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","commune","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"coproprietes"}},"/adresses/{cle_ban}/copropriete":{"get":{"operationId":"coproprietes_3","summary":"Copropriétés du Registre national","description":"Les copropriétés immatriculées au Registre national des copropriétés, par numéro d'immatriculation, par la clé BAN d'une adresse (immatriculation portée par le DPE, sinon parcelle commune, sinon position à 30 m au plus), ou par filtres (commune, code postal, ou point et rayon, puis nombre de lots, type de syndic, copropriété aidée) : adresse et nom d'usage, lots (total, habitation, stationnement), période de construction, syndic professionnel nommé (raison sociale, SIRET, APE), mandat en cours et fin du dernier mandat, parcelles, dispositifs publics et aide. Le représentant d'un syndic bénévole n'est jamais servi. L'agrégat de la commune accompagne la liste. Coût : 1 crédit par élément rendu.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"immatriculee_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"nom_usage":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point ou à l'adresse demandés, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation_bureaux_commerces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_stationnement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"reglement_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"syndic":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"raison_sociale":{"description":"Raison sociale d'un syndic professionnel ; null pour un syndic bénévole ou coopératif, dont le représentant n'est jamais servi.","anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"anyOf":[{"type":"string"},{"type":"null"}]},"mandat_en_cours":{"anyOf":[{"type":"string"},{"type":"null"}]},"fin_mandat":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["type","raison_sociale","siret","ape","mandat_en_cours","fin_mandat"],"additionalProperties":false},"parcelles":{"type":"array","items":{"type":"string"}},"dispositifs":{"description":"Dispositifs publics : acv (Action cœur de ville), pvd (Petites villes de demain), qpv (quartier prioritaire), plan_sauvegarde.","type":"array","items":{"type":"string"}},"aidee":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qp":{"description":"Quartier prioritaire de la politique de la ville (2024).","anyOf":[{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nom"],"additionalProperties":false},{"type":"null"}]},"residence_service":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"syndicat_cooperatif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rattachement":{"description":"Par une clé BAN : comment la copropriété est rattachée à l'adresse (immatriculation portée par le DPE, parcelle commune, position à 30 m au plus).","anyOf":[{"type":"object","properties":{"methode":{"type":"string","enum":["dpe","parcelle","position"]},"distance_m":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["methode","distance_m"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero","immatriculee_le","maj_le","nom_usage","adresse","code_postal","insee","commune","lat","lon","distance_m","lots_total","lots_habitation","lots_habitation_bureaux_commerces","lots_stationnement","periode_construction","reglement_le","syndic","parcelles","dispositifs","aidee","qp","residence_service","syndicat_cooperatif","rattachement","qualite"],"additionalProperties":false}},"commune":{"description":"L'agrégat de la commune, quand la recherche porte sur une seule commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"copros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sans_mandat":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"aidees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plan_sauvegarde":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"syndic_benevole":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["insee","copros","lots_total","lots_habitation","sans_mandat","aidees","plan_sauvegarde","syndic_benevole","donnees_du"],"additionalProperties":false},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","commune","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"coproprietes"}},"/adresses/{cle_ban}/ventes":{"get":{"operationId":"ventes_adresse","summary":"DVF à l'adresse : toutes les mutations","description":"Toutes les mutations DVF enregistrées à une adresse de la Base Adresse Nationale (par sa clé), ou à une parcelle cadastrale, regroupées par mutation. Les ventes de 2021 et suivantes sont lues au numéro (code de voie et numéro DVF), sinon aux parcelles de l'adresse ; celles de 2018 à 2020, dont le fichier n'a ni adresse ni parcelle, sont rapprochées par position autour du numéro. Pour chaque mutation : date, nature, valeur foncière, adresse DVF, locaux (type, surface bâtie, pièces, lots et surfaces Carrez), terrains, parcelles, volumes, position. Le prix au m² est recalculé à la mutation sur la surface de ses logements, avec sa qualité : vente en bloc, dépendance, local professionnel, prix atypique et son motif, rattachement incertain. Aucune vente : 404 ressource_absente, rien n'est débité. L'Alsace-Moselle (livre foncier) n'est pas dans DVF. Coût : 5 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne garder que les mutations à partir de cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"Ne garder que les mutations jusqu'à cette date comprise (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"inclure_2018_2020","in":"query","required":false,"schema":{"description":"Ajouter les ventes de 2018 à 2020 rapprochées par position (adresse seulement). Vrai par défaut.","default":true,"anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"rayon_position_m","in":"query","required":false,"schema":{"description":"Rayon du rapprochement par position des ventes de 2018 à 2020, en mètres (15 par défaut, 100 au plus).","default":15,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une demande par parcelle.","anyOf":[{"type":"string"},{"type":"null"}]},"id_parcelle":{"description":"Parcelle demandée ; null pour une demande par adresse.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement":{"description":"Comment les ventes 2021 et suivantes ont été trouvées : au numéro, sinon aux parcelles de l'adresse ; null si aucune.","anyOf":[{"type":"string","enum":["numero","parcelle","position"]},{"type":"null"}]},"adresse":{"description":"L'adresse résolue (Base Adresse Nationale et faits Pillr de l'adresse) ; null pour une demande par parcelle.","anyOf":[{"type":"object","properties":{"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","voie","code_postal","insee","commune","lat","lon"],"additionalProperties":false},{"type":"null"}]},"parcelles_lues":{"description":"Parcelles lues pour le rattachement par parcelle.","type":"array","items":{"type":"string"}},"mutations":{"description":"Toutes les mutations, la plus récente d'abord.","type":"array","items":{"type":"object","properties":{"id_mutation":{"description":"Identifiant DVF de la mutation ; null pour une vente de 2018 à 2020 (fichier sans identifiant).","anyOf":[{"type":"string"},{"type":"null"}]},"date":{"description":"Date de la mutation (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"nature":{"description":"Nature de la mutation : Vente, Vente en l'état futur d'achèvement, Adjudication, Échange...","anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"description":"Valeur foncière de la mutation entière, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"adresse":{"description":"Adresse DVF de la mutation (celle de ses logements d'abord) ; null quand DVF n'en donne pas.","anyOf":[{"type":"object","properties":{"numero":{"description":"Numéro dans la voie, suffixe compris (« 12 bis »), tel que DVF l'écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"description":"Libellé DVF de la voie, souvent abrégé.","anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"description":"Code FANTOIR de la voie, le même que dans la clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN reconstituée depuis la commune, le code de voie et le numéro DVF : elle peut ne pas exister dans la Base Adresse Nationale.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["numero","voie","code_voie","cle_ban"],"additionalProperties":false},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"nb_dispositions":{"description":"Dispositions de l'acte (une vente peut en compter plusieurs).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"locaux":{"description":"Locaux de la mutation, lus une fois par parcelle.","type":"array","items":{"type":"object","properties":{"type":{"description":"Type de local DVF : Appartement, Maison, Dépendance, Local industriel. commercial ou assimilé.","type":"string"},"surface_bati":{"description":"Surface réelle bâtie du local, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"description":"Nombre de pièces principales.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots":{"description":"Lots déclarés sur la ligne du local (cinq au plus dans DVF).","type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro du lot de copropriété.","type":"string"},"carrez":{"description":"Surface Carrez du lot, en m² ; null quand elle n'est pas déclarée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","carrez"],"additionalProperties":false}}},"required":["type","surface_bati","pieces","id_parcelle","lots"],"additionalProperties":false}},"nombre_lots":{"description":"Lots de copropriété déclarés dans la mutation.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"terrains":{"description":"Terrains de la mutation, par parcelle et nature de culture.","type":"array","items":{"type":"object","properties":{"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture":{"description":"Nature de culture du terrain (sols, jardins, terres...).","anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture_speciale":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"description":"Surface du terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id_parcelle","nature_culture","nature_culture_speciale","surface"],"additionalProperties":false}},"surface_terrain":{"description":"Somme des surfaces de terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales de la mutation.","type":"array","items":{"type":"string"}},"volumes":{"description":"Numéros de volume (division en volumes), s'il y en a.","type":"array","items":{"type":"string"}},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_logements":{"description":"Surface bâtie des appartements et maisons, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Valeur foncière rapportée à la surface bâtie des logements, en euros par m², arrondie ; null sans logement. Recalculé à la mutation, jamais à la ligne.","anyOf":[{"type":"number"},{"type":"null"}]},"indicateurs":{"type":"object","properties":{"logements":{"description":"Appartements et maisons de la mutation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vente_en_bloc":{"description":"Plus d'un logement : le prix au m² porte sur l'ensemble des logements.","type":"boolean"},"avec_dependance":{"description":"La mutation comprend une dépendance (cave, parking, garage).","type":"boolean"},"avec_local_pro":{"description":"La mutation comprend un local industriel, commercial ou assimilé.","type":"boolean"},"prix_atypique":{"description":"Surface ou prix au m² hors des bornes du barème Pillr : à lire avec prudence.","type":"boolean"},"motif":{"description":"Pourquoi le prix est atypique ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logements","vente_en_bloc","avec_dependance","avec_local_pro","prix_atypique","motif"],"additionalProperties":false},"qualite":{"description":"Qualité du prix au m² de cette vente : une observation, ses drapeaux et sa méthode.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"millesime":{"description":"Millésime du fichier DVF qui porte la mutation.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement":{"description":"numero : la vente porte le code de voie et le numéro de l'adresse ; parcelle : elle porte une parcelle de l'adresse ; position : vente de 2018 à 2020 rapprochée par sa position.","type":"string","enum":["numero","parcelle","position"]},"distance_m":{"description":"Distance entre la vente et l'adresse demandée, en mètres ; null sans position.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","adresse","code_postal","insee","nb_dispositions","locaux","nombre_lots","terrains","surface_terrain","parcelles","volumes","lat","lon","surface_logements","prix_m2","indicateurs","qualite","millesime","rattachement","distance_m"],"additionalProperties":false}},"resume":{"type":"object","properties":{"n":{"description":"Mutations servies.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_2021_et_apres":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_2018_2020":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere":{"description":"La mutation la plus récente.","anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix","prix_m2"],"additionalProperties":false},{"type":"null"}]}},"required":["n","n_2021_et_apres","n_2018_2020","derniere"],"additionalProperties":false},"millesimes":{"description":"Premier et dernier millésimes DVF des mutations servies.","type":"object","properties":{"premier":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["premier","dernier"],"additionalProperties":false},"donnees_du":{"description":"Date de chargement des lignes DVF servies (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"description":"Ce que la réponse ne couvre pas, en clair.","type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","id_parcelle","rattachement","adresse","parcelles_lues","mutations","resume","millesimes","donnees_du","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes_adresse"}},"/parcelles/{id_parcelle}/ventes":{"get":{"operationId":"ventes_adresse_2","summary":"DVF à l'adresse : toutes les mutations","description":"Toutes les mutations DVF enregistrées à une adresse de la Base Adresse Nationale (par sa clé), ou à une parcelle cadastrale, regroupées par mutation. Les ventes de 2021 et suivantes sont lues au numéro (code de voie et numéro DVF), sinon aux parcelles de l'adresse ; celles de 2018 à 2020, dont le fichier n'a ni adresse ni parcelle, sont rapprochées par position autour du numéro. Pour chaque mutation : date, nature, valeur foncière, adresse DVF, locaux (type, surface bâtie, pièces, lots et surfaces Carrez), terrains, parcelles, volumes, position. Le prix au m² est recalculé à la mutation sur la surface de ses logements, avec sa qualité : vente en bloc, dépendance, local professionnel, prix atypique et son motif, rattachement incertain. Aucune vente : 404 ressource_absente, rien n'est débité. L'Alsace-Moselle (livre foncier) n'est pas dans DVF. Coût : 5 crédits par appel réussi.","parameters":[{"name":"id_parcelle","in":"path","required":true,"schema":{"description":"Identifiant de parcelle cadastrale à 14 caractères, ex. 35238000AB0123.","type":"string","pattern":"^[0-9][0-9ABab][0-9]{3}[0-9]{3}[0-9A-Za-z]{2}[0-9]{4}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une demande par parcelle.","anyOf":[{"type":"string"},{"type":"null"}]},"id_parcelle":{"description":"Parcelle demandée ; null pour une demande par adresse.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement":{"description":"Comment les ventes 2021 et suivantes ont été trouvées : au numéro, sinon aux parcelles de l'adresse ; null si aucune.","anyOf":[{"type":"string","enum":["numero","parcelle","position"]},{"type":"null"}]},"adresse":{"description":"L'adresse résolue (Base Adresse Nationale et faits Pillr de l'adresse) ; null pour une demande par parcelle.","anyOf":[{"type":"object","properties":{"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","voie","code_postal","insee","commune","lat","lon"],"additionalProperties":false},{"type":"null"}]},"parcelles_lues":{"description":"Parcelles lues pour le rattachement par parcelle.","type":"array","items":{"type":"string"}},"mutations":{"description":"Toutes les mutations, la plus récente d'abord.","type":"array","items":{"type":"object","properties":{"id_mutation":{"description":"Identifiant DVF de la mutation ; null pour une vente de 2018 à 2020 (fichier sans identifiant).","anyOf":[{"type":"string"},{"type":"null"}]},"date":{"description":"Date de la mutation (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"nature":{"description":"Nature de la mutation : Vente, Vente en l'état futur d'achèvement, Adjudication, Échange...","anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"description":"Valeur foncière de la mutation entière, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"adresse":{"description":"Adresse DVF de la mutation (celle de ses logements d'abord) ; null quand DVF n'en donne pas.","anyOf":[{"type":"object","properties":{"numero":{"description":"Numéro dans la voie, suffixe compris (« 12 bis »), tel que DVF l'écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"description":"Libellé DVF de la voie, souvent abrégé.","anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"description":"Code FANTOIR de la voie, le même que dans la clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN reconstituée depuis la commune, le code de voie et le numéro DVF : elle peut ne pas exister dans la Base Adresse Nationale.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["numero","voie","code_voie","cle_ban"],"additionalProperties":false},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"nb_dispositions":{"description":"Dispositions de l'acte (une vente peut en compter plusieurs).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"locaux":{"description":"Locaux de la mutation, lus une fois par parcelle.","type":"array","items":{"type":"object","properties":{"type":{"description":"Type de local DVF : Appartement, Maison, Dépendance, Local industriel. commercial ou assimilé.","type":"string"},"surface_bati":{"description":"Surface réelle bâtie du local, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"description":"Nombre de pièces principales.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots":{"description":"Lots déclarés sur la ligne du local (cinq au plus dans DVF).","type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro du lot de copropriété.","type":"string"},"carrez":{"description":"Surface Carrez du lot, en m² ; null quand elle n'est pas déclarée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","carrez"],"additionalProperties":false}}},"required":["type","surface_bati","pieces","id_parcelle","lots"],"additionalProperties":false}},"nombre_lots":{"description":"Lots de copropriété déclarés dans la mutation.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"terrains":{"description":"Terrains de la mutation, par parcelle et nature de culture.","type":"array","items":{"type":"object","properties":{"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture":{"description":"Nature de culture du terrain (sols, jardins, terres...).","anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture_speciale":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"description":"Surface du terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id_parcelle","nature_culture","nature_culture_speciale","surface"],"additionalProperties":false}},"surface_terrain":{"description":"Somme des surfaces de terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales de la mutation.","type":"array","items":{"type":"string"}},"volumes":{"description":"Numéros de volume (division en volumes), s'il y en a.","type":"array","items":{"type":"string"}},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_logements":{"description":"Surface bâtie des appartements et maisons, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Valeur foncière rapportée à la surface bâtie des logements, en euros par m², arrondie ; null sans logement. Recalculé à la mutation, jamais à la ligne.","anyOf":[{"type":"number"},{"type":"null"}]},"indicateurs":{"type":"object","properties":{"logements":{"description":"Appartements et maisons de la mutation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vente_en_bloc":{"description":"Plus d'un logement : le prix au m² porte sur l'ensemble des logements.","type":"boolean"},"avec_dependance":{"description":"La mutation comprend une dépendance (cave, parking, garage).","type":"boolean"},"avec_local_pro":{"description":"La mutation comprend un local industriel, commercial ou assimilé.","type":"boolean"},"prix_atypique":{"description":"Surface ou prix au m² hors des bornes du barème Pillr : à lire avec prudence.","type":"boolean"},"motif":{"description":"Pourquoi le prix est atypique ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logements","vente_en_bloc","avec_dependance","avec_local_pro","prix_atypique","motif"],"additionalProperties":false},"qualite":{"description":"Qualité du prix au m² de cette vente : une observation, ses drapeaux et sa méthode.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"millesime":{"description":"Millésime du fichier DVF qui porte la mutation.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement":{"description":"numero : la vente porte le code de voie et le numéro de l'adresse ; parcelle : elle porte une parcelle de l'adresse ; position : vente de 2018 à 2020 rapprochée par sa position.","type":"string","enum":["numero","parcelle","position"]},"distance_m":{"description":"Distance entre la vente et l'adresse demandée, en mètres ; null sans position.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","adresse","code_postal","insee","nb_dispositions","locaux","nombre_lots","terrains","surface_terrain","parcelles","volumes","lat","lon","surface_logements","prix_m2","indicateurs","qualite","millesime","rattachement","distance_m"],"additionalProperties":false}},"resume":{"type":"object","properties":{"n":{"description":"Mutations servies.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_2021_et_apres":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_2018_2020":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere":{"description":"La mutation la plus récente.","anyOf":[{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix","prix_m2"],"additionalProperties":false},{"type":"null"}]}},"required":["n","n_2021_et_apres","n_2018_2020","derniere"],"additionalProperties":false},"millesimes":{"description":"Premier et dernier millésimes DVF des mutations servies.","type":"object","properties":{"premier":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["premier","dernier"],"additionalProperties":false},"donnees_du":{"description":"Date de chargement des lignes DVF servies (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"description":"Ce que la réponse ne couvre pas, en clair.","type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","id_parcelle","rattachement","adresse","parcelles_lues","mutations","resume","millesimes","donnees_du","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes_adresse"}},"/ventes":{"get":{"operationId":"ventes","summary":"Ventes DVF autour d'un point, dans une commune ou par mutation","description":"Les mutations DVF une par une, avec toutes leurs lignes, leur adresse DVF, leurs lots, leurs parcelles et leur position : autour d'un point (rayon de 2000 m au plus), dans une commune (l'arrondissement à Paris, Lyon et Marseille), ou par identifiant de mutation. Filtres : type de local, nature de la mutation, période, surface des logements, valeur foncière. Tri par date (le plus récent d'abord) ou par distance. Le prix au m² est recalculé à la mutation sur la surface de ses logements, avec sa qualité (vente en bloc, prix atypique et son motif). Les filtres de surface et de valeur s'appliquent après lecture : une page peut compter moins de mutations que la limite, curseur_suivant dit s'il en reste. Ventes de 2021 et suivantes ; les lignes d'une mutation situées dans une autre commune ne sont pas relues. Coût : 1 crédit par élément rendu.","parameters":[{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude du point (WGS 84), avec lon.","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude du point (WGS 84), avec lat.","type":"number","minimum":-180,"maximum":180}},{"name":"rayon_m","in":"query","required":false,"schema":{"description":"Rayon autour du point, en mètres (300 par défaut, 2000 au plus).","type":"integer","minimum":10,"maximum":2000}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"type","in":"query","required":false,"schema":{"description":"Ne garder que les mutations qui comptent ce type de local.","type":"string","enum":["appartement","maison","dependance","local"]}},{"name":"nature","in":"query","required":false,"schema":{"description":"Nature de la mutation : vente, vefa, terrain_a_batir, adjudication, echange, expropriation.","type":"string","enum":["vente","vefa","terrain_a_batir","adjudication","echange","expropriation"]}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Mutations à partir de cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"Mutations jusqu'à cette date comprise (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"surface_min","in":"query","required":false,"schema":{"description":"Surface bâtie des logements, minimum, en m².","type":"number","minimum":0}},{"name":"surface_max","in":"query","required":false,"schema":{"description":"Surface bâtie des logements, maximum, en m².","type":"number","minimum":0}},{"name":"prix_min","in":"query","required":false,"schema":{"description":"Valeur foncière de la mutation, minimum, en euros.","type":"number","minimum":0}},{"name":"prix_max","in":"query","required":false,"schema":{"description":"Valeur foncière de la mutation, maximum, en euros.","type":"number","minimum":0}},{"name":"tri","in":"query","required":false,"schema":{"description":"date (le plus récent d'abord) ou distance (autour d'un point seulement). Par défaut : distance autour d'un point, date sinon.","type":"string","enum":["date","distance"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"recherche":{"description":"La recherche servie, telle que lue.","type":"object","properties":{"mode":{"type":"string","enum":["mutation","point","commune"]},"tri":{"type":"string","enum":["date","distance"]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"rayon_m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mode","tri","insee","lat","lon","rayon_m"],"additionalProperties":false},"donnees":{"description":"Les mutations de la page, chacune avec toutes ses lignes et son adresse.","type":"array","items":{"type":"object","properties":{"id_mutation":{"description":"Identifiant DVF de la mutation ; null pour une vente de 2018 à 2020 (fichier sans identifiant).","anyOf":[{"type":"string"},{"type":"null"}]},"date":{"description":"Date de la mutation (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"nature":{"description":"Nature de la mutation : Vente, Vente en l'état futur d'achèvement, Adjudication, Échange...","anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"description":"Valeur foncière de la mutation entière, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"adresse":{"description":"Adresse DVF de la mutation (celle de ses logements d'abord) ; null quand DVF n'en donne pas.","anyOf":[{"type":"object","properties":{"numero":{"description":"Numéro dans la voie, suffixe compris (« 12 bis »), tel que DVF l'écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"description":"Libellé DVF de la voie, souvent abrégé.","anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"description":"Code FANTOIR de la voie, le même que dans la clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN reconstituée depuis la commune, le code de voie et le numéro DVF : elle peut ne pas exister dans la Base Adresse Nationale.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["numero","voie","code_voie","cle_ban"],"additionalProperties":false},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"nb_dispositions":{"description":"Dispositions de l'acte (une vente peut en compter plusieurs).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"locaux":{"description":"Locaux de la mutation, lus une fois par parcelle.","type":"array","items":{"type":"object","properties":{"type":{"description":"Type de local DVF : Appartement, Maison, Dépendance, Local industriel. commercial ou assimilé.","type":"string"},"surface_bati":{"description":"Surface réelle bâtie du local, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"description":"Nombre de pièces principales.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots":{"description":"Lots déclarés sur la ligne du local (cinq au plus dans DVF).","type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro du lot de copropriété.","type":"string"},"carrez":{"description":"Surface Carrez du lot, en m² ; null quand elle n'est pas déclarée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","carrez"],"additionalProperties":false}}},"required":["type","surface_bati","pieces","id_parcelle","lots"],"additionalProperties":false}},"nombre_lots":{"description":"Lots de copropriété déclarés dans la mutation.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"terrains":{"description":"Terrains de la mutation, par parcelle et nature de culture.","type":"array","items":{"type":"object","properties":{"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture":{"description":"Nature de culture du terrain (sols, jardins, terres...).","anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture_speciale":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"description":"Surface du terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id_parcelle","nature_culture","nature_culture_speciale","surface"],"additionalProperties":false}},"surface_terrain":{"description":"Somme des surfaces de terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales de la mutation.","type":"array","items":{"type":"string"}},"volumes":{"description":"Numéros de volume (division en volumes), s'il y en a.","type":"array","items":{"type":"string"}},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_logements":{"description":"Surface bâtie des appartements et maisons, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Valeur foncière rapportée à la surface bâtie des logements, en euros par m², arrondie ; null sans logement. Recalculé à la mutation, jamais à la ligne.","anyOf":[{"type":"number"},{"type":"null"}]},"indicateurs":{"type":"object","properties":{"logements":{"description":"Appartements et maisons de la mutation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vente_en_bloc":{"description":"Plus d'un logement : le prix au m² porte sur l'ensemble des logements.","type":"boolean"},"avec_dependance":{"description":"La mutation comprend une dépendance (cave, parking, garage).","type":"boolean"},"avec_local_pro":{"description":"La mutation comprend un local industriel, commercial ou assimilé.","type":"boolean"},"prix_atypique":{"description":"Surface ou prix au m² hors des bornes du barème Pillr : à lire avec prudence.","type":"boolean"},"motif":{"description":"Pourquoi le prix est atypique ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logements","vente_en_bloc","avec_dependance","avec_local_pro","prix_atypique","motif"],"additionalProperties":false},"qualite":{"description":"Qualité du prix au m² de cette vente : une observation, ses drapeaux et sa méthode.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"millesime":{"description":"Millésime du fichier DVF qui porte la mutation.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres ; null hors d'une recherche autour d'un point.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"iris":{"description":"Code IRIS de la vente (ventes de logement rattachées par Pillr) ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","adresse","code_postal","insee","nb_dispositions","locaux","nombre_lots","terrains","surface_terrain","parcelles","volumes","lat","lon","surface_logements","prix_m2","indicateurs","qualite","millesime","distance_m","iris"],"additionalProperties":false}},"limites":{"description":"Ce que la page ne couvre pas, en clair.","type":"array","items":{"type":"string"}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["recherche","donnees","limites","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes"}},"/ventes/{id_mutation}":{"get":{"operationId":"ventes_2","summary":"Ventes DVF autour d'un point, dans une commune ou par mutation","description":"Les mutations DVF une par une, avec toutes leurs lignes, leur adresse DVF, leurs lots, leurs parcelles et leur position : autour d'un point (rayon de 2000 m au plus), dans une commune (l'arrondissement à Paris, Lyon et Marseille), ou par identifiant de mutation. Filtres : type de local, nature de la mutation, période, surface des logements, valeur foncière. Tri par date (le plus récent d'abord) ou par distance. Le prix au m² est recalculé à la mutation sur la surface de ses logements, avec sa qualité (vente en bloc, prix atypique et son motif). Les filtres de surface et de valeur s'appliquent après lecture : une page peut compter moins de mutations que la limite, curseur_suivant dit s'il en reste. Ventes de 2021 et suivantes ; les lignes d'une mutation situées dans une autre commune ne sont pas relues. Coût : 1 crédit par élément rendu.","parameters":[{"name":"id_mutation","in":"path","required":true,"schema":{"description":"Identifiant DVF de la mutation, ex. 2024-426100.","type":"string","pattern":"^\\d{4}-[0-9A-Za-z]{1,12}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"recherche":{"description":"La recherche servie, telle que lue.","type":"object","properties":{"mode":{"type":"string","enum":["mutation","point","commune"]},"tri":{"type":"string","enum":["date","distance"]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"rayon_m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mode","tri","insee","lat","lon","rayon_m"],"additionalProperties":false},"donnees":{"description":"Les mutations de la page, chacune avec toutes ses lignes et son adresse.","type":"array","items":{"type":"object","properties":{"id_mutation":{"description":"Identifiant DVF de la mutation ; null pour une vente de 2018 à 2020 (fichier sans identifiant).","anyOf":[{"type":"string"},{"type":"null"}]},"date":{"description":"Date de la mutation (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"nature":{"description":"Nature de la mutation : Vente, Vente en l'état futur d'achèvement, Adjudication, Échange...","anyOf":[{"type":"string"},{"type":"null"}]},"valeur_fonciere":{"description":"Valeur foncière de la mutation entière, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"adresse":{"description":"Adresse DVF de la mutation (celle de ses logements d'abord) ; null quand DVF n'en donne pas.","anyOf":[{"type":"object","properties":{"numero":{"description":"Numéro dans la voie, suffixe compris (« 12 bis »), tel que DVF l'écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"description":"Libellé DVF de la voie, souvent abrégé.","anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"description":"Code FANTOIR de la voie, le même que dans la clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"description":"Clé BAN reconstituée depuis la commune, le code de voie et le numéro DVF : elle peut ne pas exister dans la Base Adresse Nationale.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["numero","voie","code_voie","cle_ban"],"additionalProperties":false},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"nb_dispositions":{"description":"Dispositions de l'acte (une vente peut en compter plusieurs).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"locaux":{"description":"Locaux de la mutation, lus une fois par parcelle.","type":"array","items":{"type":"object","properties":{"type":{"description":"Type de local DVF : Appartement, Maison, Dépendance, Local industriel. commercial ou assimilé.","type":"string"},"surface_bati":{"description":"Surface réelle bâtie du local, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"description":"Nombre de pièces principales.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"lots":{"description":"Lots déclarés sur la ligne du local (cinq au plus dans DVF).","type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro du lot de copropriété.","type":"string"},"carrez":{"description":"Surface Carrez du lot, en m² ; null quand elle n'est pas déclarée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero","carrez"],"additionalProperties":false}}},"required":["type","surface_bati","pieces","id_parcelle","lots"],"additionalProperties":false}},"nombre_lots":{"description":"Lots de copropriété déclarés dans la mutation.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"terrains":{"description":"Terrains de la mutation, par parcelle et nature de culture.","type":"array","items":{"type":"object","properties":{"id_parcelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture":{"description":"Nature de culture du terrain (sols, jardins, terres...).","anyOf":[{"type":"string"},{"type":"null"}]},"nature_culture_speciale":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"description":"Surface du terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id_parcelle","nature_culture","nature_culture_speciale","surface"],"additionalProperties":false}},"surface_terrain":{"description":"Somme des surfaces de terrain, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"parcelles":{"description":"Parcelles cadastrales de la mutation.","type":"array","items":{"type":"string"}},"volumes":{"description":"Numéros de volume (division en volumes), s'il y en a.","type":"array","items":{"type":"string"}},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_logements":{"description":"Surface bâtie des appartements et maisons, en m².","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Valeur foncière rapportée à la surface bâtie des logements, en euros par m², arrondie ; null sans logement. Recalculé à la mutation, jamais à la ligne.","anyOf":[{"type":"number"},{"type":"null"}]},"indicateurs":{"type":"object","properties":{"logements":{"description":"Appartements et maisons de la mutation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vente_en_bloc":{"description":"Plus d'un logement : le prix au m² porte sur l'ensemble des logements.","type":"boolean"},"avec_dependance":{"description":"La mutation comprend une dépendance (cave, parking, garage).","type":"boolean"},"avec_local_pro":{"description":"La mutation comprend un local industriel, commercial ou assimilé.","type":"boolean"},"prix_atypique":{"description":"Surface ou prix au m² hors des bornes du barème Pillr : à lire avec prudence.","type":"boolean"},"motif":{"description":"Pourquoi le prix est atypique ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["logements","vente_en_bloc","avec_dependance","avec_local_pro","prix_atypique","motif"],"additionalProperties":false},"qualite":{"description":"Qualité du prix au m² de cette vente : une observation, ses drapeaux et sa méthode.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"millesime":{"description":"Millésime du fichier DVF qui porte la mutation.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres ; null hors d'une recherche autour d'un point.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"iris":{"description":"Code IRIS de la vente (ventes de logement rattachées par Pillr) ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id_mutation","date","nature","valeur_fonciere","adresse","code_postal","insee","nb_dispositions","locaux","nombre_lots","terrains","surface_terrain","parcelles","volumes","lat","lon","surface_logements","prix_m2","indicateurs","qualite","millesime","distance_m","iris"],"additionalProperties":false}},"limites":{"description":"Ce que la page ne couvre pas, en clair.","type":"array","items":{"type":"string"}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["recherche","donnees","limites","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes"}},"/ventes/rue":{"get":{"operationId":"ventes_rue","summary":"Ventes d'une rue ou d'une commune","description":"Les ventes DVF d'une rue (par son nom géocodé dans la Base Adresse Nationale, ou par son code de voie) ou d'une commune (l'arrondissement à Paris, Lyon et Marseille), lues à la vente entière : une vente d'un seul logement, hors local professionnel et vente en bloc, comme le barème Pillr. Par type de bien, sur la période entière puis année par année : nombre de ventes, médiane, quartiles dès 2 ventes, minimum, maximum, surface médiane, dernière vente, sans seuil de publication. Les ventes au prix atypique sont écartées des agrégats et comptées. À la voie, chaque vente est listée avec son numéro et sa qualité. Le prix de référence de la commune est le barème Pillr, le même que les pages communes. Mêmes calculs que l'outil ventes_rue du Hub. Coût : 5 crédits par appel réussi.","parameters":[{"name":"voie","in":"query","required":false,"schema":{"description":"Nom de la voie, ex. « rue de Genève ».","type":"string","minLength":2,"maxLength":160}},{"name":"code_voie","in":"query","required":false,"schema":{"description":"Code FANTOIR de la voie (deuxième segment de la clé BAN), avec insee, au lieu de son nom.","type":"string","pattern":"^[0-9A-Za-z]{4}$"}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune DVF (l'arrondissement à Paris, Lyon et Marseille).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"Code postal, à défaut du code INSEE.","type":"string","pattern":"^\\d{5}$"}},{"name":"type","in":"query","required":false,"schema":{"description":"Ne servir qu'un type de bien.","type":"string","enum":["appartement","maison"]}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne compter que les ventes à partir de cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cible":{"type":"object","properties":{"perimetre":{"type":"string","enum":["voie","commune"]},"voie":{"description":"La voie retenue (libellé de la Base Adresse Nationale, ou celui que DVF écrit quand la voie est donnée par son code).","anyOf":[{"type":"string"},{"type":"null"}]},"code_voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["perimetre","voie","code_voie","commune","insee","code_postal"],"additionalProperties":false},"par_type":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"object","properties":{"periode":{"description":"Toutes les années réunies, prix non ramenés à une même date ; null sans vente typique.","anyOf":[{"type":"object","properties":{"periode":{"description":"Période couverte, ex. « 2021 à 2025 ».","type":"string"},"n":{"description":"Ventes typiques qui portent l'agrégat : à lire avant la médiane.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mediane_m2":{"description":"Prix au m² médian, en euros.","type":"number"},"q1":{"description":"Premier quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"q3":{"description":"Troisième quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"min":{"type":"number"},"max":{"type":"number"},"surface_mediane":{"description":"Surface médiane, en m².","type":"number"},"derniere_vente_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"n_prix_atypiques":{"description":"Ventes au prix atypique du groupe, écartées de l'agrégat (listées à la voie).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["periode","n","mediane_m2","q1","q3","min","max","surface_mediane","derniere_vente_le","n_prix_atypiques","qualite"],"additionalProperties":false},{"type":"null"}]},"par_annee":{"description":"Chaque année qui compte au moins une vente typique, la plus récente d'abord.","type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n":{"description":"Ventes typiques qui portent l'agrégat : à lire avant la médiane.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mediane_m2":{"description":"Prix au m² médian, en euros.","type":"number"},"q1":{"description":"Premier quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"q3":{"description":"Troisième quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"min":{"type":"number"},"max":{"type":"number"},"surface_mediane":{"description":"Surface médiane, en m².","type":"number"},"derniere_vente_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"n_prix_atypiques":{"description":"Ventes au prix atypique du groupe, écartées de l'agrégat (listées à la voie).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","n","mediane_m2","q1","q3","min","max","surface_mediane","derniere_vente_le","n_prix_atypiques","qualite"],"additionalProperties":false}},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["periode","par_annee","note"],"additionalProperties":false},{"type":"null"}]},"maison":{"anyOf":[{"type":"object","properties":{"periode":{"description":"Toutes les années réunies, prix non ramenés à une même date ; null sans vente typique.","anyOf":[{"type":"object","properties":{"periode":{"description":"Période couverte, ex. « 2021 à 2025 ».","type":"string"},"n":{"description":"Ventes typiques qui portent l'agrégat : à lire avant la médiane.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mediane_m2":{"description":"Prix au m² médian, en euros.","type":"number"},"q1":{"description":"Premier quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"q3":{"description":"Troisième quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"min":{"type":"number"},"max":{"type":"number"},"surface_mediane":{"description":"Surface médiane, en m².","type":"number"},"derniere_vente_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"n_prix_atypiques":{"description":"Ventes au prix atypique du groupe, écartées de l'agrégat (listées à la voie).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["periode","n","mediane_m2","q1","q3","min","max","surface_mediane","derniere_vente_le","n_prix_atypiques","qualite"],"additionalProperties":false},{"type":"null"}]},"par_annee":{"description":"Chaque année qui compte au moins une vente typique, la plus récente d'abord.","type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n":{"description":"Ventes typiques qui portent l'agrégat : à lire avant la médiane.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mediane_m2":{"description":"Prix au m² médian, en euros.","type":"number"},"q1":{"description":"Premier quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"q3":{"description":"Troisième quartile du prix au m², dès 2 ventes.","anyOf":[{"type":"number"},{"type":"null"}]},"min":{"type":"number"},"max":{"type":"number"},"surface_mediane":{"description":"Surface médiane, en m².","type":"number"},"derniere_vente_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"n_prix_atypiques":{"description":"Ventes au prix atypique du groupe, écartées de l'agrégat (listées à la voie).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","n","mediane_m2","q1","q3","min","max","surface_mediane","derniere_vente_le","n_prix_atypiques","qualite"],"additionalProperties":false}},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["periode","par_annee","note"],"additionalProperties":false},{"type":"null"}]}},"required":["appartement","maison"],"additionalProperties":false},"ventes":{"description":"À la voie : chaque vente, numéro compris, la plus récente d'abord ; vide pour une commune.","type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"numero":{"description":"Numéro dans la voie, suffixe compris ; null quand DVF n'en donne pas.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"description":"Numéro et voie, tels que DVF les écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string","enum":["appartement","maison"]},"surface":{"description":"Surface du logement, en m².","type":"number"},"prix":{"description":"Valeur foncière de la mutation, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"type":"number"},"id_mutation":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["date","numero","adresse","type","surface","prix","prix_m2","id_mutation","qualite"],"additionalProperties":false}},"ventes_total":{"description":"Ventes de la voie quand la liste est tronquée ; null sinon.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_reference_commune":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"object","properties":{"prix_m2":{"type":"number"},"libelle":{"description":"Comment citer ce prix.","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","libelle","qualite"],"additionalProperties":false},{"type":"null"}]},"maison":{"anyOf":[{"type":"object","properties":{"prix_m2":{"type":"number"},"libelle":{"description":"Comment citer ce prix.","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","libelle","qualite"],"additionalProperties":false},{"type":"null"}]},"source":{"type":"string"}},"required":["appartement","maison","source"],"additionalProperties":false},"millesimes":{"anyOf":[{"type":"string"},{"type":"null"}]},"note":{"type":"string"},"limites":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cible","par_type","ventes","ventes_total","prix_reference_commune","millesimes","note","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes_rue"}},"/communes/{insee}/ventes":{"get":{"operationId":"ventes_commune","summary":"Volumes et prix des ventes d'une commune","description":"Les volumes et les prix des ventes DVF d'une commune, par son code INSEE ou par un code postal (la commune la plus peuplée du code postal) : ventes par trimestre (total, appartements, maisons) et médiane au m² ; série annuelle du prix au m² (appartement, maison, ensemble) avec transactions, minimum, maximum et drapeaux de basse confiance ; vélocité au code postal, année par année, évolution du volume et sa lecture, comme l'outil de vélocité du Hub. La vélocité compte des lignes DVF d'appartements et de maisons (une par lot), pas des mutations. Chaque valeur porte son nombre d'observations. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"type","in":"query","required":false,"schema":{"description":"Ne servir que les chiffres d'un type de bien (les autres valent null).","type":"string","enum":["appartement","maison"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"commune":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"description":"Code postal principal de la commune, celui de la vélocité.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom","code_postal"],"additionalProperties":false},"par_trimestre":{"description":"Ventes DVF de la commune par trimestre, le plus ancien d'abord.","type":"array","items":{"type":"object","properties":{"trimestre":{"description":"Trimestre, ex. 2025-T4.","type":"string"},"debut":{"description":"Premier jour du trimestre.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"appartements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maisons":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_median":{"description":"Médiane du prix au m² des ventes du trimestre, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["trimestre","debut","ventes","appartements","maisons","prix_m2_median","qualite"],"additionalProperties":false}},"par_annee":{"description":"Série annuelle du prix au m² et des transactions de la commune, la plus ancienne d'abord.","type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transactions_appartements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_maisons":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_global":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"basse_confiance_appartement":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"basse_confiance_maison":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","transactions_appartements","transactions_maisons","transactions_total","prix_m2_appartement","prix_m2_maison","prix_m2_global","min_appartement","max_appartement","min_maison","max_maison","basse_confiance_appartement","basse_confiance_maison","qualite"],"additionalProperties":false}},"velocite":{"description":"Vélocité au code postal principal ; null sans code postal connu.","anyOf":[{"type":"object","properties":{"code_postal":{"type":"string"},"par_annee":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["annee","ventes"],"additionalProperties":false}},"evolution_volume_pct":{"description":"Évolution du volume de la première année à la dernière année pleine, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"lecture":{"description":"Ce que dit l'évolution du volume sur la liquidité du marché (même lecture que le Hub).","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["code_postal","par_annee","evolution_volume_pct","lecture","qualite"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["commune","par_trimestre","par_annee","velocite","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes_commune"}},"/codes-postaux/{code_postal}/ventes":{"get":{"operationId":"ventes_commune_2","summary":"Volumes et prix des ventes d'une commune","description":"Les volumes et les prix des ventes DVF d'une commune, par son code INSEE ou par un code postal (la commune la plus peuplée du code postal) : ventes par trimestre (total, appartements, maisons) et médiane au m² ; série annuelle du prix au m² (appartement, maison, ensemble) avec transactions, minimum, maximum et drapeaux de basse confiance ; vélocité au code postal, année par année, évolution du volume et sa lecture, comme l'outil de vélocité du Hub. La vélocité compte des lignes DVF d'appartements et de maisons (une par lot), pas des mutations. Chaque valeur porte son nombre d'observations. Coût : 2 crédits par appel réussi.","parameters":[{"name":"code_postal","in":"path","required":true,"schema":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"commune":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"description":"Code postal principal de la commune, celui de la vélocité.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom","code_postal"],"additionalProperties":false},"par_trimestre":{"description":"Ventes DVF de la commune par trimestre, le plus ancien d'abord.","type":"array","items":{"type":"object","properties":{"trimestre":{"description":"Trimestre, ex. 2025-T4.","type":"string"},"debut":{"description":"Premier jour du trimestre.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"appartements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maisons":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_median":{"description":"Médiane du prix au m² des ventes du trimestre, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["trimestre","debut","ventes","appartements","maisons","prix_m2_median","qualite"],"additionalProperties":false}},"par_annee":{"description":"Série annuelle du prix au m² et des transactions de la commune, la plus ancienne d'abord.","type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transactions_appartements":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_maisons":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_global":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"basse_confiance_appartement":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"basse_confiance_maison":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","transactions_appartements","transactions_maisons","transactions_total","prix_m2_appartement","prix_m2_maison","prix_m2_global","min_appartement","max_appartement","min_maison","max_maison","basse_confiance_appartement","basse_confiance_maison","qualite"],"additionalProperties":false}},"velocite":{"description":"Vélocité au code postal principal ; null sans code postal connu.","anyOf":[{"type":"object","properties":{"code_postal":{"type":"string"},"par_annee":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["annee","ventes"],"additionalProperties":false}},"evolution_volume_pct":{"description":"Évolution du volume de la première année à la dernière année pleine, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"lecture":{"description":"Ce que dit l'évolution du volume sur la liquidité du marché (même lecture que le Hub).","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["code_postal","par_annee","evolution_volume_pct","lecture","qualite"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["commune","par_trimestre","par_annee","velocite","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"ventes_commune"}},"/adresses/{cle_ban}/dpe":{"get":{"operationId":"dpe_adresse","summary":"Tous les DPE d'une adresse, logement par logement","description":"Tous les DPE d'une adresse de la Base Adresse Nationale, logement par logement : numéro, dates, étiquettes énergie et GES, consommation et émissions, surface, type, étage et complément d'adresse, méthode, fin de validité, DPE remplacé, échéance d'interdiction de louer. Sources : DPE de logements existants et neufs et DPE tertiaires portant la clé BAN, DPE d'avant juillet 2021 rapprochés par position (30 m au plus). S'y ajoutent l'historique des étiquettes de l'adresse, ses audits énergétiques (classe visée, coût maximal) et la répartition des DPE de sa commune. Aucun DPE, aucun audit ni aucun historique : 404 ressource_absente, rien n'est débité. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}},{"name":"sources","in":"query","required":false,"schema":{"description":"Les sources à lire (existant, neuf, tertiaire, ancien), séparées par des virgules ; toutes par défaut.","anyOf":[{"type":"array","items":{"description":"existant, neuf, tertiaire (depuis juillet 2021) ou ancien (avant juillet 2021).","type":"string","enum":["existant","neuf","tertiaire","ancien"]}},{"type":"string"}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"type":"string"},"adresse":{"anyOf":[{"type":"object","properties":{"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["insee","code_postal","commune","lat","lon"],"additionalProperties":false},{"type":"null"}]},"dpe":{"description":"Tous les DPE de l'adresse, logement par logement, le plus récent d'abord.","type":"array","items":{"type":"object","properties":{"numero":{"type":"string"},"source":{"description":"existant, neuf, tertiaire (depuis juillet 2021) ou ancien (avant juillet 2021).","type":"string","enum":["existant","neuf","tertiaire","ancien"]},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"remplace":{"description":"Numéro du DPE que celui-ci remplace.","anyOf":[{"type":"string"},{"type":"null"}]},"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2":{"description":"Consommation d'énergie primaire, en kWh par m² et par an.","anyOf":[{"type":"number"},{"type":"null"}]},"ges_kg_m2":{"description":"Émissions de gaz à effet de serre, en kg de CO2 par m² et par an.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"description":"Surface habitable du logement (surface utile pour un DPE tertiaire), en m².","anyOf":[{"type":"number"},{"type":"null"}]},"type":{"description":"Type de bâtiment (maison, appartement, immeuble), ou secteur d'activité d'un DPE tertiaire.","anyOf":[{"type":"string"},{"type":"null"}]},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"complement":{"description":"Complément d'adresse du logement (porte, bâtiment), tel que le diagnostiqueur l'écrit.","anyOf":[{"type":"string"},{"type":"null"}]},"methode":{"anyOf":[{"type":"string"},{"type":"null"}]},"periode":{"description":"Période de construction.","anyOf":[{"type":"string"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"chauffage":{"description":"Énergie principale du chauffage.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement":{"description":"cle_ban : le DPE porte la clé BAN de l'adresse ; position : DPE d'avant juillet 2021 rapproché par sa position.","type":"string","enum":["cle_ban","position"]},"distance_m":{"description":"Distance à l'adresse d'un DPE rapproché par position ; null sinon.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero","source","etabli_le","fin_validite","remplace","etiquette","ges","conso_kwh_m2","ges_kg_m2","surface","type","etage","complement","methode","periode","annee_construction","chauffage","rattachement","distance_m","interdiction_location","mois_restants","qualite"],"additionalProperties":false}},"historique":{"description":"Les étiquettes successives de l'adresse, la plus ancienne d'abord.","type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]}},"required":["date","etiquette"],"additionalProperties":false}},"audits":{"type":"array","items":{"type":"object","properties":{"n_audit":{"type":"string"},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"classe_depart":{"description":"Classe du logement à l'état initial de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"classe_visee":{"description":"Meilleure classe atteinte par une étape de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"cout_max":{"description":"Coût cumulé le plus élevé chiffré par l'audit, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"etapes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n_audit","etabli_le","classe_depart","classe_visee","cout_max","etapes","qualite"],"additionalProperties":false}},"contexte_commune":{"description":"Les DPE de la commune de l'adresse : répartition des étiquettes et part de passoires ; null si indisponible.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repartition":{"type":"object","properties":{"A":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"B":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"C":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"D":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"E":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"F":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"G":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"non_renseigne":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["A","B","C","D","E","F","G","non_renseigne"],"additionalProperties":false},"part_passoires_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_f_g_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["insee","total","repartition","part_passoires_pct","part_f_g_pct","qualite"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","adresse","dpe","historique","audits","contexte_commune","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"dpe_adresse"}},"/dpe":{"get":{"operationId":"dpe","summary":"Un DPE par son numéro, ou les DPE d'un disque ou d'une commune","description":"Un DPE par son numéro (logement existant ou neuf, tertiaire, ou d'avant juillet 2021) avec toutes ses colonnes ADEME : étiquettes, consommations et émissions par usage et par énergie, coûts, déperditions, isolation, chauffage, eau chaude, ventilation, copropriété, identifiant RNB. Ou les DPE de logements existants autour d'un point (2000 m au plus, le plus proche d'abord) ou dans une commune (le plus récent d'abord), filtrés par étiquette, GES, surface, type de bâtiment et date : le DPE inversé. Les annonces dont l'empreinte concorde avec le DPE sont jointes. Le paramètre champs réduit chaque DPE aux champs demandés. Coût : 1 crédit par élément rendu.","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"rayon_m","in":"query","required":false,"schema":{"description":"Rayon autour du point, en mètres (250 par défaut).","type":"integer","minimum":10,"maximum":2000}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"etiquette","in":"query","required":false,"schema":{"description":"Une ou plusieurs étiquettes A à G, ex. E,F,G.","anyOf":[{"type":"array","items":{"type":"string","enum":["A","B","C","D","E","F","G"]}},{"type":"string"}]}},{"name":"ges","in":"query","required":false,"schema":{"description":"Une ou plusieurs étiquettes GES A à G.","anyOf":[{"type":"array","items":{"type":"string","enum":["A","B","C","D","E","F","G"]}},{"type":"string"}]}},{"name":"surface_min","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"surface_max","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"type","in":"query","required":false,"schema":{"description":"Type de bâtiment du DPE.","type":"string","enum":["appartement","maison","immeuble"]}},{"name":"depuis","in":"query","required":false,"schema":{"description":"DPE établis à partir de cette date.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"DPE établis jusqu'à cette date comprise.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}},{"name":"champs","in":"query","required":false,"schema":{"description":"Champs rendus, séparés par des virgules (« prix,surface,analyse.score ») ; tous si absent.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":60,"type":"array","items":{"type":"string","maxLength":300}}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"recherche":{"type":"object","properties":{"mode":{"type":"string","enum":["numero","point","commune"]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"rayon_m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mode","insee","lat","lon","rayon_m"],"additionalProperties":false},"donnees":{"type":"array","items":{"type":"object","properties":{"numero_dpe":{"type":"string"},"source":{"description":"existant, neuf, tertiaire (depuis juillet 2021) ou ancien (avant juillet 2021).","type":"string","enum":["existant","neuf","tertiaire","ancien"]},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"remplace":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_kg_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"periode":{"anyOf":[{"type":"string"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"complement":{"anyOf":[{"type":"string"},{"type":"null"}]},"id_rnb":{"description":"Identifiant du bâtiment au Référentiel national des bâtiments.","anyOf":[{"type":"string"},{"type":"null"}]},"copropriete":{"description":"Numéro d'immatriculation de la copropriété au registre national.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres ; null hors d'une recherche autour d'un point.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"annonces_rattachees":{"description":"Annonces dont l'empreinte (étiquettes, consommation, surface, adresse) concorde avec ce DPE.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce sur son portail (lbc:, bienici:, seloger:), quand Pillr le reconnaît.","anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"ecart_surface":{"description":"Écart entre la surface de l'annonce et celle du DPE, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","parue_le","active","ecart_surface"],"additionalProperties":false}},"ademe":{"description":"Toutes les colonnes du DPE telles que l'ADEME les publie (consommations et coûts par usage et par énergie, déperditions, isolation, systèmes).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero_dpe"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["recherche","donnees","limites","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"dpe"}},"/dpe/{numero_dpe}":{"get":{"operationId":"dpe_2","summary":"Un DPE par son numéro, ou les DPE d'un disque ou d'une commune","description":"Un DPE par son numéro (logement existant ou neuf, tertiaire, ou d'avant juillet 2021) avec toutes ses colonnes ADEME : étiquettes, consommations et émissions par usage et par énergie, coûts, déperditions, isolation, chauffage, eau chaude, ventilation, copropriété, identifiant RNB. Ou les DPE de logements existants autour d'un point (2000 m au plus, le plus proche d'abord) ou dans une commune (le plus récent d'abord), filtrés par étiquette, GES, surface, type de bâtiment et date : le DPE inversé. Les annonces dont l'empreinte concorde avec le DPE sont jointes. Le paramètre champs réduit chaque DPE aux champs demandés. Coût : 1 crédit par élément rendu.","parameters":[{"name":"numero_dpe","in":"path","required":true,"schema":{"description":"Numéro du DPE à l'ADEME, ex. 2435E0123456X.","type":"string","pattern":"^[0-9A-Za-z]{8,20}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"recherche":{"type":"object","properties":{"mode":{"type":"string","enum":["numero","point","commune"]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"rayon_m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mode","insee","lat","lon","rayon_m"],"additionalProperties":false},"donnees":{"type":"array","items":{"type":"object","properties":{"numero_dpe":{"type":"string"},"source":{"description":"existant, neuf, tertiaire (depuis juillet 2021) ou ancien (avant juillet 2021).","type":"string","enum":["existant","neuf","tertiaire","ancien"]},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"remplace":{"anyOf":[{"type":"string"},{"type":"null"}]},"etiquette":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"ges_kg_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"periode":{"anyOf":[{"type":"string"},{"type":"null"}]},"annee_construction":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"complement":{"anyOf":[{"type":"string"},{"type":"null"}]},"id_rnb":{"description":"Identifiant du bâtiment au Référentiel national des bâtiments.","anyOf":[{"type":"string"},{"type":"null"}]},"copropriete":{"description":"Numéro d'immatriculation de la copropriété au registre national.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"distance_m":{"description":"Distance au point demandé, en mètres ; null hors d'une recherche autour d'un point.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"annonces_rattachees":{"description":"Annonces dont l'empreinte (étiquettes, consommation, surface, adresse) concorde avec ce DPE.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce sur son portail (lbc:, bienici:, seloger:), quand Pillr le reconnaît.","anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"ecart_surface":{"description":"Écart entre la surface de l'annonce et celle du DPE, en m².","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","parue_le","active","ecart_surface"],"additionalProperties":false}},"ademe":{"description":"Toutes les colonnes du DPE telles que l'ADEME les publie (consommations et coûts par usage et par énergie, déperditions, isolation, systèmes).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["numero_dpe"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["recherche","donnees","limites","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"dpe"}},"/audits/{n_audit}":{"get":{"operationId":"audits_energetiques","summary":"Audits énergétiques et leurs scénarios","description":"Les audits énergétiques réglementaires de l'ADEME, par numéro d'audit ou à une adresse de la Base Adresse Nationale, avec tous leurs scénarios et leurs étapes de travaux : classe atteinte, consommation, coût de l'étape et coût cumulé, gains de facture et de consommation, travaux décrits par l'auditeur. Ce sont des estimations d'auditeur, pas des devis. Aucun audit : 404 ressource_absente, rien n'est débité. Coût : 3 crédits par élément rendu.","parameters":[{"name":"n_audit","in":"path","required":true,"schema":{"description":"Numéro de l'audit énergétique à l'ADEME, ex. A243500000001.","type":"string","pattern":"^[0-9A-Za-z]{6,20}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"audits":{"description":"Les audits, le plus récent d'abord.","type":"array","items":{"type":"object","properties":{"n_audit":{"type":"string"},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"remplace":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero_dpe":{"description":"Numéro du DPE de l'état initial.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"periode":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone_climatique":{"anyOf":[{"type":"string"},{"type":"null"}]},"classe_depart":{"description":"Classe du logement à l'état initial de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"classe_visee":{"description":"Meilleure classe atteinte par une étape de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"cout_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"scenarios":{"type":"array","items":{"type":"object","properties":{"categorie":{"anyOf":[{"type":"string"},{"type":"null"}]},"etapes":{"type":"array","items":{"type":"object","properties":{"etape":{"description":"Étape du parcours de travaux, telle que l'ADEME la nomme.","anyOf":[{"type":"string"},{"type":"null"}]},"classe_bilan":{"description":"Classe atteinte à cette étape.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2":{"description":"Consommation d'énergie primaire après l'étape, en kWh par m² et par an.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_travaux":{"description":"Coût des travaux de l'étape, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"couts_cumules":{"description":"Coût cumulé des travaux jusqu'à cette étape, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"gain_financier":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_facture_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_facture_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_conso_pct":{"description":"Gain relatif de consommation, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"travaux":{"description":"Travaux de l'étape, tels que l'auditeur les décrit.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["etape","classe_bilan","ges","conso_kwh_m2","cout_travaux","couts_cumules","gain_financier","gain_facture_min","gain_facture_max","gain_conso_pct","travaux"],"additionalProperties":false}}},"required":["categorie","etapes"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n_audit","etabli_le","fin_validite","remplace","numero_dpe","cle_ban","adresse_ban","insee","type","surface","periode","zone_climatique","classe_depart","classe_visee","cout_max","scenarios","qualite"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["audits","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"audits_energetiques"}},"/adresses/{cle_ban}/audits":{"get":{"operationId":"audits_energetiques_2","summary":"Audits énergétiques et leurs scénarios","description":"Les audits énergétiques réglementaires de l'ADEME, par numéro d'audit ou à une adresse de la Base Adresse Nationale, avec tous leurs scénarios et leurs étapes de travaux : classe atteinte, consommation, coût de l'étape et coût cumulé, gains de facture et de consommation, travaux décrits par l'auditeur. Ce sont des estimations d'auditeur, pas des devis. Aucun audit : 404 ressource_absente, rien n'est débité. Coût : 3 crédits par élément rendu.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"audits":{"description":"Les audits, le plus récent d'abord.","type":"array","items":{"type":"object","properties":{"n_audit":{"type":"string"},"etabli_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"fin_validite":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"remplace":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero_dpe":{"description":"Numéro du DPE de l'état initial.","anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"adresse_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"periode":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone_climatique":{"anyOf":[{"type":"string"},{"type":"null"}]},"classe_depart":{"description":"Classe du logement à l'état initial de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"classe_visee":{"description":"Meilleure classe atteinte par une étape de l'audit.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"cout_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"scenarios":{"type":"array","items":{"type":"object","properties":{"categorie":{"anyOf":[{"type":"string"},{"type":"null"}]},"etapes":{"type":"array","items":{"type":"object","properties":{"etape":{"description":"Étape du parcours de travaux, telle que l'ADEME la nomme.","anyOf":[{"type":"string"},{"type":"null"}]},"classe_bilan":{"description":"Classe atteinte à cette étape.","anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"ges":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"conso_kwh_m2":{"description":"Consommation d'énergie primaire après l'étape, en kWh par m² et par an.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_travaux":{"description":"Coût des travaux de l'étape, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"couts_cumules":{"description":"Coût cumulé des travaux jusqu'à cette étape, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"gain_financier":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_facture_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_facture_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"gain_conso_pct":{"description":"Gain relatif de consommation, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"travaux":{"description":"Travaux de l'étape, tels que l'auditeur les décrit.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["etape","classe_bilan","ges","conso_kwh_m2","cout_travaux","couts_cumules","gain_financier","gain_facture_min","gain_facture_max","gain_conso_pct","travaux"],"additionalProperties":false}}},"required":["categorie","etapes"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n_audit","etabli_le","fin_validite","remplace","numero_dpe","cle_ban","adresse_ban","insee","type","surface","periode","zone_climatique","classe_depart","classe_visee","cout_max","scenarios","qualite"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["audits","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"element","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"audits_energetiques"}},"/energie/sortie-passoire":{"post":{"operationId":"sortie_passoire","summary":"Échéance de location et coût de sortie de passoire","description":"L'échéance d'interdiction de louer d'un logement selon son étiquette (calendrier de la loi Climat et résilience en métropole : G 2025, F 2028, E 2034) et les mois restants. Pour une étiquette E, F ou G, le coût pour atteindre D, C ou B, mesuré sur les audits énergétiques ADEME de logements comparables (type, zone climatique, période de construction) : médiane et quartiles, euros par m², coût à la surface du bien, part des audits qui dépassent la cible, finesse de la cellule retenue. Une estimation d'auditeur, pas un devis. Métropole seulement : le calendrier des outre-mer n'est pas servi. Coût : 1 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"etiquette":{"description":"Étiquette DPE du logement.","type":"string","enum":["A","B","C","D","E","F","G"]},"type":{"description":"appartement ou maison.","type":"string","enum":["appartement","maison"]},"insee":{"description":"Code INSEE de la commune : donne la zone climatique et le territoire.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"zone_climatique":{"description":"Zone climatique H1, H2 ou H3, à défaut du code INSEE (métropole).","type":"string","enum":["H1","H2","H3"]},"periode_construction":{"description":"Période de construction, à défaut de l'année.","type":"string","enum":["avant_1948","1948_1974","1975_2000","apres_2000"]},"annee_construction":{"type":"integer","minimum":1000,"maximum":2100},"surface":{"description":"Surface habitable du logement, en m² : ramène le coût au bien.","type":"number","exclusiveMinimum":0,"maximum":10000}},"required":["etiquette","type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"etiquette":{"type":"string","enum":["A","B","C","D","E","F","G"]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sortie":{"description":"Coût de sortie d'une passoire (classe E, F ou G) vers D, C ou B, mesuré sur les audits énergétiques réglementaires de l'ADEME pour des logements comparables. null hors des classes E à G, pour un type de logement sans comparable, ou hors de la métropole.","anyOf":[{"type":"object","properties":{"classe_depart":{"type":"string","enum":["E","F","G"]},"cibles":{"type":"array","items":{"type":"object","properties":{"vers":{"description":"Classe visée.","type":"string","enum":["D","C","B"]},"n_audits":{"description":"Nombre d'audits comparables de la cellule retenue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"euros":{"description":"Coût des travaux chiffré par les audits comparables, sur leurs propres surfaces, en euros arrondis à la centaine.","type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},"eur_m2":{"description":"Le même coût rapporté à la surface habitable, en euros par m² ; null s'il y a trop peu d'audits avec surface.","anyOf":[{"type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"surface_mediane_m2":{"description":"Surface habitable médiane des logements audités.","anyOf":[{"type":"number"},{"type":"null"}]},"pour_la_surface":{"description":"Le coût au m² des audits appliqué à la surface du bien, quand elle est connue : le chiffre à citer.","anyOf":[{"type":"object","properties":{"surface_m2":{"type":"number"},"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["surface_m2","mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"part_au_dela":{"description":"Part des audits (0 à 1) dont l'étape chiffrée atteint déjà la classe suivante : le chiffrage dépasse alors la cible.","anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Les audits comparables, en clair (type de logement, zone climatique, période de construction).","type":"string"},"niveau":{"description":"Finesse de la cellule retenue, de la plus fine (type, zone climatique et période) à la plus large (type seul, France métropolitaine).","type":"string","enum":["complet","sans_periode","sans_zone","national"]}},"required":["vers","n_audits","euros","eur_m2","surface_mediane_m2","pour_la_surface","part_au_dela","perimetre","niveau"],"additionalProperties":false}},"lecture":{"description":"Ce que mesure le chiffre : une estimation d'auditeur, pas un devis.","type":"string"},"source":{"type":"string"}},"required":["classe_depart","cibles","lecture","source"],"additionalProperties":false},{"type":"null"}]},"retenu":{"description":"Ce qui a été retenu pour choisir les audits comparables.","type":"object","properties":{"type":{"type":"string","enum":["appartement","maison"]},"zone_climatique":{"anyOf":[{"type":"string","enum":["H1","H2","H3"]},{"type":"null"}]},"periode":{"anyOf":[{"type":"string","enum":["avant_1948","1948_1974","1975_2000","apres_2000"]},{"type":"null"}]},"surface":{"description":"Surface retenue pour ramener le coût au bien ; null hors des bornes des audits.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["type","zone_climatique","periode","surface"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["etiquette","interdiction_location","mois_restants","sortie","retenu","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"sortie_passoire"}},"/adresses/{cle_ban}/pre-marche":{"get":{"operationId":"pre_marche_adresse","summary":"Pré-marché d'une adresse","description":"Pour une adresse (clé BAN), la probabilité calibrée qu'une vente DVF y soit enregistrée dans les 12 mois, calculée à la lecture comme dans le Hub : indice des coefficients mesurés, bande de calibration et son taux de vente réel, lift, fenêtre de mandat et priorité, fiabilité (mesure sur les maisons positionnées, indicatif ailleurs), raisons chiffrées, coefficients retenus, faits datés au jour du DPE, frise des évènements de l'adresse (DPE, audit, ventes, sociétés civiles, permis, copropriété, annonce) et sociétés civiles domiciliées, nommées avec leur SIREN quand le BODACC le rattache. Hors du périmètre calibré (Alsace-Moselle notamment), la raison est servie à la place du calcul. Coût : 10 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"type":"string"},"hors_perimetre":{"description":"Pourquoi l'adresse sort du périmètre calibré (Alsace-Moselle, DPE collectif, neuf livré, adresse sans position...) ; null si elle est calculée.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"description":"Le calcul de l'adresse ; null hors du périmètre calibré.","anyOf":[{"type":"object","properties":{"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cle_ban":{"type":"string"},"adresse":{"type":"string"},"commune":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"type_bien":{"type":"string","enum":["maison","appartement","immeuble","autre"]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe_le":{"type":"string"},"age_dpe_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"audit_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"pack_pre_vente":{"type":"boolean"},"p_vente":{"description":"Probabilité calibrée qu'une vente DVF soit enregistrée à l'adresse dans les 12 mois.","type":"number"},"lift":{"description":"p_vente divisée par le taux de vente mesuré du type de bien.","anyOf":[{"type":"number"},{"type":"null"}]},"fiabilite":{"description":"mesure : maison positionnée dans la BAN, la population où la calibration est démontrée ; indicatif sinon.","type":"string","enum":["mesure","indicatif"]},"raisons":{"description":"Les coefficients réellement appliqués, du plus fort au plus faible, puis l'âge du DPE et la fenêtre de mandat.","type":"array","items":{"type":"string"}},"fenetre_mandat":{"type":"object","properties":{"valeur":{"description":"Part des vendeurs encore libres d'un mandat à cet âge du DPE (mesurée sur le délai entre le DPE et la première annonce).","type":"number"},"libelle":{"type":"string"}},"required":["valeur","libelle"],"additionalProperties":false},"priorite":{"description":"p_vente multipliée par la fenêtre de mandat : l'ordre du classement.","type":"number"},"deja_en_vente":{"type":"boolean"},"annonce":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]},"agence":{"description":"L'agence qui publie l'annonce ; null pour un vendeur particulier ou inconnu.","anyOf":[{"type":"object","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["nom","enseigne","siren"],"additionalProperties":false},{"type":"null"}]}},"required":["id","lien","parue_le","prix","type_vendeur","agence"],"additionalProperties":false},{"type":"null"}]},"derniere_vente":{"anyOf":[{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix"],"additionalProperties":false},{"type":"null"}]},"annees_detention":{"anyOf":[{"type":"number"},{"type":"null"}]},"societes_civiles":{"type":"array","items":{"type":"object","properties":{"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN lu dans le BODACC pour cette dénomination et ce code postal ; null s'il n'est pas rattaché sans ambiguïté.","anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["denomination","siren","forme","dernier_avis","le"],"additionalProperties":false}},"permis":{"anyOf":[{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dernier_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["n","dernier_le","type"],"additionalProperties":false},{"type":"null"}]},"copro":{"anyOf":[{"type":"object","properties":{"lots":{"anyOf":[{"type":"number"},{"type":"null"}]},"syndic":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lots","syndic"],"additionalProperties":false},{"type":"null"}]},"logements":{"type":"object","properties":{"nombre":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["dpe","copropriete","maison"]},{"type":"null"}]}},"required":["nombre","source"],"additionalProperties":false},"frise":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"type":"string","enum":["dpe","audit","vente","sci","permis","copro","annonce"]},"libelle":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"apres_dpe":{"description":"Vrai si l'évènement est postérieur au dernier DPE.","type":"boolean"}},"required":["date","type","libelle","detail","apres_dpe"],"additionalProperties":false}}},"required":["rang","cle_ban","adresse","commune","code_postal","insee","lat","lon","type_bien","dpe","periode_construction","chauffage","dpe_le","age_dpe_jours","audit_le","pack_pre_vente","p_vente","lift","fiabilite","raisons","fenetre_mandat","priorite","deja_en_vente","annonce","derniere_vente","annees_detention","societes_civiles","permis","copro","logements","frise"],"additionalProperties":false},{"type":"null"}]},"bande":{"description":"La bande de calibration qui contient l'indice : son nombre d'adresses et son taux de vente mesuré.","anyOf":[{"type":"object","properties":{"bande":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"indice_min":{"type":"number"},"indice_max":{"type":"number"},"taux_vente_12m_pct":{"type":"number"}},"required":["bande","n","indice_min","indice_max","taux_vente_12m_pct"],"additionalProperties":false},{"type":"null"}]},"indice":{"description":"Produit des coefficients mesurés (public.pre_marche_indice_v3).","anyOf":[{"type":"number"},{"type":"null"}]},"coefficients":{"description":"Les coefficients retenus pour ce type de bien, tels que mesurés.","type":"array","items":{"type":"object","properties":{"signal":{"type":"string"},"groupe":{"anyOf":[{"type":"string"},{"type":"null"}]},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_dvf":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_dvf":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["signal","groupe","coefficient","lift_dvf","n_dvf"],"additionalProperties":false}},"variables":{"description":"Les faits datés au jour du DPE qui entrent dans l'indice.","anyOf":[{"type":"object","properties":{"audit_connu":{"type":"boolean"},"annees_detention_au_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_valide_au_dpe":{"type":"boolean"},"nb_dpe_365j_avant":{"anyOf":[{"type":"number"},{"type":"null"}]},"sci_connue_au_dpe":{"type":"boolean"},"ventes_ilot_avant_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_numero_avant_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]},"copro_ilot":{"type":"boolean"},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"multiplicateur_age_dpe":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["audit_connu","annees_detention_au_dpe","dpe_valide_au_dpe","nb_dpe_365j_avant","sci_connue_au_dpe","ventes_ilot_avant_dpe","ventes_numero_avant_dpe","copro_ilot","surface_m2","multiplicateur_age_dpe"],"additionalProperties":false},{"type":"null"}]},"precision":{"type":"object","properties":{"base_pct":{"description":"Taux de vente DVF à 12 mois mesuré du type de bien, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"haut_pct":{"description":"Taux mesuré dans la bande de probabilité la plus haute, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"description":{"type":"string"},"mesure_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["base_pct","haut_pct","description","mesure_le"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","hors_perimetre","adresse","bande","indice","coefficients","variables","precision","qualite","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"pre_marche_adresse"}},"/pre-marche":{"get":{"operationId":"pre_marche_zone","summary":"Adresses à prospecter d'un secteur","description":"Les adresses d'un secteur (une commune, une liste de communes, une intercommunalité, un code postal ou un cercle) dont le DPE a moins de 24 mois, classées par priorité de prospection : la probabilité calibrée de vente DVF à 12 mois multipliée par la fenêtre de mandat. La réponse comprend le comptage du secteur, la précision mesurée, puis pour chaque adresse ses raisons, sa frise, l'annonce et l'agence quand elle est déjà en vente, ses sociétés civiles nommées, sa dernière vente, sa copropriété et son nombre de logements, et le total des logements pour un boîtage. Les adresses déjà en vente ou vendues depuis le DPE sont exclues, sauf demande. Coût : 10 crédits par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"communes","in":"query","required":false,"schema":{"description":"Communes du secteur, noms ou codes INSEE séparés par des virgules (40 au plus).","type":"string","minLength":1,"maxLength":2000}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},{"name":"epci","in":"query","required":false,"schema":{"description":"Intercommunalité : son code SIREN à 9 chiffres, ou son nom.","type":"string","minLength":2,"maxLength":120}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"rayon_km","in":"query","required":false,"schema":{"description":"Rayon du cercle autour de lat et lon, de 0,3 à 15 km (2 par défaut).","type":"number","minimum":0.3,"maximum":15}},{"name":"type_bien","in":"query","required":false,"schema":{"description":"tous par défaut.","type":"string","enum":["maison","appartement","tous"]}},{"name":"inclure_deja_en_vente","in":"query","required":false,"schema":{"description":"true : garder les adresses déjà en vente ou vendues depuis le DPE.","type":"string","enum":["true","false"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"secteur":{"type":"object","properties":{"libelle":{"type":"string"},"communes":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"type":"string"}},"required":["insee","commune"],"additionalProperties":false}},"intercommunalite":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"nom":{"type":"string"},"extrait_le":{"type":"string"}},"required":["code","nom","extrait_le"],"additionalProperties":false},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"centre":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"rayon_km":{"type":"number"}},"required":["lat","lon","rayon_km"],"additionalProperties":false},{"type":"null"}]},"introuvables":{"type":"array","items":{"type":"string"}}},"required":["libelle","communes","intercommunalite","code_postal","centre","introuvables"],"additionalProperties":false},"type_bien":{"type":"string","enum":["maison","appartement","tous"]},"comptage":{"type":"object","properties":{"adresses_dpe_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dpe_moins_90j":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avec_pack":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deja_en_vente":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vendues_depuis":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hors_perimetre":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prospectables":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["adresses_dpe_24m","dpe_moins_90j","avec_pack","deja_en_vente","vendues_depuis","hors_perimetre","prospectables"],"additionalProperties":false},"precision":{"type":"object","properties":{"base_pct":{"description":"Taux de vente DVF à 12 mois mesuré du type de bien, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"haut_pct":{"description":"Taux mesuré dans la bande de probabilité la plus haute, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"description":{"type":"string"},"mesure_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["base_pct","haut_pct","description","mesure_le"],"additionalProperties":false},"adresses":{"type":"array","items":{"type":"object","properties":{"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cle_ban":{"type":"string"},"adresse":{"type":"string"},"commune":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"type_bien":{"type":"string","enum":["maison","appartement","immeuble","autre"]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"periode_construction":{"anyOf":[{"type":"string"},{"type":"null"}]},"chauffage":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe_le":{"type":"string"},"age_dpe_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"audit_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"pack_pre_vente":{"type":"boolean"},"p_vente":{"description":"Probabilité calibrée qu'une vente DVF soit enregistrée à l'adresse dans les 12 mois.","type":"number"},"lift":{"description":"p_vente divisée par le taux de vente mesuré du type de bien.","anyOf":[{"type":"number"},{"type":"null"}]},"fiabilite":{"description":"mesure : maison positionnée dans la BAN, la population où la calibration est démontrée ; indicatif sinon.","type":"string","enum":["mesure","indicatif"]},"raisons":{"description":"Les coefficients réellement appliqués, du plus fort au plus faible, puis l'âge du DPE et la fenêtre de mandat.","type":"array","items":{"type":"string"}},"fenetre_mandat":{"type":"object","properties":{"valeur":{"description":"Part des vendeurs encore libres d'un mandat à cet âge du DPE (mesurée sur le délai entre le DPE et la première annonce).","type":"number"},"libelle":{"type":"string"}},"required":["valeur","libelle"],"additionalProperties":false},"priorite":{"description":"p_vente multipliée par la fenêtre de mandat : l'ordre du classement.","type":"number"},"deja_en_vente":{"type":"boolean"},"annonce":{"anyOf":[{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"parue_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]},"agence":{"description":"L'agence qui publie l'annonce ; null pour un vendeur particulier ou inconnu.","anyOf":[{"type":"object","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["nom","enseigne","siren"],"additionalProperties":false},{"type":"null"}]}},"required":["id","lien","parue_le","prix","type_vendeur","agence"],"additionalProperties":false},{"type":"null"}]},"derniere_vente":{"anyOf":[{"type":"object","properties":{"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","prix"],"additionalProperties":false},{"type":"null"}]},"annees_detention":{"anyOf":[{"type":"number"},{"type":"null"}]},"societes_civiles":{"type":"array","items":{"type":"object","properties":{"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN lu dans le BODACC pour cette dénomination et ce code postal ; null s'il n'est pas rattaché sans ambiguïté.","anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["denomination","siren","forme","dernier_avis","le"],"additionalProperties":false}},"permis":{"anyOf":[{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dernier_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["n","dernier_le","type"],"additionalProperties":false},{"type":"null"}]},"copro":{"anyOf":[{"type":"object","properties":{"lots":{"anyOf":[{"type":"number"},{"type":"null"}]},"syndic":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lots","syndic"],"additionalProperties":false},{"type":"null"}]},"logements":{"type":"object","properties":{"nombre":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"source":{"anyOf":[{"type":"string","enum":["dpe","copropriete","maison"]},{"type":"null"}]}},"required":["nombre","source"],"additionalProperties":false},"frise":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"type":"string","enum":["dpe","audit","vente","sci","permis","copro","annonce"]},"libelle":{"type":"string"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"apres_dpe":{"description":"Vrai si l'évènement est postérieur au dernier DPE.","type":"boolean"}},"required":["date","type","libelle","detail","apres_dpe"],"additionalProperties":false}}},"required":["rang","cle_ban","adresse","commune","code_postal","insee","lat","lon","type_bien","dpe","periode_construction","chauffage","dpe_le","age_dpe_jours","audit_le","pack_pre_vente","p_vente","lift","fiabilite","raisons","fenetre_mandat","priorite","deja_en_vente","annonce","derniere_vente","annees_detention","societes_civiles","permis","copro","logements","frise"],"additionalProperties":false}},"boitage":{"type":"object","properties":{"logements":{"description":"Logements des adresses de la page, pour dimensionner un boîtage.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"adresses_sans_nombre":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["logements","adresses_sans_nombre"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["secteur","type_bien","comptage","precision","adresses","boitage","qualite","calcule_le","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"element","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"pre_marche_zone"}},"/codes-postaux/{cp}/secteur":{"get":{"operationId":"secteur_code_postal","summary":"Mon secteur en 30 secondes","description":"Pour un code postal, les deux signaux de la page « Mon secteur » de pillr.fr : les adresses en pré-marché pur (DPE individuel de moins de 90 jours, ni en vente ni vendues depuis, dont les passoires F et G), et les particuliers qui vendent seuls depuis plus de 50 jours et sont encore en ligne, dont ceux qui ont baissé leur prix ; avec detail=true, la liste de leurs annonces, sans le nom ni les coordonnées du vendeur. Sans annonce de particulier dans le code postal, le compte passe au département et le dit. Coût : 2 crédits par appel réussi.","parameters":[{"name":"cp","in":"path","required":true,"schema":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},{"name":"detail","in":"query","required":false,"schema":{"description":"true : la liste des annonces de particuliers.","type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cp":{"type":"string"},"commune":{"description":"La commune la plus peuplée de ce code postal.","anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"type":"string"},"pre_marche_pur":{"type":"object","properties":{"n":{"description":"Adresses à DPE individuel de moins de 90 jours, ni en vente ni vendues depuis.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passoires":{"description":"Dont étiquette F ou G.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["n","passoires","qualite"],"additionalProperties":false},"particuliers":{"type":"object","properties":{"echelle":{"description":"departement quand le code postal n'a aucune annonce de particulier ouverte depuis assez longtemps.","type":"string","enum":["secteur","departement"]},"n_plus_50_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duree_moyenne_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_avec_baisse":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"annonces":{"description":"Les annonces elles-mêmes, avec detail=true ; jamais le nom ni les coordonnées du vendeur.","anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"parue_depuis_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"derniere_baisse_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"type":"string","const":"particulier"}},"required":["id","lien","titre","prix","surface","commune","parue_depuis_jours","derniere_baisse_le","type_vendeur"],"additionalProperties":false}},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["echelle","n_plus_50_jours","duree_moyenne_jours","n_avec_baisse","annonces","qualite"],"additionalProperties":false},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cp","commune","departement","pre_marche_pur","particuliers","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"secteur"}},"/estimations/affinees":{"post":{"operationId":"estimer_bien_affine","summary":"Estimation affinée par IA","description":"La même estimation qu'estimer_bien (même moteur, même sortie), affinée par un modèle de langage à partir de l'état, des qualités, de la description, de l'exposition, des annexes, des équipements et de photos lues sur des liens https publics (JPEG, PNG ou WebP). Rend en plus la liste unique des ajustements, chacun avec sa nature, son pourcentage, son motif et sa source (barème ou IA, chaque ligne IA vérifiée par le serveur), l'état de l'affinage et la lecture des photos. Les photos sont lues le temps de l'appel, jamais écrites ni renvoyées. Une panne de l'IA rend l'estimation déterministe, et le dit. Coût : 30 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"description":"Adresse du bien en toutes lettres, numéro et commune compris.","type":"string","minLength":5,"maxLength":160},"code_postal":{"description":"Code postal, pour départager une adresse homonyme.","type":"string","pattern":"^\\d{5}$"},"insee":{"description":"Code INSEE de la commune, quand l'adresse n'est pas donnée.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"type":{"type":"string","enum":["appartement","maison"]},"surface":{"description":"Surface habitable, en m².","type":"number","minimum":9,"maximum":2000},"pieces":{"type":"integer","minimum":1,"maximum":30},"chambres":{"type":"integer","minimum":0,"maximum":20},"etage":{"description":"Appartement : étage, 0 pour le rez-de-chaussée.","type":"integer","minimum":-1,"maximum":40},"etages_immeuble":{"type":"integer","minimum":0,"maximum":60},"ascenseur":{"type":"boolean"},"terrain_m2":{"description":"Maison : surface du terrain, en m².","type":"number","minimum":0,"maximum":100000},"dpe":{"type":"string","enum":["A","B","C","D","E","F","G"]},"annee_construction":{"type":"integer","minimum":1700,"maximum":2030},"prix_demande":{"description":"Prix demandé ou affiché, en euros.","type":"integer","minimum":10000,"maximum":50000000},"loyer_pratique":{"description":"Loyer mensuel pratiqué, en euros : remplace le loyer estimé dans le rendement.","type":"number","exclusiveMinimum":0,"maximum":100000},"etat":{"description":"État d'entretien du bien.","type":"string","enum":["a_renover","travaux","correct","renove","neuf"]},"qualites":{"description":"Qualités ou défauts du bien, une courte phrase chacun.","maxItems":20,"type":"array","items":{"type":"string","minLength":2,"maxLength":120}},"description":{"description":"Description libre du bien.","type":"string","maxLength":1200},"exposition":{"type":"string","enum":["nord","sud","est","ouest","sud_est","sud_ouest","nord_est","nord_ouest","traversant"]},"annexes":{"type":"object","properties":{"parking":{"type":"integer","minimum":0,"maximum":3},"garage":{"type":"boolean"},"cave":{"type":"boolean"},"balcon_m2":{"type":"number","minimum":0,"maximum":200},"terrasse_m2":{"type":"number","minimum":0,"maximum":500}},"additionalProperties":false},"equipements":{"description":"Équipements, clés du catalogue de la page /estimation ; une clé inconnue est ignorée.","maxItems":60,"type":"array","items":{"type":"string","minLength":2,"maxLength":40}},"photos":{"description":"Liens https publics vers des photos du bien (JPEG, PNG ou WebP), 12 au plus, de 1.6 Mo chacune au plus. Aucune redirection n'est suivie.","maxItems":12,"type":"array","items":{"type":"string","maxLength":500}}},"required":["type","surface"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"bien":{"type":"object","properties":{"type":{"type":"string","enum":["appartement","maison"]},"surface_m2":{"type":"number"},"pieces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"commune":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"origine":{"description":"adresse : faits situés à l'adresse donnée ; commune : faits décrits dans la commune.","type":"string","enum":["adresse","commune"]}},"required":["type","surface_m2","pieces","commune","code_postal","insee","origine"],"additionalProperties":false},"valeur":{"type":"object","properties":{"bas":{"type":"number"},"valeur":{"type":"number"},"haut":{"type":"number"},"prix_m2":{"type":"number"},"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","type":"number"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["bas","valeur","haut","prix_m2","demi_largeur_pct","qualite"],"additionalProperties":false},"niveau":{"type":"object","properties":{"nature":{"description":"mesure : ventes DVF réelles ; estime : modèle Pillr, faute de ventes locales du type.","type":"string","enum":["mesure","estime"]},"socle":{"description":"Socle retenu par la cascade : ventes comparables, quartier ou commune.","type":"string","enum":["comparables_dvf","iris","commune"]},"libelle":{"type":"string"},"ventes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rayon_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_socle":{"description":"Prix au m² du socle, avant les ajustements du bien.","type":"number"}},"required":["nature","socle","libelle","ventes","rayon_m","millesime","prix_m2_socle"],"additionalProperties":false},"fiabilite":{"type":"string","enum":["elevee","correcte","limitee"]},"comparables":{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesimes":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"ventes":{"description":"Ventes DVF retenues, avec leur adresse DVF quand elle est retrouvée et leurs coordonnées. Vide sans adresse précise ou faute de ventes assez proches.","type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"type":{"type":"string","enum":["appartement","maison"]},"surface_m2":{"type":"number"},"prix":{"type":"number"},"prix_m2":{"type":"number"},"distance_m":{"description":"Distance au bien, arrondie à 50 m.","anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"adresse":{"description":"Adresse DVF de la vente (numéro et voie), relue au lac par la commune, la date et le prix ; null si la vente est introuvable, ambiguë ou sans numéro.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"id_mutation":{"description":"Identifiant DVF de la mutation, quand l'adresse a été retrouvée.","anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"description":"Latitude DVF de la vente (open data).","anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"description":"Longitude DVF de la vente (open data).","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["date","type","surface_m2","prix","prix_m2","distance_m","millesime","adresse","code_postal","id_mutation","lat","lon"],"additionalProperties":false}}},"required":["n","prix_m2_median","millesimes","ventes"],"additionalProperties":false},"loyer":{"anyOf":[{"type":"object","properties":{"mensuel":{"type":"number"},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]},"nature":{"description":"observe_commune : loyer d'annonce observé dans la commune ; predit_maille : prédit à la maille de la Carte des loyers.","type":"string","enum":["observe_commune","predit_maille"]},"charges_comprises":{"description":"Loyer d'annonce de la Carte des loyers, charges comprises.","type":"boolean","const":true},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["mensuel","bas","haut","nature","charges_comprises","qualite"],"additionalProperties":false},{"type":"null"}]},"rendement":{"description":"null sans loyer estimé ni loyer pratiqué.","anyOf":[{"type":"object","properties":{"sur":{"description":"Prix sur lequel les rendements sont calculés.","type":"string","enum":["prix_demande","valeur_estimee"]},"prix":{"type":"number"},"loyer":{"description":"Loyer retenu : celui donné par l'appelant, ou le loyer estimé.","type":"string","enum":["pratique","estime"]},"loyer_mensuel":{"type":"number"},"brut_pct":{"description":"12 fois le loyer mensuel, divisé par le prix, en %.","type":"number"},"frais_notaire":{"description":"Frais d'acquisition retenus : 8 % du prix, en euros.","type":"number"},"net_hors_travaux_pct":{"description":"85 % de 12 fois le loyer mensuel, divisés par le prix augmenté des frais, en %. Aucun budget de travaux n'est compté : cette opération n'en estime pas.","type":"number"}},"required":["sur","prix","loyer","loyer_mensuel","brut_pct","frais_notaire","net_hors_travaux_pct"],"additionalProperties":false},{"type":"null"}]},"prix_demande":{"description":"Le prix demandé situé face au marché ; null sans prix demandé.","anyOf":[{"type":"object","properties":{"prix":{"type":"number"},"prix_m2":{"type":"number"},"ecart_pct":{"description":"Écart du prix demandé à la valeur estimée, en % (positif : plus cher).","type":"number"},"position":{"type":"string","enum":["sous_la_fourchette","dans_la_fourchette","au_dessus_de_la_fourchette"]},"annonces_en_vente":{"description":"Annonces comparables en vente dans la commune (prix affichés) ; null quand elles sont trop peu nombreuses.","anyOf":[{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_m2_median":{"type":"number"},"part_moins_cheres_pct":{"type":"number"}},"required":["n","prix_m2_median","part_moins_cheres_pct"],"additionalProperties":false},{"type":"null"}]},"baisses":{"description":"Annonces comparables du secteur dont le prix a baissé, sans remontée ; null quand elles sont trop peu nombreuses.","anyOf":[{"type":"object","properties":{"biens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"annonces_suivies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"baisse_mediane_pct":{"type":"number"},"prix_m2_median_apres_baisse":{"type":"number"},"fenetre_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["biens","annonces_suivies","baisse_mediane_pct","prix_m2_median_apres_baisse","fenetre_jours"],"additionalProperties":false},{"type":"null"}]},"retraits":{"description":"Annonces comparables retirées de la vente (vendues, expirées ou retirées, sans distinction possible) ; null quand elles sont trop peu nombreuses.","anyOf":[{"type":"object","properties":{"biens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dernier_prix_m2_median":{"type":"number"},"fenetre_jours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["biens","dernier_prix_m2_median","fenetre_jours"],"additionalProperties":false},{"type":"null"}]}},"required":["prix","prix_m2","ecart_pct","position","annonces_en_vente","baisses","retraits"],"additionalProperties":false},{"type":"null"}]},"dpe":{"description":"null sans étiquette DPE donnée.","anyOf":[{"type":"object","properties":{"classe":{"type":"string","enum":["A","B","C","D","E","F","G"]},"interdiction_location":{"description":"Premier jour où la location d'un logement de cette classe est interdite (AAAA-MM-JJ), selon le calendrier de la loi Climat et résilience en métropole (G 2025, F 2028, E 2034). null : classe sans échéance, DPE absent, ou adresse hors de la métropole (le calendrier des outre-mer n'est pas servi).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"mois_restants":{"description":"Mois pleins avant l'échéance ; 0 quand l'interdiction est déjà en vigueur ; null sans échéance.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sortie":{"description":"Coût de sortie d'une passoire (classe E, F ou G) vers D, C ou B, mesuré sur les audits énergétiques réglementaires de l'ADEME pour des logements comparables. null hors des classes E à G, pour un type de logement sans comparable, ou hors de la métropole.","anyOf":[{"type":"object","properties":{"classe_depart":{"type":"string","enum":["E","F","G"]},"cibles":{"type":"array","items":{"type":"object","properties":{"vers":{"description":"Classe visée.","type":"string","enum":["D","C","B"]},"n_audits":{"description":"Nombre d'audits comparables de la cellule retenue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"euros":{"description":"Coût des travaux chiffré par les audits comparables, sur leurs propres surfaces, en euros arrondis à la centaine.","type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},"eur_m2":{"description":"Le même coût rapporté à la surface habitable, en euros par m² ; null s'il y a trop peu d'audits avec surface.","anyOf":[{"type":"object","properties":{"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"surface_mediane_m2":{"description":"Surface habitable médiane des logements audités.","anyOf":[{"type":"number"},{"type":"null"}]},"pour_la_surface":{"description":"Le coût au m² des audits appliqué à la surface du bien, quand elle est connue : le chiffre à citer.","anyOf":[{"type":"object","properties":{"surface_m2":{"type":"number"},"mediane":{"type":"number"},"p25":{"type":"number"},"p75":{"type":"number"}},"required":["surface_m2","mediane","p25","p75"],"additionalProperties":false},{"type":"null"}]},"part_au_dela":{"description":"Part des audits (0 à 1) dont l'étape chiffrée atteint déjà la classe suivante : le chiffrage dépasse alors la cible.","anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Les audits comparables, en clair (type de logement, zone climatique, période de construction).","type":"string"},"niveau":{"description":"Finesse de la cellule retenue, de la plus fine (type, zone climatique et période) à la plus large (type seul, France métropolitaine).","type":"string","enum":["complet","sans_periode","sans_zone","national"]}},"required":["vers","n_audits","euros","eur_m2","surface_mediane_m2","pour_la_surface","part_au_dela","perimetre","niveau"],"additionalProperties":false}},"lecture":{"description":"Ce que mesure le chiffre : une estimation d'auditeur, pas un devis.","type":"string"},"source":{"type":"string"}},"required":["classe_depart","cibles","lecture","source"],"additionalProperties":false},{"type":"null"}]}},"required":["classe","interdiction_location","mois_restants","sortie"],"additionalProperties":false},{"type":"null"}]},"erreur":{"description":"L'erreur de la méthode, telle que le moteur la publie.","type":"string"},"limites":{"type":"array","items":{"type":"string"}},"mention":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"calcule_le":{"type":"string"},"ajustements":{"description":"La liste unique des ajustements appliqués, une ligne par nature.","type":"array","items":{"type":"object","properties":{"nature":{"description":"Nature de l'ajustement (surface, etage, dpe, etat_general, prestations...).","type":"string"},"libelle":{"type":"string"},"pct":{"description":"Points de pourcentage appliqués au prix de référence du secteur.","type":"number"},"motif":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"bareme : repère calculé sur nos données ; ia : lecture de la description ou des photos, vérifiée par le serveur.","type":"string","enum":["bareme","ia"]}},"required":["nature","libelle","pct","motif","source"],"additionalProperties":false}},"affinage":{"type":"object","properties":{"applique":{"type":"boolean"},"modele":{"description":"Modèle de langage qui a relu le dossier, quand l'affinage a tourné.","anyOf":[{"type":"string"},{"type":"null"}]},"raison":{"type":"string"}},"required":["applique","modele","raison"],"additionalProperties":false},"vision":{"description":"La lecture des photos ; null sans photo.","anyOf":[{"type":"object","properties":{"disponible":{"type":"boolean"},"photos_recues":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photos_analysees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"equipements":{"description":"Équipements reconnus sur les photos (catalogue de la page /estimation).","type":"array","items":{"type":"string"}},"constats":{"description":"Constats factuels tirés des photos, sans prix ni pourcentage.","type":"array","items":{"type":"string"}},"raison_indisponible":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["disponible","photos_recues","photos_analysees","equipements","constats","raison_indisponible"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["bien","valeur","niveau","fiabilite","comparables","loyer","rendement","prix_demande","dpe","erreur","limites","mention","sources","calcule_le","ajustements","affinage","vision","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":30,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"estimer_bien_affine"}},"/communes/{insee}/terrain-reference":{"get":{"operationId":"terrain_reference","summary":"Terrain de référence d'une maison","description":"La surface de terrain médiane d'une maison vendue dans le département, pour le type de commune (groupe déduit du zonage ABC et de la population), telle que le moteur d'estimation la retient : c'est le terrain que le prix du secteur porte déjà. Le niveau dit si la cellule département et groupe est mesurée ou si la médiane nationale du groupe sert de repli. Par commune (code INSEE), ou par département avec le groupe. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"m2":{"description":"Surface de terrain médiane d'une maison vendue, en m².","type":"number"},"groupe":{"type":"string","enum":["tendu","B2","C_bourg","C_rural"]},"libelle_groupe":{"type":"string"},"niveau":{"description":"departement : cellule mesurée du département ; national : médiane nationale du groupe, faute de ventes assez nombreuses dans la cellule.","type":"string","enum":["departement","national"]},"departement":{"type":"string"},"commune":{"description":"La commune demandée et ce qui fixe son groupe ; null pour une demande par département.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["insee","nom","zone_abc","population"],"additionalProperties":false},{"type":"null"}]},"mesure":{"type":"object","properties":{"ventes_total":{"description":"Ventes DVF d'une maison seule retenues pour toute la table.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"millesime":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mesure_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"seuil_cellule":{"description":"Ventes minimales d'une cellule département et groupe.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ventes_total","millesime","mesure_le","seuil_cellule"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["m2","groupe","libelle_groupe","niveau","departement","commune","mesure","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"terrain_reference"}},"/departements/{code}/terrain-reference":{"get":{"operationId":"terrain_reference_2","summary":"Terrain de référence d'une maison","description":"La surface de terrain médiane d'une maison vendue dans le département, pour le type de commune (groupe déduit du zonage ABC et de la population), telle que le moteur d'estimation la retient : c'est le terrain que le prix du secteur porte déjà. Le niveau dit si la cellule département et groupe est mesurée ou si la médiane nationale du groupe sert de repli. Par commune (code INSEE), ou par département avec le groupe. Coût : 1 crédit par appel réussi.","parameters":[{"name":"code","in":"path","required":true,"schema":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},{"name":"groupe","in":"query","required":false,"schema":{"description":"Groupe de communes, pour une demande par département : tendu (zones A et B1), B2, C_bourg ou C_rural.","type":"string","enum":["tendu","B2","C_bourg","C_rural"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"m2":{"description":"Surface de terrain médiane d'une maison vendue, en m².","type":"number"},"groupe":{"type":"string","enum":["tendu","B2","C_bourg","C_rural"]},"libelle_groupe":{"type":"string"},"niveau":{"description":"departement : cellule mesurée du département ; national : médiane nationale du groupe, faute de ventes assez nombreuses dans la cellule.","type":"string","enum":["departement","national"]},"departement":{"type":"string"},"commune":{"description":"La commune demandée et ce qui fixe son groupe ; null pour une demande par département.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["insee","nom","zone_abc","population"],"additionalProperties":false},{"type":"null"}]},"mesure":{"type":"object","properties":{"ventes_total":{"description":"Ventes DVF d'une maison seule retenues pour toute la table.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"millesime":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mesure_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"seuil_cellule":{"description":"Ventes minimales d'une cellule département et groupe.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ventes_total","millesime","mesure_le","seuil_cellule"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["m2","groupe","libelle_groupe","niveau","departement","commune","mesure","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"terrain_reference"}},"/communes/{insee}":{"get":{"operationId":"marche_zone","summary":"Marché d'une commune","description":"Marché immobilier d'une commune ou d'un arrondissement, par code INSEE : prix de référence au m² des appartements et des maisons avec leur provenance (mesuré sur les ventes DVF ou estimé) et le nombre de ventes, loyer d'annonce au m² et loyers par type de logement (Carte des loyers), rendement brut théorique, évolution des prix sur 1 et 3 ans, zone ABC, et le marché en vente du dernier mois calculé (annonces en ligne, nouvelles annonces, prix affiché médian, part des baisses, délai médian en ligne). Mêmes chiffres que les pages communes de pillr.fr. Paris, Lyon et Marseille sont servies en agrégat de leurs arrondissements. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"type":"string"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"number"},{"type":"null"}]},"agrege":{"description":"Vrai pour Paris, Lyon et Marseille : agrégat de leurs arrondissements, pondéré par les ventes.","type":"boolean"},"prix_m2":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"provenance_appartement":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"provenance_maison":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"ventes_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrondissements":{"anyOf":[{"type":"object","properties":{"appartement":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avec_prix":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mesures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","avec_prix","mesures","estimes","ventes"],"additionalProperties":false},"maison":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avec_prix":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mesures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","avec_prix","mesures","estimes","ventes"],"additionalProperties":false}},"required":["appartement","maison"],"additionalProperties":false},{"type":"null"}]}},"required":["appartement","maison","provenance_appartement","provenance_maison","ventes_appartement","ventes_maison","millesime","arrondissements"],"additionalProperties":false},"loyer_m2":{"type":"object","properties":{"mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_95":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_95":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["mensuel","min_95","max_95","source","millesime"],"additionalProperties":false},"loyers_par_typologie":{"type":"array","items":{"type":"object","properties":{"typologie":{"type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"type":"number"},"segment":{"type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"repli":{"type":"boolean"},"loyer_m2":{"type":"number"},"loyer_mensuel":{"type":"number"},"fourchette_mensuelle":{"anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]}},"required":["typologie","surface_m2","segment","repli","loyer_m2","loyer_mensuel","fourchette_mensuelle"],"additionalProperties":false}},"rendement_brut_pct":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"maison":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["appartement","maison"],"additionalProperties":false},"evolution_prix_pct":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"confiance":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["un_an","trois_ans","confiance"],"additionalProperties":false},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"marche_en_vente":{"type":"object","properties":{"statut":{"description":"ok : chiffres servis ; perime : calcul trop ancien ; absent : aucune annonce de la commune le dernier mois ; indisponible : source momentanément injoignable.","type":"string","enum":["ok","perime","absent","indisponible"]},"mois":{"description":"Mois des chiffres, AAAA-MM.","anyOf":[{"type":"string"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonces_en_ligne":{"anyOf":[{"type":"number"},{"type":"null"}]},"nouvelles_annonces":{"anyOf":[{"type":"number"},{"type":"null"}]},"annonces_retirees":{"anyOf":[{"type":"number"},{"type":"null"}]},"delai_median_jours":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_baissees_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_affiche_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_annonces_en_ligne_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_nouvelles_annonces_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_prix_affiche_m2_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"volumes_comparables":{"description":"Faux quand l'un des deux mois comparés précède la stabilisation de la collecte : aucune variation de volume n'est alors calculée.","anyOf":[{"type":"boolean"},{"type":"null"}]},"mois_mise_a_jour_collecte":{"description":"Vrai quand le mois trahit un changement de la collecte plutôt que du marché : seuls les nouvelles annonces et le prix affiché sont servis.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["statut","mois","calcule_le","annonces_en_ligne","nouvelles_annonces","annonces_retirees","delai_median_jours","part_baissees_pct","prix_affiche_m2_median","variation_annonces_en_ligne_pct","variation_nouvelles_annonces_pct","variation_prix_affiche_m2_pct","volumes_comparables","mois_mise_a_jour_collecte"],"additionalProperties":false},"donnees_du":{"description":"Date de reconstruction des données de la commune.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","code_postal","departement","region","population","agrege","prix_m2","loyer_m2","loyers_par_typologie","rendement_brut_pct","evolution_prix_pct","zone_abc","marche_en_vente","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"marche_zone"}},"/communes/{insee}/synthese":{"get":{"operationId":"synthese_zone","summary":"Synthèse complète d'une commune","description":"Une commune en un appel, avec les chiffres de l'outil de zone du Hub : marché (prix et provenance, rendements, demande, vacance, loyer, évolutions, passoires, transactions), démographie, moyennes des annonces analysées par Pillr dans la commune, score Pillr et ses huit sous-scores, marchabilité et équipements à 500 m, loyer prédit avec son intervalle à 95 %, loyers par typologie et loyer d'un logement donné (typologie, surface), mesures de zone (équipements, gare et aéroport, délinquance, risques), signal de prix, QPV et zone ABC, ratios d'accessibilité, courte durée, points forts et signaux d'alerte de l'analyse rédigée, marché en vente du dernier mois. Paris, Lyon et Marseille se lisent par arrondissement. Coût : 3 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"typologie","in":"query","required":false,"schema":{"description":"Typologie du logement dont estimer le loyer (T1 à T5 ou maison).","type":"string","enum":["T1","T2","T3","T4","T5","maison"]}},{"name":"surface_m2","in":"query","required":false,"schema":{"description":"Surface du logement dont estimer le loyer, en m².","type":"number","exclusiveMinimum":0,"maximum":1000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"marche":{"type":"object","properties":{"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"provenance_appartement":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"provenance_maison":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"ventes_appartement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ventes_maison":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rendement_brut_appartement_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_maison_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_demande":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacance_locative_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_1_an_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_3_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_5_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"confiance_evolution":{"anyOf":[{"type":"string"},{"type":"null"}]},"passoires_dpe_fg_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"transactions_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2_appartement","prix_m2_maison","provenance_appartement","provenance_maison","ventes_appartement","ventes_maison","rendement_brut_appartement_pct","rendement_brut_maison_pct","score_demande","vacance_locative_pct","loyer_m2","evolution_prix_1_an_pct","evolution_prix_3_ans_pct","evolution_prix_5_ans_pct","confiance_evolution","passoires_dpe_fg_pct","transactions_recentes","qualite"],"additionalProperties":false},"demographie":{"type":"object","properties":{"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"salaire_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_chomage_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_hlm_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil_socio":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["population","salaire_median","taux_chomage_pct","part_hlm_pct","profil_socio"],"additionalProperties":false},"catalogue_pillr":{"type":"object","properties":{"annonces_analysees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"score_moyen":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_moyen_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annonces_analysees","score_moyen","rendement_brut_moyen_pct","qualite"],"additionalProperties":false},"score_pillr":{"anyOf":[{"type":"number"},{"type":"null"}]},"scores_detail":{"type":"object","properties":{"rentabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"demande":{"anyOf":[{"type":"number"},{"type":"null"}]},"liquidite":{"anyOf":[{"type":"number"},{"type":"null"}]},"croissance":{"anyOf":[{"type":"number"},{"type":"null"}]},"stabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"anyOf":[{"type":"number"},{"type":"null"}]},"services":{"anyOf":[{"type":"number"},{"type":"null"}]},"securite":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["rentabilite","demande","liquidite","croissance","stabilite","qualite","services","securite"],"additionalProperties":false},"qualite_lieu":{"type":"object","properties":{"walkability":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite_vie":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["walkability","qualite_vie"],"additionalProperties":false},"poi_500m":{"type":"object","properties":{"total":{"anyOf":[{"type":"number"},{"type":"null"}]},"transports":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecoles":{"anyOf":[{"type":"number"},{"type":"null"}]},"commerces":{"anyOf":[{"type":"number"},{"type":"null"}]},"sante":{"anyOf":[{"type":"number"},{"type":"null"}]},"loisirs":{"anyOf":[{"type":"number"},{"type":"null"}]},"restauration":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["total","transports","ecoles","commerces","sante","loisirs","restauration"],"additionalProperties":false},"loyer_predit":{"type":"object","properties":{"loyer_m2_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"ic95_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"ic95_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["loyer_m2_mensuel","ic95_min","ic95_max","source","qualite"],"additionalProperties":false},"loyers_par_typologie":{"type":"array","items":{"type":"object","properties":{"typologie":{"type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"type":"number"},"segment":{"type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"repli":{"type":"boolean"},"loyer_m2":{"type":"number"},"loyer_mensuel":{"type":"number"},"fourchette_mensuelle":{"anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]}},"required":["typologie","surface_m2","segment","repli","loyer_m2","loyer_mensuel","fourchette_mensuelle"],"additionalProperties":false}},"loyers_millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_estime":{"description":"Loyer d'un logement donné (typologie, surface) ; null sans l'une ni l'autre.","anyOf":[{"type":"object","properties":{"typologie":{"type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"estimation":{"anyOf":[{"type":"object","properties":{"typologie":{"type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"type":"number"},"segment":{"type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"repli":{"type":"boolean"},"loyer_m2":{"type":"number"},"loyer_mensuel":{"type":"number"},"fourchette_mensuelle":{"anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]}},"required":["typologie","surface_m2","segment","repli","loyer_m2","loyer_mensuel","fourchette_mensuelle"],"additionalProperties":false},{"type":"null"}]},"indisponible":{"description":"Pourquoi aucun loyer n'est estimé (maison sans loyer publié, surface invalide).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["typologie","surface_m2","estimation","indisponible"],"additionalProperties":false},{"type":"null"}]},"mesures_zone":{"type":"object","properties":{"equipements":{"anyOf":[{"type":"object","properties":{"comptes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"essentiels_absents":{"type":"array","items":{"type":"string"}},"resume":{"type":"string"}},"required":["comptes","essentiels_absents","resume"],"additionalProperties":false},{"type":"null"}]},"acces":{"anyOf":[{"type":"string"},{"type":"null"}]},"securite":{"anyOf":[{"type":"string"},{"type":"null"}]},"risques":{"type":"string"}},"required":["equipements","acces","securite","risques"],"additionalProperties":false},"signal_prix":{"type":"object","properties":{"signal_deal":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_residuel_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_attendu_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"volatilite_prix":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["signal_deal","prix_residuel_pct","prix_attendu_m2","volatilite_prix"],"additionalProperties":false},"contraintes":{"type":"object","properties":{"est_en_qpv":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nb_qpv":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["est_en_qpv","nb_qpv","zone_abc"],"additionalProperties":false},"accessibilite_prix":{"type":"object","properties":{"ratio_loyer_revenu":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_revenu_annees":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["ratio_loyer_revenu","prix_revenu_annees"],"additionalProperties":false},"courte_duree":{"type":"object","properties":{"revenu_lcd_annuel_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_occupation_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"revpar_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_lcd":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_lld":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_residences_secondaires_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["revenu_lcd_annuel_eur","taux_occupation_pct","revpar_eur","score_lcd","score_lld","part_residences_secondaires_pct"],"additionalProperties":false},"avis_pillr":{"type":"object","properties":{"points_forts":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","raison"],"additionalProperties":false}},"signaux_alerte":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"attenuation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","raison","attenuation"],"additionalProperties":false}}},"required":["points_forts","signaux_alerte"],"additionalProperties":false},"marche_en_vente":{"type":"object","properties":{"statut":{"description":"ok : chiffres servis ; perime : calcul trop ancien ; absent : aucune annonce de la commune le dernier mois ; indisponible : source momentanément injoignable.","type":"string","enum":["ok","perime","absent","indisponible"]},"mois":{"description":"Mois des chiffres, AAAA-MM.","anyOf":[{"type":"string"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonces_en_ligne":{"anyOf":[{"type":"number"},{"type":"null"}]},"nouvelles_annonces":{"anyOf":[{"type":"number"},{"type":"null"}]},"annonces_retirees":{"anyOf":[{"type":"number"},{"type":"null"}]},"delai_median_jours":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_baissees_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_affiche_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_annonces_en_ligne_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_nouvelles_annonces_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_prix_affiche_m2_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"volumes_comparables":{"description":"Faux quand l'un des deux mois comparés précède la stabilisation de la collecte : aucune variation de volume n'est alors calculée.","anyOf":[{"type":"boolean"},{"type":"null"}]},"mois_mise_a_jour_collecte":{"description":"Vrai quand le mois trahit un changement de la collecte plutôt que du marché : seuls les nouvelles annonces et le prix affiché sont servis.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["statut","mois","calcule_le","annonces_en_ligne","nouvelles_annonces","annonces_retirees","delai_median_jours","part_baissees_pct","prix_affiche_m2_median","variation_annonces_en_ligne_pct","variation_nouvelles_annonces_pct","variation_prix_affiche_m2_pct","volumes_comparables","mois_mise_a_jour_collecte"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","code_postal","departement","region","marche","demographie","catalogue_pillr","score_pillr","scores_detail","qualite_lieu","poi_500m","loyer_predit","loyers_par_typologie","loyers_millesime","loyer_estime","mesures_zone","signal_prix","contraintes","accessibilite_prix","courte_duree","avis_pillr","marche_en_vente","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"synthese_zone"}},"/communes/{insee}/scores":{"get":{"operationId":"scores_commune","summary":"Score Pillr et scores d'une commune","description":"Scores d'une commune tels que le pipeline de Pillr les publie : score Pillr sur 100 et ses huit sous-scores (rentabilité, demande, liquidité, croissance, stabilité, qualité, services, sécurité), scores d'attractivité, de location longue et courte durée, de tourisme et de démographie, z-scores et percentiles des prix, du rendement et des loyers, volatilité, prix attendu par le modèle départemental et écart au prix observé, ratios d'accessibilité. Un sous-score de rentabilité posé par défaut faute de rendement mesuré est signalé. Paris, Lyon et Marseille se lisent par arrondissement. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"score_pillr":{"description":"Score Pillr sur 100 : moyenne pondérée des huit sous-scores.","anyOf":[{"type":"number"},{"type":"null"}]},"sous_scores":{"type":"object","properties":{"rentabilite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"demande":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"liquidite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"croissance":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"stabilite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"services":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"securite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["rentabilite","demande","liquidite","croissance","stabilite","qualite","services","securite"],"additionalProperties":false},"sous_scores_imputes":{"description":"Sous-scores posés à leur valeur par défaut faute de donnée (rentabilité sans aucun rendement mesuré).","type":"array","items":{"type":"string","enum":["rentabilite"]}},"scores":{"type":"object","properties":{"attractivite":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"location_longue_duree":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"location_courte_duree":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"tourisme":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]},"demographie":{"description":"Note sur 100 ; null si non calculée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["attractivite","location_longue_duree","location_courte_duree","tourisme","demographie"],"additionalProperties":false},"zscores":{"type":"object","properties":{"prix_appartement_national":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_appartement_regional":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_appartement_departemental":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_national":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_national":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix_appartement_national","prix_appartement_regional","prix_appartement_departemental","rendement_national","loyer_national"],"additionalProperties":false},"percentiles":{"type":"object","properties":{"prix_appartement_national":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_appartement_regional":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_national":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_national":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix_appartement_national","prix_appartement_regional","rendement_national","loyer_national"],"additionalProperties":false},"volatilite_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_attendu_m2":{"description":"Prix au m² attendu par le modèle départemental (revenu, services).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_residuel_pct":{"description":"Écart du prix observé au prix attendu, en % ; négatif : sous le prix attendu.","anyOf":[{"type":"number"},{"type":"null"}]},"residuel_sature":{"description":"Vrai quand le modèle est hors de son domaine de validité (écart plafonné).","anyOf":[{"type":"boolean"},{"type":"null"}]},"signal_deal":{"description":"Position face au prix attendu du département (bien_en_dessous_dept à bien_au_dessus_dept).","anyOf":[{"type":"string"},{"type":"null"}]},"ratio_loyer_revenu":{"description":"Loyer mensuel de 30 m² rapporté au revenu médian mensuel.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_revenu_annees":{"description":"Années de revenu médian pour acheter 50 m² d'appartement au prix de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","score_pillr","sous_scores","sous_scores_imputes","scores","zscores","percentiles","volatilite_prix","prix_attendu_m2","prix_residuel_pct","residuel_sature","signal_deal","ratio_loyer_revenu","prix_revenu_annees","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"scores_commune"}},"/communes/{insee}/profil":{"get":{"operationId":"profil_commune","summary":"Profil socio-démographique et politique","description":"Profil d'une commune, chaque bloc lu dans sa source publique et servi avec sa qualité : population et codes postaux (recensement), âge moyen, chômage et part de HLM, revenus par unité de consommation, déciles 1 et 9, pauvreté et indice de Gini (Filosofi), quartiers prioritaires (nombre et codes), indice de position sociale des lycées, premier tour de la présidentielle 2022 (orientation, candidat en tête, parts par bloc, abstention). Un bloc absent de sa source est servi vide, avec n = 0. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"population":{"type":"object","properties":{"valeur":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","millesime","codes_postaux","qualite"],"additionalProperties":false},"age_moyen":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_chomage_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_hlm_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"marche_qualite":{"description":"Qualité des champs âge, chômage et HLM, lus dans la table communale de Pillr.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"revenus":{"type":"object","properties":{"median_uc":{"description":"Revenu disponible médian par unité de consommation, en euros par an.","anyOf":[{"type":"number"},{"type":"null"}]},"decile_1":{"anyOf":[{"type":"number"},{"type":"null"}]},"decile_9":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_pauvrete_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"gini":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["median_uc","decile_1","decile_9","taux_pauvrete_pct","gini","millesime","qualite"],"additionalProperties":false},"qpv":{"type":"object","properties":{"en_qpv":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"codes":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["en_qpv","n","codes","qualite"],"additionalProperties":false},"ips_lycees":{"type":"object","properties":{"lycees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"moyen":{"anyOf":[{"type":"number"},{"type":"null"}]},"maximum":{"anyOf":[{"type":"number"},{"type":"null"}]},"minimum":{"anyOf":[{"type":"number"},{"type":"null"}]},"moyenne_departement":{"anyOf":[{"type":"number"},{"type":"null"}]},"premium":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["lycees","moyen","maximum","minimum","moyenne_departement","premium","qualite"],"additionalProperties":false},"presidentielle_2022":{"type":"object","properties":{"orientation":{"anyOf":[{"type":"string"},{"type":"null"}]},"premier":{"description":"Candidat arrivé en tête au premier tour.","anyOf":[{"type":"string"},{"type":"null"}]},"part_premier_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"blocs_pct":{"type":"object","properties":{"gauche_radicale":{"anyOf":[{"type":"number"},{"type":"null"}]},"gauche":{"anyOf":[{"type":"number"},{"type":"null"}]},"centre":{"anyOf":[{"type":"number"},{"type":"null"}]},"droite":{"anyOf":[{"type":"number"},{"type":"null"}]},"extreme_droite":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["gauche_radicale","gauche","centre","droite","extreme_droite"],"additionalProperties":false},"abstention_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"blancs_nuls_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"inscrits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["orientation","premier","part_premier_pct","blocs_pct","abstention_pct","blancs_nuls_pct","inscrits","qualite"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","population","age_moyen","taux_chomage_pct","part_hlm_pct","marche_qualite","revenus","qpv","ips_lycees","presidentielle_2022","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"profil_commune"}},"/communes/{insee}/parc":{"get":{"operationId":"parc_commune","summary":"Parc de logements d'une commune","description":"Parc de logements d'une commune, chaque bloc depuis sa source : résidences principales, secondaires et vacantes, propriétaires et locataires (recensement) ; vacance du parc privé par année, dont plus de deux ans (LOVAC) ; diagnostics de performance énergétique par étiquette, part de passoires et série mensuelle des DPE et des audits (ADEME) ; copropriétés, lots, sans mandat, aidées, en plan de sauvegarde, gérées par un syndic bénévole, en nombre (RNC) ; autorisations et logements créés par mois, permis sur 12 et 24 mois (Sitadel). Les séries partent du mois demandé. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Premier mois des séries mensuelles, AAAA-MM.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"residences_principales":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"residences_secondaires":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vacants":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"occupants_proprietaires":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locataires_prive":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"locataires_hlm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"parts_pct":{"type":"object","properties":{"residences_principales":{"anyOf":[{"type":"number"},{"type":"null"}]},"residences_secondaires":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacants":{"anyOf":[{"type":"number"},{"type":"null"}]},"occupants_proprietaires":{"anyOf":[{"type":"number"},{"type":"null"}]},"locataires_prive":{"anyOf":[{"type":"number"},{"type":"null"}]},"locataires_hlm":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["residences_principales","residences_secondaires","vacants","occupants_proprietaires","locataires_prive","locataires_hlm"],"additionalProperties":false},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["total","residences_principales","residences_secondaires","vacants","occupants_proprietaires","locataires_prive","locataires_hlm","parts_pct","millesime","qualite"],"additionalProperties":false},"vacance":{"type":"object","properties":{"annees":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logements_prives":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vacants":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vacants_plus_2_ans":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["annee","logements_prives","vacants","vacants_plus_2_ans","taux_pct"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annees","qualite"],"additionalProperties":false},"dpe":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"repartition":{"type":"object","properties":{"A":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"B":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"C":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"D":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"E":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"F":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"G":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"non_renseigne":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["A","B","C","D","E","F","G","non_renseigne"],"additionalProperties":false},"part_fg_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_passoires_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"serie":{"type":"array","items":{"type":"object","properties":{"mois":{"type":"string"},"dimension":{"anyOf":[{"type":"string"},{"type":"null"}]},"modalite":{"anyOf":[{"type":"string"},{"type":"null"}]},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["mois","dimension","modalite","n","source"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["total","repartition","part_fg_pct","part_passoires_pct","serie","qualite"],"additionalProperties":false},"coproprietes":{"anyOf":[{"type":"object","properties":{"copros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sans_mandat":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"aidees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plan_sauvegarde":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"syndic_benevole":{"description":"Nombre de copropriétés gérées par un syndic bénévole : un compte, jamais une identité.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["copros","lots_total","lots_habitation","sans_mandat","aidees","plan_sauvegarde","syndic_benevole","qualite"],"additionalProperties":false},{"type":"null"}]},"construction":{"type":"object","properties":{"serie":{"type":"array","items":{"type":"object","properties":{"mois":{"type":"string"},"autorisations":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"logements_crees":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"individuels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demolis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["mois","autorisations","logements_crees","individuels","collectifs","demolis"],"additionalProperties":false}},"permis_12_mois":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"permis_24_mois":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"permis_commences_12_mois":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"surface_autorisee_12_mois_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"intensite_12_mois":{"description":"Logements autorisés sur 12 mois pour 1 000 habitants.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["serie","permis_12_mois","permis_24_mois","permis_commences_12_mois","surface_autorisee_12_mois_m2","intensite_12_mois","qualite"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","logements","vacance","dpe","coproprietes","construction","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"parc_commune"}},"/communes/{insee}/prix":{"get":{"operationId":"prix_commune","summary":"Prix au m² d'une commune : barème, série, évolutions","description":"Prix de référence au m² d'une commune par type de bien, avec toute sa qualité : provenance (mesuré ou estimé), ventes et ventes récentes, communes voisines et ventes du bassin, poids local, dominance, demi-bande d'incertitude, prix local brut. Rien n'est masqué : un prix sur peu de ventes est servi avec son nombre et son drapeau. S'y ajoutent la série annuelle (prix, transactions, minimum, maximum, basse confiance), les évolutions sur 1, 3 et 5 ans avec leur confiance et celle du département, l'indice annuel du département et la ligne indexée (barème multiplié par l'indice). Paris, Lyon et Marseille se lisent par arrondissement. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"type","in":"query","required":false,"schema":{"description":"Ne garder qu'un type de bien (appartement ou maison) ; les deux par défaut.","type":"string","enum":["appartement","maison"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"bareme":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["appartement","maison"]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_voisins":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_bassin":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"poids_local":{"anyOf":[{"type":"number"},{"type":"null"}]},"dominance":{"anyOf":[{"type":"number"},{"type":"null"}]},"demi_bande_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_local":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["type","millesime","prix_m2","label","n_ventes","n_ventes_recentes","nb_voisins","n_ventes_bassin","poids_local","dominance","demi_bande_pct","prix_m2_local","qualite"],"additionalProperties":false}},"serie":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_global":{"anyOf":[{"type":"number"},{"type":"null"}]},"transactions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_appartement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_maison":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"min_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"min_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"basse_confiance_appartement":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"basse_confiance_maison":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["annee","prix_m2_appartement","prix_m2_maison","prix_m2_global","transactions","transactions_appartement","transactions_maison","min_appartement","max_appartement","min_maison","max_maison","basse_confiance_appartement","basse_confiance_maison"],"additionalProperties":false}},"evolution":{"anyOf":[{"type":"object","properties":{"appartement":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"cinq_ans":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["un_an","trois_ans","cinq_ans"],"additionalProperties":false},"maison":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"cinq_ans":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["un_an","trois_ans","cinq_ans"],"additionalProperties":false},"global":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"cinq_ans":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["un_an","trois_ans","cinq_ans"],"additionalProperties":false},"tendance_5_ans":{"anyOf":[{"type":"string"},{"type":"null"}]},"confiance":{"anyOf":[{"type":"string"},{"type":"null"}]},"derniere_annee":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_annee_recente":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions_3_ans":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"departement":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["un_an","trois_ans"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["appartement","maison","global","tendance_5_ans","confiance","derniere_annee","transactions_annee_recente","transactions_3_ans","departement","qualite"],"additionalProperties":false},{"type":"null"}]},"ligne_indexee":{"description":"Trajectoire du prix de référence : barème multiplié par l'indice annuel du département, millésime par millésime.","type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["annee","prix_m2_appartement","prix_m2_maison"],"additionalProperties":false}},"indice_departement":{"type":"array","items":{"type":"object","properties":{"departement":{"type":"string"},"type":{"type":"string","enum":["appartement","maison"]},"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coef":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["departement","type","annee","coef","n_ventes"],"additionalProperties":false}},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","bareme","serie","evolution","ligne_indexee","indice_departement","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prix_commune"}},"/iris/{code_iris}":{"get":{"operationId":"prix_iris","summary":"Prix au m² par quartier IRIS","description":"Prix au m² des appartements et des maisons par quartier IRIS, avec le nombre de ventes, la provenance (mesuré au quartier ou estimé depuis le prix de la commune), le poids local, la demi-bande d'incertitude, le nom du quartier et, sur demande, son contour GeoJSON. Un quartier par son code IRIS, ou tous les quartiers d'une commune. Tous les quartiers sont servis, ceux à peu de ventes avec leur drapeau. Coût : 1 crédit par élément rendu.","parameters":[{"name":"code_iris","in":"path","required":true,"schema":{"description":"Code IRIS du quartier (9 caractères : code INSEE de la commune puis quatre chiffres).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})\\d{4}$"}},{"name":"geometrie","in":"query","required":false,"schema":{"description":"true : ajoute le contour GeoJSON de chaque quartier.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"code_iris":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"appartement":{"anyOf":[{"type":"object","properties":{"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"poids_local":{"description":"Part du prix portée par les ventes du quartier ; le reste vient du prix de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"demi_bande_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","label","n_ventes","n_ventes_recentes","poids_local","prix_m2_commune","demi_bande_pct","millesime","qualite"],"additionalProperties":false},{"type":"null"}]},"maison":{"anyOf":[{"type":"object","properties":{"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"poids_local":{"description":"Part du prix portée par les ventes du quartier ; le reste vient du prix de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"demi_bande_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","label","n_ventes","n_ventes_recentes","poids_local","prix_m2_commune","demi_bande_pct","millesime","qualite"],"additionalProperties":false},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON du quartier, servi avec geometrie=true.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["code_iris","nom","insee","appartement","maison","geometrie"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prix_iris"}},"/communes/{insee}/iris":{"get":{"operationId":"prix_iris_2","summary":"Prix au m² par quartier IRIS","description":"Prix au m² des appartements et des maisons par quartier IRIS, avec le nombre de ventes, la provenance (mesuré au quartier ou estimé depuis le prix de la commune), le poids local, la demi-bande d'incertitude, le nom du quartier et, sur demande, son contour GeoJSON. Un quartier par son code IRIS, ou tous les quartiers d'une commune. Tous les quartiers sont servis, ceux à peu de ventes avec leur drapeau. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"code_iris":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"appartement":{"anyOf":[{"type":"object","properties":{"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"poids_local":{"description":"Part du prix portée par les ventes du quartier ; le reste vient du prix de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"demi_bande_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","label","n_ventes","n_ventes_recentes","poids_local","prix_m2_commune","demi_bande_pct","millesime","qualite"],"additionalProperties":false},{"type":"null"}]},"maison":{"anyOf":[{"type":"object","properties":{"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"label":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_ventes_recentes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"poids_local":{"description":"Part du prix portée par les ventes du quartier ; le reste vient du prix de la commune.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"demi_bande_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["prix_m2","label","n_ventes","n_ventes_recentes","poids_local","prix_m2_commune","demi_bande_pct","millesime","qualite"],"additionalProperties":false},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON du quartier, servi avec geometrie=true.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["code_iris","nom","insee","appartement","maison","geometrie"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prix_iris"}},"/departements/{departement}/prix":{"get":{"operationId":"prix_territoire","summary":"Prix d'un département ou d'une région","description":"Prix médians au m² des appartements et des maisons d'un département ou d'une région, ceux de la carte des prix de Pillr, avec la surface médiane, la population et le nombre de communes, l'emprise, l'indice annuel par type et les coefficients semestriels du barème. Une région se donne par son code INSEE ou son nom court. Coût : 1 crédit par appel réussi.","parameters":[{"name":"departement","in":"path","required":true,"schema":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nom"],"additionalProperties":false},{"type":"null"}]},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_mediane_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"population":{"description":"Population municipale cumulée des communes du territoire (table communale de Pillr).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"communes":{"description":"Communes du territoire dans la table communale de Pillr.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"emprise":{"description":"Emprise du territoire : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"indice":{"type":"array","items":{"type":"object","properties":{"departement":{"type":"string"},"type":{"type":"string","enum":["appartement","maison"]},"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coef":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["departement","type","annee","coef","n_ventes"],"additionalProperties":false}},"indice_semestriel":{"type":"array","items":{"type":"object","properties":{"departement":{"type":"string"},"type":{"type":"string","enum":["appartement","maison"]},"semestre":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ajustement_log":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["departement","type","semestre","ajustement_log"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","region","prix_m2_appartement","prix_m2_maison","surface_mediane_m2","population","communes","emprise","indice","indice_semestriel","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prix_territoire"}},"/regions/{region}/prix":{"get":{"operationId":"prix_territoire_2","summary":"Prix d'un département ou d'une région","description":"Prix médians au m² des appartements et des maisons d'un département ou d'une région, ceux de la carte des prix de Pillr, avec la surface médiane, la population et le nombre de communes, l'emprise, l'indice annuel par type et les coefficients semestriels du barème. Une région se donne par son code INSEE ou son nom court. Coût : 1 crédit par appel réussi.","parameters":[{"name":"region","in":"path","required":true,"schema":{"description":"Code INSEE de la région (53) ou son nom court (bretagne).","type":"string","pattern":"^(?:\\d{2}|[a-z-]{3,40})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nom"],"additionalProperties":false},{"type":"null"}]},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_mediane_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"population":{"description":"Population municipale cumulée des communes du territoire (table communale de Pillr).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"communes":{"description":"Communes du territoire dans la table communale de Pillr.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"emprise":{"description":"Emprise du territoire : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"indice":{"type":"array","items":{"type":"object","properties":{"departement":{"type":"string"},"type":{"type":"string","enum":["appartement","maison"]},"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coef":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["departement","type","annee","coef","n_ventes"],"additionalProperties":false}},"indice_semestriel":{"type":"array","items":{"type":"object","properties":{"departement":{"type":"string"},"type":{"type":"string","enum":["appartement","maison"]},"semestre":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ajustement_log":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["departement","type","semestre","ajustement_log"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","region","prix_m2_appartement","prix_m2_maison","surface_mediane_m2","population","communes","emprise","indice","indice_semestriel","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prix_territoire"}},"/communes/{insee}/vie-annonces":{"get":{"operationId":"vie_annonces_zone","summary":"Vie des annonces d'une zone","description":"Vie des annonces d'une commune ou d'un code postal, mois par mois : entrées (particuliers, professionnels, exclusifs, maisons, appartements), part nationale, sorties rapides et longues, stock, durée médiane en ligne, prix affiché médian au m², baisses et baisse moyenne, chaque mois marqué comparable ou non selon la stabilisation de la collecte. Pour une zone de plusieurs communes, les comptes s'additionnent et les médianes restent vides. S'y ajoutent la durée en ligne par code postal et type de bien (médiane et quartiles, avec l'effectif) et, sur demande, les évènements des derniers jours : baisses de prix et annonces diffusées par plusieurs agences, par identifiant d'annonce. Coût : 5 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Premier mois, AAAA-MM.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"Dernier mois, AAAA-MM.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"evenements","in":"query","required":false,"schema":{"description":"true : ajoute les évènements des derniers jours.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}},{"name":"jours","in":"query","required":false,"schema":{"description":"Fenêtre des évènements, en jours (7 par défaut, 30 au plus).","type":"number"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"zone":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","code_postal"]},"code":{"type":"string"},"communes":{"type":"array","items":{"type":"string"}}},"required":["niveau","code","communes"],"additionalProperties":false},"serie":{"type":"array","items":{"type":"object","properties":{"mois":{"type":"string"},"communes":{"description":"Communes de la zone qui portent ce mois.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entrees":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_particulier":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_pro":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_exclusif":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_appart":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_nationale":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_rapides":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_longues":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"description":"Médiane : servie pour une seule commune, vide pour une zone de plusieurs communes (une médiane ne s'additionne pas).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisse_moy_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock_fin":{"anyOf":[{"type":"number"},{"type":"null"}]},"volumes_comparables":{"type":"boolean"}},"required":["mois","communes","entrees","entrees_particulier","entrees_pro","entrees_exclusif","entrees_maison","entrees_appart","part_nationale","sorties","sorties_rapides","sorties_longues","duree_mediane_j","prix_m2_median","baisses","baisse_moy_pct","stock_fin","volumes_comparables"],"additionalProperties":false}},"duree_en_ligne":{"type":"array","items":{"type":"object","properties":{"code_postal":{"type":"string"},"type":{"type":"string"},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"p25_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"p75_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"fenetre_j":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code_postal","type","n","mediane_j","p25_j","p75_j","fenetre_j"],"additionalProperties":false}},"evenements":{"type":"array","items":{"type":"object","properties":{"genre":{"type":"string","enum":["baisse_prix","multi_agences"]},"annonce_id":{"type":"string"},"le":{"type":"string"},"ancien_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"nouveau_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"portails":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["genre","annonce_id","le","ancien_prix","nouveau_prix","ecart_pct","agences","portails"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["zone","serie","duree_en_ligne","evenements","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"vie_annonces_zone"}},"/codes-postaux/{cp}/vie-annonces":{"get":{"operationId":"vie_annonces_zone_2","summary":"Vie des annonces d'une zone","description":"Vie des annonces d'une commune ou d'un code postal, mois par mois : entrées (particuliers, professionnels, exclusifs, maisons, appartements), part nationale, sorties rapides et longues, stock, durée médiane en ligne, prix affiché médian au m², baisses et baisse moyenne, chaque mois marqué comparable ou non selon la stabilisation de la collecte. Pour une zone de plusieurs communes, les comptes s'additionnent et les médianes restent vides. S'y ajoutent la durée en ligne par code postal et type de bien (médiane et quartiles, avec l'effectif) et, sur demande, les évènements des derniers jours : baisses de prix et annonces diffusées par plusieurs agences, par identifiant d'annonce. Coût : 5 crédits par appel réussi.","parameters":[{"name":"cp","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"zone":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","code_postal"]},"code":{"type":"string"},"communes":{"type":"array","items":{"type":"string"}}},"required":["niveau","code","communes"],"additionalProperties":false},"serie":{"type":"array","items":{"type":"object","properties":{"mois":{"type":"string"},"communes":{"description":"Communes de la zone qui portent ce mois.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"entrees":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_particulier":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_pro":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_exclusif":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_appart":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_nationale":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_rapides":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_longues":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"description":"Médiane : servie pour une seule commune, vide pour une zone de plusieurs communes (une médiane ne s'additionne pas).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisse_moy_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock_fin":{"anyOf":[{"type":"number"},{"type":"null"}]},"volumes_comparables":{"type":"boolean"}},"required":["mois","communes","entrees","entrees_particulier","entrees_pro","entrees_exclusif","entrees_maison","entrees_appart","part_nationale","sorties","sorties_rapides","sorties_longues","duree_mediane_j","prix_m2_median","baisses","baisse_moy_pct","stock_fin","volumes_comparables"],"additionalProperties":false}},"duree_en_ligne":{"type":"array","items":{"type":"object","properties":{"code_postal":{"type":"string"},"type":{"type":"string"},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"p25_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"p75_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"fenetre_j":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code_postal","type","n","mediane_j","p25_j","p75_j","fenetre_j"],"additionalProperties":false}},"evenements":{"type":"array","items":{"type":"object","properties":{"genre":{"type":"string","enum":["baisse_prix","multi_agences"]},"annonce_id":{"type":"string"},"le":{"type":"string"},"ancien_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"nouveau_prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"portails":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["genre","annonce_id","le","ancien_prix","nouveau_prix","ecart_pct","agences","portails"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["zone","serie","duree_en_ligne","evenements","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"vie_annonces_zone"}},"/communes/{insee}/signaux":{"get":{"operationId":"signaux_commune","summary":"Tableau mensuel des signaux d'une commune","description":"Tableau mensuel consolidé d'une commune, tel que le lac de Pillr le calcule : DPE (existants, passoires, maisons, appartements, neufs, tertiaires) et audits, sociétés civiles (créations, modifications, radiations), permis et logements autorisés, flux d'annonces (entrées, sorties, stock, durée, prix affiché, baisses), agences actives, part du leader et concentration, vacance du parc privé, copropriétés, ventes DVF du trimestre. Les avis BODACC des codes postaux de la commune sont comptés par famille. La date de calcul est servie, et un tableau ancien le dit. Coût : 3 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Premier mois, AAAA-MM.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"Dernier mois, AAAA-MM.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"mois":{"type":"array","items":{"type":"object","properties":{"mois":{"type":"string"},"dpe_existant":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_passoires":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_appart":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_neuf":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_tertiaire":{"anyOf":[{"type":"number"},{"type":"null"}]},"audits":{"anyOf":[{"type":"number"},{"type":"null"}]},"sci_creations":{"anyOf":[{"type":"number"},{"type":"null"}]},"sci_modifications":{"anyOf":[{"type":"number"},{"type":"null"}]},"sci_radiations":{"anyOf":[{"type":"number"},{"type":"null"}]},"permis":{"anyOf":[{"type":"number"},{"type":"null"}]},"permis_logements":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_particulier":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_pro":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_exclusif":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"entrees_appart":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_rapides":{"anyOf":[{"type":"number"},{"type":"null"}]},"sorties_longues":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock_fin":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisse_moy_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences":{"anyOf":[{"type":"number"},{"type":"null"}]},"mandats_pris":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_leader":{"anyOf":[{"type":"number"},{"type":"null"}]},"hhi":{"anyOf":[{"type":"number"},{"type":"null"}]},"logements_prives":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacants":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacants_2ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_vacance":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots_habitation":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros_sans_mandat":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros_aidees":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros_plan_sauvegarde":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_trimestre":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_trimestre_ref":{"anyOf":[{"type":"number"},{"type":"null"}]},"dvf_prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"volumes_comparables":{"type":"boolean"}},"required":["mois","dpe_existant","dpe_passoires","dpe_maison","dpe_appart","dpe_neuf","dpe_tertiaire","audits","sci_creations","sci_modifications","sci_radiations","permis","permis_logements","entrees","entrees_particulier","entrees_pro","entrees_exclusif","entrees_maison","entrees_appart","sorties","sorties_rapides","sorties_longues","duree_mediane_j","stock_fin","prix_m2_median","baisses","baisse_moy_pct","agences","mandats_pris","part_leader","hhi","logements_prives","vacants","vacants_2ans","taux_vacance","copros","lots_habitation","copros_sans_mandat","copros_aidees","copros_plan_sauvegarde","ventes_trimestre","ventes_trimestre_ref","dvf_prix_m2_median","volumes_comparables"],"additionalProperties":false}},"bodacc_cp":{"type":"array","items":{"type":"object","properties":{"code_postal":{"type":"string"},"mois":{"type":"string"},"famille":{"type":"string"},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"n_forme_sci":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code_postal","mois","famille","n","n_forme_sci"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","mois","bodacc_cp","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"signaux_commune"}},"/communes/{insee}/radar":{"get":{"operationId":"radar_prospection","summary":"Radar de prospection d'une commune ou d'un département","description":"Radar de prospection mensuel d'une commune, ou de toutes les communes d'un département classées par score : score sur 100, rang dans le département, cinq blocs (vendeurs sans agence, mandats qui patinent, absence d'agence dominante, parc immobile, signaux amont) et leur détail (pression des DPE, vente directe, mandats essoufflés, stock, agences présentes, part du leader et concentration, exclusifs, prix au m² médian, durée médiane, baisses). Le dernier mois calculé, ou le mois demandé. Des agrégats communaux, sans adresse ni nom. Liste paginée. Coût : 3 crédits par élément rendu.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"mois","in":"query","required":false,"schema":{"description":"Mois du radar, AAAA-MM ; le dernier calculé par défaut.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"mois":{"description":"Mois du radar servi, AAAA-MM.","anyOf":[{"type":"string"},{"type":"null"}]},"perimetre":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","departement"]},"code":{"type":"string"}},"required":["niveau","code"],"additionalProperties":false},"donnees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"description":"Score de prospection sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"rang_departement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocs":{"type":"object","properties":{"gisement":{"description":"Vendeurs sans agence (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"essoufflement":{"description":"Mandats en place qui patinent (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"ouverture":{"description":"Aucune agence ne tient le secteur (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"dormant":{"description":"Parc immobile (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"amont":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["gisement","essoufflement","ouverture","dormant","amont"],"additionalProperties":false},"detail":{"anyOf":[{"type":"object","properties":{"pression_dpe_idx":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_mois":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_attendu":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_passoires":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"mandats_essoufles":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences_presentes":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_leader":{"anyOf":[{"type":"number"},{"type":"null"}]},"concentration_hhi":{"anyOf":[{"type":"number"},{"type":"null"}]},"exclusifs_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["pression_dpe_idx","dpe_mois","dpe_attendu","dpe_passoires","vente_directe","vente_directe_pct","mandats_essoufles","stock","agences_presentes","part_leader","concentration_hhi","exclusifs_pct","prix_m2_median","duree_mediane_j","baisses_pct"],"additionalProperties":false},{"type":"null"}]}},"required":["insee","commune","score","rang_departement","blocs","detail"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["mois","perimetre","donnees","qualite","donnees_du","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"element","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"radar_prospection"}},"/departements/{departement}/radar":{"get":{"operationId":"radar_prospection_2","summary":"Radar de prospection d'une commune ou d'un département","description":"Radar de prospection mensuel d'une commune, ou de toutes les communes d'un département classées par score : score sur 100, rang dans le département, cinq blocs (vendeurs sans agence, mandats qui patinent, absence d'agence dominante, parc immobile, signaux amont) et leur détail (pression des DPE, vente directe, mandats essoufflés, stock, agences présentes, part du leader et concentration, exclusifs, prix au m² médian, durée médiane, baisses). Le dernier mois calculé, ou le mois demandé. Des agrégats communaux, sans adresse ni nom. Liste paginée. Coût : 3 crédits par élément rendu.","parameters":[{"name":"departement","in":"path","required":true,"schema":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"mois":{"description":"Mois du radar servi, AAAA-MM.","anyOf":[{"type":"string"},{"type":"null"}]},"perimetre":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","departement"]},"code":{"type":"string"}},"required":["niveau","code"],"additionalProperties":false},"donnees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"description":"Score de prospection sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"rang_departement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocs":{"type":"object","properties":{"gisement":{"description":"Vendeurs sans agence (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"essoufflement":{"description":"Mandats en place qui patinent (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"ouverture":{"description":"Aucune agence ne tient le secteur (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"dormant":{"description":"Parc immobile (percentile).","anyOf":[{"type":"number"},{"type":"null"}]},"amont":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["gisement","essoufflement","ouverture","dormant","amont"],"additionalProperties":false},"detail":{"anyOf":[{"type":"object","properties":{"pression_dpe_idx":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_mois":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_attendu":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_passoires":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"mandats_essoufles":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences_presentes":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_leader":{"anyOf":[{"type":"number"},{"type":"null"}]},"concentration_hhi":{"anyOf":[{"type":"number"},{"type":"null"}]},"exclusifs_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"baisses_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["pression_dpe_idx","dpe_mois","dpe_attendu","dpe_passoires","vente_directe","vente_directe_pct","mandats_essoufles","stock","agences_presentes","part_leader","concentration_hhi","exclusifs_pct","prix_m2_median","duree_mediane_j","baisses_pct"],"additionalProperties":false},{"type":"null"}]}},"required":["insee","commune","score","rang_departement","blocs","detail"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["mois","perimetre","donnees","qualite","donnees_du","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"element","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"radar_prospection"}},"/communes/{insee}/radar/plan":{"post":{"operationId":"plan_prospection","summary":"Plan de prospection rédigé","description":"Plan de prospection d'une commune, rédigé par un modèle de langage à partir des faits du radar du mois (score, blocs, flux d'annonces, vente directe, agences, vacance, copropriétés, ventes), rendus avec le plan : trois à cinq phrases, aucun chiffre absent des faits (une réponse qui en invente est rejetée), aucune adresse ni aucun nom, jamais de démarchage téléphonique d'un particulier. Sans plan fiable, rien n'est débité. Coût : 20 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mois":{"description":"Mois du radar, AAAA-MM ; le dernier calculé par défaut.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"mois":{"type":"string"},"plan":{"description":"Le plan rédigé, trois à cinq phrases, sans chiffre absent des faits.","type":"string"},"faits_utilises":{"type":"object","properties":{"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"rang_departement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"blocs":{"type":"object","properties":{"gisement":{"anyOf":[{"type":"number"},{"type":"null"}]},"essoufflement":{"anyOf":[{"type":"number"},{"type":"null"}]},"ouverture":{"anyOf":[{"type":"number"},{"type":"null"}]},"dormant":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["gisement","essoufflement","ouverture","dormant"],"additionalProperties":false},"entrees":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe":{"anyOf":[{"type":"number"},{"type":"null"}]},"vente_directe_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"stock":{"anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"agences":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_leader":{"anyOf":[{"type":"number"},{"type":"null"}]},"logements_prives":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_vacance":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacants_2ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros":{"anyOf":[{"type":"number"},{"type":"null"}]},"copros_sans_mandat":{"anyOf":[{"type":"number"},{"type":"null"}]},"ventes_trimestre":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["score","rang_departement","blocs","entrees","vente_directe","vente_directe_pct","stock","duree_mediane_j","prix_m2_median","agences","part_leader","logements_prives","taux_vacance","vacants_2ans","copros","copros_sans_mandat","ventes_trimestre"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"string"}},"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","mois","plan","faits_utilises","sources","modele","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"plan_prospection"}},"/communes/classement":{"get":{"operationId":"classement_communes","summary":"Classement de communes (screener)","description":"Communes classées par rendement brut théorique (loyer multiplié par douze, divisé par le prix au m², pour les appartements ou les maisons), par score Pillr ou par distance, avec la logique de l'outil de screening du Hub. Filtres : budget et surface type, prix au m² maximal, rendement minimal, population, sécurité, vacance, évolution à 3 ans, exclusion des QPV, type de bien, distance réelle autour d'une commune (entre centres habités), et les stratégies cashflow, patrimonial, pinel et deal de la page des opportunités. Chaque commune porte la provenance et le nombre de ventes de son prix. Liste paginée. Coût : 1 crédit par élément rendu.","parameters":[{"name":"autour_de","in":"query","required":false,"schema":{"description":"Code INSEE de la commune de départ du rayon.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"rayon_km","in":"query","required":false,"schema":{"description":"Rayon autour de la commune de départ, en km (50 par défaut, 150 au plus).","type":"number"}},{"name":"budget_eur","in":"query","required":false,"schema":{"description":"Budget d'achat, en euros : fixe le prix au m² maximal avec la surface type.","type":"number"}},{"name":"surface_type_m2","in":"query","required":false,"schema":{"description":"Surface type pour le budget, en m² (50 par défaut).","type":"number"}},{"name":"rendement_brut_min_pct","in":"query","required":false,"schema":{"type":"number"}},{"name":"prix_m2_max","in":"query","required":false,"schema":{"type":"number"}},{"name":"population_min","in":"query","required":false,"schema":{"description":"Population minimale (2 000 par défaut).","type":"number"}},{"name":"securite_min","in":"query","required":false,"schema":{"description":"Sous-score de sécurité minimal, sur 100.","type":"number"}},{"name":"vacance_max_pct","in":"query","required":false,"schema":{"type":"number"}},{"name":"evol_3y_min_pct","in":"query","required":false,"schema":{"type":"number"}},{"name":"exclure_qpv","in":"query","required":false,"schema":{"description":"true : écarte les communes qui comptent un quartier prioritaire.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}},{"name":"type","in":"query","required":false,"schema":{"description":"Type de bien : appartement (par défaut) ou maison.","default":"appartement","type":"string","enum":["appartement","maison"]}},{"name":"strategie","in":"query","required":false,"schema":{"description":"rendement (par défaut, aucun filtre de plus), cashflow, patrimonial, pinel ou deal : les seuils de la page des opportunités.","default":"rendement","type":"string","enum":["rendement","cashflow","patrimonial","pinel","deal"]}},{"name":"tri","in":"query","required":false,"schema":{"description":"Tri : rendement (par défaut), score_pillr ou distance (avec autour_de).","type":"string","enum":["rendement","score_pillr","distance"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"criteres":{"type":"object","properties":{"type":{"type":"string","enum":["appartement","maison"]},"strategie":{"type":"string","enum":["rendement","cashflow","patrimonial","pinel","deal"]},"tri":{"type":"string","enum":["rendement","score_pillr","distance"]},"population_min":{"type":"number"},"prix_m2_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_min_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"securite_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacance_max_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evol_3y_min_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"exclure_qpv":{"type":"boolean"},"autour_de":{"anyOf":[{"type":"string"},{"type":"null"}]},"rayon_km":{"anyOf":[{"type":"number"},{"type":"null"}]},"perimetre":{"description":"Le périmètre appliqué, en clair.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","strategie","tri","population_min","prix_m2_max","rendement_brut_min_pct","securite_min","vacance_max_pct","evol_3y_min_pct","exclure_qpv","autour_de","rayon_km","perimetre"],"additionalProperties":false},"candidates":{"description":"Communes qui passent les critères, toutes pages confondues.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"donnees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_m2":{"type":"number"},"provenance_prix":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"ventes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"loyer_m2":{"type":"number"},"rendement_brut_pct":{"type":"number"},"evolution_3_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_securite":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_pillr":{"anyOf":[{"type":"number"},{"type":"null"}]},"vacance_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"signal_deal":{"anyOf":[{"type":"string"},{"type":"null"}]},"est_en_qpv":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"distance_km":{"description":"À vol d'oiseau entre centres habités ; null sans commune de départ.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["insee","commune","code_postal","departement","prix_m2","provenance_prix","ventes","loyer_m2","rendement_brut_pct","evolution_3_ans_pct","score_securite","score_pillr","vacance_pct","population","signal_deal","est_en_qpv","zone_abc","distance_km","qualite"],"additionalProperties":false}},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["criteres","candidates","donnees","donnees_du","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"classement_communes"}},"/communes/{insee}/analyse-ia":{"get":{"operationId":"analyse_ia_zone","summary":"Analyse rédigée d'une commune","description":"Analyse rédigée de la commune, déjà générée et stockée par Pillr : note de synthèse sur 100 et sous-notes, points forts, signaux d'alerte avec leur atténuation, recommandations. Servie comme sur les pages communes : les affirmations que le modèle ne pouvait pas sourcer (transport, délinquance, risques, équipements) sont remplacées par les mesures du jour, rendues à côté, et les textes sont réécrits pour la lecture. Aucun modèle n'est appelé. Paris, Lyon et Marseille se lisent par arrondissement. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"note_synthese":{"description":"Note de synthèse sur 100, rédigée par le modèle à partir des données mesurées.","anyOf":[{"type":"number"},{"type":"null"}]},"lecture_note":{"description":"Comment lire la note.","anyOf":[{"type":"string"},{"type":"null"}]},"sous_notes":{"type":"object","properties":{"liquidite":{"anyOf":[{"type":"number"},{"type":"null"}]},"demande_locative":{"anyOf":[{"type":"number"},{"type":"null"}]},"croissance":{"anyOf":[{"type":"number"},{"type":"null"}]},"tourisme":{"anyOf":[{"type":"number"},{"type":"null"}]},"risque":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["liquidite","demande_locative","croissance","tourisme","risque"],"additionalProperties":false},"points_forts":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","raison"],"additionalProperties":false}},"signaux_alerte":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"raison":{"anyOf":[{"type":"string"},{"type":"null"}]},"attenuation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","raison","attenuation"],"additionalProperties":false}},"recommandations":{"type":"array","items":{"type":"object","properties":{"titre":{"type":"string"},"action":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titre","action"],"additionalProperties":false}},"mesures":{"description":"Ce que les données mesurées disent de la commune, substitué aux affirmations que le modèle ne pouvait pas sourcer.","type":"object","properties":{"equipements":{"anyOf":[{"type":"string"},{"type":"null"}]},"acces":{"anyOf":[{"type":"string"},{"type":"null"}]},"securite":{"anyOf":[{"type":"string"},{"type":"null"}]},"risques":{"type":"string"}},"required":["equipements","acces","securite","risques"],"additionalProperties":false},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"modele":{"anyOf":[{"type":"string"},{"type":"null"}]},"genere_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","note_synthese","lecture_note","sous_notes","points_forts","signaux_alerte","recommandations","mesures","version","modele","genere_le","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"analyse_ia_zone"}},"/communes/{insee}/gentrification":{"get":{"operationId":"gentrification","summary":"Signaux de valorisation d'une commune","description":"Signaux de valorisation d'une commune, comme l'outil du Hub : évolutions des prix sur 1, 3 et 5 ans, salaire médian, demande, commerces signaux (coworking, bien-être, bio, créatif) comptés en direct dans la base Sirene et rapportés à 100 000 habitants, et un verdict par une règle dont les seuils sont rendus. Signal indicatif à la maille de la commune. Si l'API publique ne répond pas, rien n'est servi ni débité. Paris, Lyon et Marseille se lisent par arrondissement. Coût : 3 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"evolution_prix_1_an_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_3_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_5_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"salaire_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_demande":{"anyOf":[{"type":"number"},{"type":"null"}]},"commerces_signaux":{"type":"object","properties":{"coworking":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bien_etre":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bio":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creatif":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["coworking","bien_etre","bio","creatif","total"],"additionalProperties":false},"signaux_pour_100k_hab":{"anyOf":[{"type":"number"},{"type":"null"}]},"verdict":{"type":"object","properties":{"code":{"type":"string","enum":["en_cours","emergente","hausse_sans_signaux","aucun_signal"]},"libelle":{"type":"string"}},"required":["code","libelle"],"additionalProperties":false},"seuils":{"type":"object","properties":{"evolution_3_ans_pct":{"type":"number"},"evolution_1_an_pct":{"type":"number"},"signaux_pour_100k_min":{"type":"number"},"signaux_min_avec_population":{"type":"number"},"signaux_min_sans_population":{"type":"number"}},"required":["evolution_3_ans_pct","evolution_1_an_pct","signaux_pour_100k_min","signaux_min_avec_population","signaux_min_sans_population"],"additionalProperties":false},"granularite":{"type":"string","const":"commune"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","code_postal","population","evolution_prix_1_an_pct","evolution_prix_3_ans_pct","evolution_prix_5_ans_pct","salaire_median","score_demande","commerces_signaux","signaux_pour_100k_hab","verdict","seuils","granularite","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"gentrification"}},"/communes/{insee}/geographie":{"get":{"operationId":"geographie","summary":"Contours, centre et voisins d'un territoire","description":"Contour GeoJSON d'une commune, d'un arrondissement, d'un quartier IRIS, d'un département ou d'une région, simplifiable à une tolérance en mètres, avec son emprise. Pour une commune : son centre habité (celui des distances du Hub), ses communes voisines et son intercommunalité. Pour un quartier IRIS : sa commune et son intercommunalité. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"simplification_m","in":"query","required":false,"schema":{"description":"Tolérance de simplification du contour, en mètres (1 à 5 000) ; absent : contour complet.","type":"number","minimum":1,"maximum":5000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","arrondissement","iris","departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON (coordonnées WGS 84, six décimales).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"sommets":{"description":"Nombre de sommets du contour servi.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simplification_m":{"description":"Tolérance de simplification appliquée, en mètres ; null : contour complet.","anyOf":[{"type":"number"},{"type":"null"}]},"centre":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lat","lon","source"],"additionalProperties":false},{"type":"null"}]},"emprise":{"description":"Emprise : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"commune":{"description":"Pour un quartier IRIS ou un arrondissement : sa commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"voisines":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","geometrie","sommets","simplification_m","centre","emprise","commune","voisines","epci","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"geographie"}},"/iris/{code_iris}/geographie":{"get":{"operationId":"geographie_2","summary":"Contours, centre et voisins d'un territoire","description":"Contour GeoJSON d'une commune, d'un arrondissement, d'un quartier IRIS, d'un département ou d'une région, simplifiable à une tolérance en mètres, avec son emprise. Pour une commune : son centre habité (celui des distances du Hub), ses communes voisines et son intercommunalité. Pour un quartier IRIS : sa commune et son intercommunalité. Coût : 1 crédit par appel réussi.","parameters":[{"name":"code_iris","in":"path","required":true,"schema":{"description":"Code IRIS du quartier (9 caractères : code INSEE de la commune puis quatre chiffres).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})\\d{4}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","arrondissement","iris","departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON (coordonnées WGS 84, six décimales).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"sommets":{"description":"Nombre de sommets du contour servi.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simplification_m":{"description":"Tolérance de simplification appliquée, en mètres ; null : contour complet.","anyOf":[{"type":"number"},{"type":"null"}]},"centre":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lat","lon","source"],"additionalProperties":false},{"type":"null"}]},"emprise":{"description":"Emprise : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"commune":{"description":"Pour un quartier IRIS ou un arrondissement : sa commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"voisines":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","geometrie","sommets","simplification_m","centre","emprise","commune","voisines","epci","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"geographie"}},"/departements/{departement}/geographie":{"get":{"operationId":"geographie_3","summary":"Contours, centre et voisins d'un territoire","description":"Contour GeoJSON d'une commune, d'un arrondissement, d'un quartier IRIS, d'un département ou d'une région, simplifiable à une tolérance en mètres, avec son emprise. Pour une commune : son centre habité (celui des distances du Hub), ses communes voisines et son intercommunalité. Pour un quartier IRIS : sa commune et son intercommunalité. Coût : 1 crédit par appel réussi.","parameters":[{"name":"departement","in":"path","required":true,"schema":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","arrondissement","iris","departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON (coordonnées WGS 84, six décimales).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"sommets":{"description":"Nombre de sommets du contour servi.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simplification_m":{"description":"Tolérance de simplification appliquée, en mètres ; null : contour complet.","anyOf":[{"type":"number"},{"type":"null"}]},"centre":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lat","lon","source"],"additionalProperties":false},{"type":"null"}]},"emprise":{"description":"Emprise : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"commune":{"description":"Pour un quartier IRIS ou un arrondissement : sa commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"voisines":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","geometrie","sommets","simplification_m","centre","emprise","commune","voisines","epci","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"geographie"}},"/regions/{region}/geographie":{"get":{"operationId":"geographie_4","summary":"Contours, centre et voisins d'un territoire","description":"Contour GeoJSON d'une commune, d'un arrondissement, d'un quartier IRIS, d'un département ou d'une région, simplifiable à une tolérance en mètres, avec son emprise. Pour une commune : son centre habité (celui des distances du Hub), ses communes voisines et son intercommunalité. Pour un quartier IRIS : sa commune et son intercommunalité. Coût : 1 crédit par appel réussi.","parameters":[{"name":"region","in":"path","required":true,"schema":{"description":"Code INSEE de la région (53) ou son nom court (bretagne).","type":"string","pattern":"^(?:\\d{2}|[a-z-]{3,40})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"niveau":{"type":"string","enum":["commune","arrondissement","iris","departement","region"]},"code":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"geometrie":{"description":"Contour GeoJSON (coordonnées WGS 84, six décimales).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"sommets":{"description":"Nombre de sommets du contour servi.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simplification_m":{"description":"Tolérance de simplification appliquée, en mètres ; null : contour complet.","anyOf":[{"type":"number"},{"type":"null"}]},"centre":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["lat","lon","source"],"additionalProperties":false},{"type":"null"}]},"emprise":{"description":"Emprise : ouest, sud, est, nord, en degrés.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"commune":{"description":"Pour un quartier IRIS ou un arrondissement : sa commune.","anyOf":[{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},{"type":"null"}]},"voisines":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["niveau","code","nom","geometrie","sommets","simplification_m","centre","emprise","commune","voisines","epci","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"geographie"}},"/tuiles/prix/{z}/{x}/{y}":{"get":{"operationId":"tuiles_prix","summary":"Tuiles vectorielles de la carte des prix","description":"Une tuile vectorielle (Mapbox Vector Tile) de la carte des prix de Pillr, prête à poser dans MapLibre : régions jusqu'au zoom 6, départements jusqu'au 8, communes ensuite, avec les prix au m² des appartements et des maisons. En REST, la tuile part en octets ; en MCP, ses métadonnées et la tuile en ressource. Une tuile hors de la pyramide générée est refusée sans débit. Coût : 1 crédit par appel réussi.","parameters":[{"name":"z","in":"path","required":true,"schema":{"description":"Niveau de zoom, de 5 à 11.","type":"integer","minimum":5,"maximum":11}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"y","in":"path","required":true,"schema":{"description":"Numéro de ligne de la tuile, avec ou sans l'extension .pbf ou .mvt.","anyOf":[{"type":"number"},{"type":"string","pattern":"^\\d{1,7}(?:\\.(?:pbf|mvt))?$"}]}}],"responses":{"200":{"description":"Le fichier, débité (sauf réponse identique déjà servie dans les 24 h). Les métadonnées sont dans x-pillr-metadonnees (structuredContent côté MCP).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/vnd.mapbox-vector-tile":{"schema":{"type":"string","contentEncoding":"binary"}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"tuiles_prix","x-pillr-metadonnees":{"type":"object","properties":{"z":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"x":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string","const":"application/vnd.mapbox-vector-tile"},"octets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["z","x","y","type","octets","qualite"],"additionalProperties":false}}},"/referentiels/communes":{"get":{"operationId":"referentiels","summary":"Référentiels de communes et de codes postaux","description":"Correspondances entre nom de commune, code INSEE, code postal, libellé d'acheminement et intercommunalité, lues dans le Code officiel géographique, la base officielle des codes postaux et le référentiel des intercommunalités : recherche d'une commune par son nom (q), communes d'un code postal (cp) ou d'une intercommunalité (siren). Chaque commune porte ses codes postaux, son intercommunalité, ses communes déléguées ou associées et ses mouvements au COG. Coût : 0 crédit par appel réussi.","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Nom de commune cherché, accents et tirets libres.","type":"string","minLength":2,"maxLength":80}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"communes":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type au Code officiel géographique : COM (commune), ARM (arrondissement municipal).","anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"type":"array","items":{"type":"string"}},"libelles_acheminement":{"type":"array","items":{"type":"string"}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"deleguees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom","type"],"additionalProperties":false}},"mouvements":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"description":"Code de la modification au COG (fusion, changement de nom, rétablissement...).","anyOf":[{"type":"string"},{"type":"null"}]},"avant":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},"apres":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"required":["date","nature","avant","apres"],"additionalProperties":false}}},"required":["insee","nom","type","departement","codes_postaux","libelles_acheminement","epci","deleguees","mouvements"],"additionalProperties":false}},"confiance":{"description":"Comment les communes ont été trouvées.","type":"string","enum":["exacte","prefixe","code_postal","intercommunalite"]},"intercommunalite":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"millesimes":{"type":"object","properties":{"cog":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"anyOf":[{"type":"string"},{"type":"null"}]},"intercommunalites":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cog","codes_postaux","intercommunalites"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["communes","confiance","intercommunalite","millesimes","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"referentiels"}},"/referentiels/codes-postaux/{cp}":{"get":{"operationId":"referentiels_2","summary":"Référentiels de communes et de codes postaux","description":"Correspondances entre nom de commune, code INSEE, code postal, libellé d'acheminement et intercommunalité, lues dans le Code officiel géographique, la base officielle des codes postaux et le référentiel des intercommunalités : recherche d'une commune par son nom (q), communes d'un code postal (cp) ou d'une intercommunalité (siren). Chaque commune porte ses codes postaux, son intercommunalité, ses communes déléguées ou associées et ses mouvements au COG. Coût : 0 crédit par appel réussi.","parameters":[{"name":"cp","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{5}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"communes":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type au Code officiel géographique : COM (commune), ARM (arrondissement municipal).","anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"type":"array","items":{"type":"string"}},"libelles_acheminement":{"type":"array","items":{"type":"string"}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"deleguees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom","type"],"additionalProperties":false}},"mouvements":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"description":"Code de la modification au COG (fusion, changement de nom, rétablissement...).","anyOf":[{"type":"string"},{"type":"null"}]},"avant":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},"apres":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"required":["date","nature","avant","apres"],"additionalProperties":false}}},"required":["insee","nom","type","departement","codes_postaux","libelles_acheminement","epci","deleguees","mouvements"],"additionalProperties":false}},"confiance":{"description":"Comment les communes ont été trouvées.","type":"string","enum":["exacte","prefixe","code_postal","intercommunalite"]},"intercommunalite":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"millesimes":{"type":"object","properties":{"cog":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"anyOf":[{"type":"string"},{"type":"null"}]},"intercommunalites":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cog","codes_postaux","intercommunalites"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["communes","confiance","intercommunalite","millesimes","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"referentiels"}},"/intercommunalites/{siren}":{"get":{"operationId":"referentiels_3","summary":"Référentiels de communes et de codes postaux","description":"Correspondances entre nom de commune, code INSEE, code postal, libellé d'acheminement et intercommunalité, lues dans le Code officiel géographique, la base officielle des codes postaux et le référentiel des intercommunalités : recherche d'une commune par son nom (q), communes d'un code postal (cp) ou d'une intercommunalité (siren). Chaque commune porte ses codes postaux, son intercommunalité, ses communes déléguées ou associées et ses mouvements au COG. Coût : 0 crédit par appel réussi.","parameters":[{"name":"siren","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{9}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"communes":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type au Code officiel géographique : COM (commune), ARM (arrondissement municipal).","anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"type":"array","items":{"type":"string"}},"libelles_acheminement":{"type":"array","items":{"type":"string"}},"epci":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"deleguees":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom","type"],"additionalProperties":false}},"mouvements":{"type":"array","items":{"type":"object","properties":{"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"description":"Code de la modification au COG (fusion, changement de nom, rétablissement...).","anyOf":[{"type":"string"},{"type":"null"}]},"avant":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false},"apres":{"type":"object","properties":{"insee":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","nom"],"additionalProperties":false}},"required":["date","nature","avant","apres"],"additionalProperties":false}}},"required":["insee","nom","type","departement","codes_postaux","libelles_acheminement","epci","deleguees","mouvements"],"additionalProperties":false}},"confiance":{"description":"Comment les communes ont été trouvées.","type":"string","enum":["exacte","prefixe","code_postal","intercommunalite"]},"intercommunalite":{"anyOf":[{"type":"object","properties":{"siren":{"type":"string"},"nom":{"type":"string"}},"required":["siren","nom"],"additionalProperties":false},{"type":"null"}]},"millesimes":{"type":"object","properties":{"cog":{"anyOf":[{"type":"string"},{"type":"null"}]},"codes_postaux":{"anyOf":[{"type":"string"},{"type":"null"}]},"intercommunalites":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cog","codes_postaux","intercommunalites"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["communes","confiance","intercommunalite","millesimes","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"referentiels"}},"/communes/{insee}/verdict":{"get":{"operationId":"verdict_commune","summary":"Verdict d'investissement d'une commune","description":"Verdict factuel sur une commune, calculé sans IA par la règle des pages communes : niveau (acheter, surveiller ou cher), libellé, ton et raisons chiffrées, à partir de l'écart au prix attendu du département, du rendement brut et de la tendance des prix, pondérés selon l'optique (achat ou rendement). Les entrées utilisées sont rendues. Quand les données manquent, le verdict le dit. Paris, Lyon et Marseille sont jugées sur l'agrégat de leurs arrondissements. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"optique","in":"query","required":false,"schema":{"description":"achat (par défaut) ou rendement : oriente la pondération et le libellé.","default":"achat","type":"string","enum":["achat","rendement"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"optique":{"type":"string","enum":["achat","rendement"]},"niveau":{"type":"string","enum":["acheter","surveiller","cher"]},"label":{"type":"string"},"ton":{"type":"string","enum":["positif","neutre","prudent"]},"raisons":{"type":"array","items":{"type":"string"}},"entrees_utilisees":{"type":"object","properties":{"signal_deal":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_residuel_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"residuel_sature":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"rendement_brut_appartement_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_3_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_prix_1_an_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"horizon_tendance":{"anyOf":[{"type":"string","enum":["3 ans","1 an"]},{"type":"null"}]}},"required":["signal_deal","prix_residuel_pct","residuel_sature","rendement_brut_appartement_pct","evolution_prix_3_ans_pct","evolution_prix_1_an_pct","horizon_tendance"],"additionalProperties":false},"agrege":{"description":"Vrai pour Paris, Lyon et Marseille : agrégat de leurs arrondissements.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","optique","niveau","label","ton","raisons","entrees_utilisees","agrege","qualite","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"verdict_commune"}},"/communes/comparaison":{"get":{"operationId":"comparer_communes","summary":"Comparaison de communes","description":"De deux à quatre communes côte à côte, avec les chiffres des pages communes : prix au m² des appartements et des maisons avec leur provenance et leur nombre de ventes, loyer, rendements, évolutions sur 1 et 3 ans, zone ABC, population, score Pillr, part de passoires et verdict d'investissement sans IA. Pour chaque indicateur, la commune la mieux placée est désignée. Paris, Lyon et Marseille sont comparées sur l'agrégat de leurs arrondissements. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"query","required":true,"schema":{"description":"Deux à quatre codes INSEE, séparés par des virgules (35238,44109) ou en liste.","anyOf":[{"minItems":2,"maxItems":4,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})(?:,(?:\\d{5}|2[AB]\\d{3})){1,3}$"}]}},{"name":"optique","in":"query","required":false,"schema":{"description":"achat (par défaut) ou rendement : oriente le verdict.","default":"achat","type":"string","enum":["achat","rendement"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"optique":{"type":"string","enum":["achat","rendement"]},"communes":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"agrege":{"type":"boolean"},"prix_m2":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"provenance_appartement":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"provenance_maison":{"description":"mesure : mesuré sur les ventes DVF de la commune ; estime : estimé par le barème sur trop peu de ventes pour une mesure, à lire avec le nombre de ventes ; null : non étiquetée.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"ventes_appartement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ventes_maison":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["appartement","maison","provenance_appartement","provenance_maison","ventes_appartement","ventes_maison"],"additionalProperties":false},"loyer_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_pct":{"type":"object","properties":{"appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"maison":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["appartement","maison"],"additionalProperties":false},"evolution_pct":{"type":"object","properties":{"un_an":{"anyOf":[{"type":"number"},{"type":"null"}]},"trois_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"confiance":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["un_an","trois_ans","confiance"],"additionalProperties":false},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"score_pillr":{"anyOf":[{"type":"number"},{"type":"null"}]},"passoires_dpe_fg_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"verdict":{"type":"object","properties":{"niveau":{"type":"string","enum":["acheter","surveiller","cher"]},"label":{"type":"string"},"raisons":{"type":"array","items":{"type":"string"}}},"required":["niveau","label","raisons"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["insee","commune","agrege","prix_m2","loyer_m2","rendement_brut_pct","evolution_pct","zone_abc","population","score_pillr","passoires_dpe_fg_pct","verdict","qualite","donnees_du"],"additionalProperties":false}},"meilleure_par_indicateur":{"description":"Code INSEE de la commune la mieux placée sur chaque indicateur ; null quand aucune commune ne le porte.","type":"object","properties":{"prix_appartement_le_plus_bas":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_maison_le_plus_bas":{"anyOf":[{"type":"string"},{"type":"null"}]},"rendement_appartement_le_plus_haut":{"anyOf":[{"type":"string"},{"type":"null"}]},"rendement_maison_le_plus_haut":{"anyOf":[{"type":"string"},{"type":"null"}]},"evolution_3_ans_la_plus_haute":{"anyOf":[{"type":"string"},{"type":"null"}]},"score_pillr_le_plus_haut":{"anyOf":[{"type":"string"},{"type":"null"}]},"passoires_les_moins_nombreuses":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["prix_appartement_le_plus_bas","prix_maison_le_plus_bas","rendement_appartement_le_plus_haut","rendement_maison_le_plus_haut","evolution_3_ans_la_plus_haute","score_pillr_le_plus_haut","passoires_les_moins_nombreuses"],"additionalProperties":false},"introuvables":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["optique","communes","meilleure_par_indicateur","introuvables","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"comparer_communes"}},"/communes/palmares":{"get":{"operationId":"palmares_communes","summary":"Palmarès de communes par indicateur","description":"Communes classées sur un indicateur publié par Pillr, avec les filtres et les tris des pages de classement du site : rendement locatif, cashflow positif, zones A et A bis, prix bas, prix élevés, peu de passoires, score Pillr, communes sous le prix attendu de leur département, meilleur rendement, ou les deux à la fois. En France, dans un département ou dans une région. Chaque ligne porte son rang, sa valeur, sa population et ses ventes ; les seuils de fiabilité appliqués sont rendus en clair. Liste paginée. Coût : 1 crédit par élément rendu.","parameters":[{"name":"indicateur","in":"query","required":true,"schema":{"description":"L'indicateur du classement.","type":"string","enum":["rendement-locatif","cashflow-positif","pinel-a","prix-bas","prix-eleve","peu-de-passoires","score-pillr","sous-evaluees","meilleur-rendement","sous-evaluees-et-rendement"]}},{"name":"departement","in":"query","required":false,"schema":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},{"name":"region","in":"query","required":false,"schema":{"description":"Région : code INSEE, nom court ou nom.","type":"string","minLength":2,"maxLength":60}},{"name":"population_min","in":"query","required":false,"schema":{"description":"Population minimale ; par défaut celle des pages de classement du site, plus basse en maille géographique et pour les classements d'étude. Le seuil appliqué est rendu dans filtres_appliques.","type":"number"}},{"name":"transactions_min","in":"query","required":false,"schema":{"description":"Ventes minimales.","type":"number"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"indicateur":{"type":"string","enum":["rendement-locatif","cashflow-positif","pinel-a","prix-bas","prix-eleve","peu-de-passoires","score-pillr","sous-evaluees","meilleur-rendement","sous-evaluees-et-rendement"]},"libelle":{"type":"string"},"methode":{"type":"string"},"maille":{"type":"object","properties":{"niveau":{"type":"string","enum":["france","departement","region"]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["niveau","code","nom"],"additionalProperties":false},"filtres_appliques":{"description":"Les seuils de fiabilité appliqués, en clair.","type":"array","items":{"type":"string"}},"donnees":{"type":"array","items":{"type":"object","properties":{"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"transactions":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prix_m2_appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_m2_predit":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_appartement_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_maison_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_residuel_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_3_ans_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"passoires_dpe_fg_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"zone_abc":{"anyOf":[{"type":"string"},{"type":"null"}]},"score_attractivite":{"anyOf":[{"type":"number"},{"type":"null"}]},"valeur_indicateur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["rang","insee","commune","code_postal","departement","region","population","transactions","prix_m2_appartement","prix_m2_maison","loyer_m2_predit","rendement_brut_appartement_pct","rendement_brut_maison_pct","prix_residuel_pct","evolution_3_ans_pct","passoires_dpe_fg_pct","zone_abc","score_attractivite","valeur_indicateur"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"donnees_du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["indicateur","libelle","methode","maille","filtres_appliques","donnees","qualite","donnees_du","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"palmares_communes"}},"/communes/{insee}/avis":{"get":{"operationId":"avis_zone","summary":"Avis des investisseurs sur une commune","description":"Avis déposés par les utilisateurs de Pillr sur une commune, triés par utilité puis par date (ou par date) : note globale et quatre notes (rentabilité, qualité de vie, demande locative, valorisation), titre, texte, profil déclaré de l'auteur et mention de vérification, avec les moyennes de la commune. L'identité de l'auteur n'est jamais servie, ni les coordonnées citées dans un texte. Liste paginée. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"tri","in":"query","required":false,"schema":{"description":"utiles (par défaut) : utilité puis date ; recents : date.","default":"utiles","type":"string","enum":["utiles","recents"]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE demandé.","type":"string"},"commune":{"description":"Nom de la commune ou de l'arrondissement.","anyOf":[{"type":"string"},{"type":"null"}]},"moyennes":{"type":"object","properties":{"globale":{"anyOf":[{"type":"number"},{"type":"null"}]},"rentabilite":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite_de_vie":{"anyOf":[{"type":"number"},{"type":"null"}]},"demande_locative":{"anyOf":[{"type":"number"},{"type":"null"}]},"valorisation":{"anyOf":[{"type":"number"},{"type":"null"}]},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["globale","rentabilite","qualite_de_vie","demande_locative","valorisation","n"],"additionalProperties":false},"avis":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"notes":{"type":"object","properties":{"globale":{"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"rentabilite":{"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"qualite_de_vie":{"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"demande_locative":{"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]},"valorisation":{"anyOf":[{"type":"integer","minimum":1,"maximum":5},{"type":"null"}]}},"required":["globale","rentabilite","qualite_de_vie","demande_locative","valorisation"],"additionalProperties":false},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"contenu":{"anyOf":[{"type":"string"},{"type":"null"}]},"profil_auteur":{"description":"Profil déclaré de l'auteur (propriétaire, locataire, investisseur, professionnel) ; jamais son identité.","anyOf":[{"type":"string"},{"type":"null"}]},"verifie":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"votes_utiles":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["id","notes","titre","contenu","profil_auteur","verifie","votes_utiles","cree_le"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","moyennes","avis","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"avis_zone"},"post":{"operationId":"avis_zone_publier","summary":"Publier un avis sur une commune","description":"Publie l'avis de l'utilisateur de la clé sur une commune, avec les règles du site : note globale de 1 à 5, quatre notes facultatives, titre, texte et profil. Un seul avis par compte et par commune ; un second est refusé. L'avis est servi ensuite sans l'identité de son auteur. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"description":"Note globale, de 1 à 5.","type":"integer","minimum":1,"maximum":5},"note_rentabilite":{"type":"integer","minimum":1,"maximum":5},"note_qualite_vie":{"type":"integer","minimum":1,"maximum":5},"note_demande_locative":{"type":"integer","minimum":1,"maximum":5},"note_valorisation":{"type":"integer","minimum":1,"maximum":5},"titre":{"type":"string","minLength":3,"maxLength":200},"contenu":{"type":"string","minLength":10,"maxLength":5000},"profil":{"description":"Votre profil : proprietaire, locataire, investisseur ou professionnel.","type":"string","enum":["proprietaire","locataire","investisseur","professionnel"]}},"required":["note","titre","contenu"],"additionalProperties":false}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","insee","commune","cree_le","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"avis_zone_publier","x-pillr-compte":true,"x-pillr-ecriture":true}},"/avis/{id}/vote":{"post":{"operationId":"avis_zone_voter","summary":"Voter pour l'utilité d'un avis","description":"Pose le vote d'utilité de l'utilisateur de la clé sur un avis : utile (par défaut) ou non. Le même appel deux fois laisse le même état ; le compteur d'utilité est recalculé depuis les votes. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'avis.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"utile":{"description":"true (par défaut) : l'avis vous a été utile ; false : retire votre vote.","default":true,"type":"boolean"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"utile":{"type":"boolean"},"votes_utiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","utile","votes_utiles","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"avis_zone_voter","x-pillr-compte":true,"x-pillr-ecriture":true}},"/communes/{insee}/loyers":{"get":{"operationId":"loyer_marche","summary":"Loyer de marché d'un logement","description":"Loyer d'annonce, charges comprises, d'un logement d'une commune selon sa typologie (T1 à T5, maison) et sa surface, lu dans les quatre segments de la Carte des loyers (ANIL, DHUP) : loyer au m², loyer mensuel, fourchette à 95 %, segment retenu et repli éventuel sur l'ensemble des appartements, rendement brut de marché, et le modèle derrière chaque segment (type de prédiction, annonces observées, R² ajusté). Sans typologie ni surface, rend la synthèse de la commune (une ligne par typologie à surface d'exemple). Mêmes fonctions que les pages loyer de pillr.fr ; Paris, Lyon et Marseille sont agrégés depuis leurs arrondissements. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"typologie","in":"query","required":false,"schema":{"description":"Typologie du logement : T1 à T5 (T5 et plus), ou maison.","type":"string","enum":["T1","T2","T3","T4","T5","maison"]}},{"name":"surface","in":"query","required":false,"schema":{"description":"Surface habitable, en m².","type":"number","exclusiveMinimum":0,"maximum":1000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"millesime":{"description":"Millésime de la Carte des loyers.","anyOf":[{"type":"string"},{"type":"null"}]},"arrondissements_agreges":{"description":"Paris, Lyon et Marseille : nombre d'arrondissements agrégés, pondérés par leur population ; 0 pour une autre commune.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"charges_comprises":{"description":"Loyers d'annonce de la Carte des loyers, charges comprises.","type":"boolean","const":true},"loyer_m2_commune":{"description":"Loyer d'annonce au m² de la commune, tous appartements (modèle de la Carte des loyers, repli sur le loyer hérité).","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"logement":{"description":"Le logement décrit par typologie et surface ; null sans typologie ni surface, ou quand aucun segment ne le couvre (une maison sans segment maison n'a pas de loyer).","anyOf":[{"type":"object","properties":{"typologie":{"description":"Typologie du logement : T1 à T5 (T5 et plus), ou maison.","type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"type":"number"},"segment":{"description":"Segment de la Carte des loyers : appartement (appartements, toutes typologies), appartement_t1_t2 (appartements T1 et T2), appartement_t3plus (appartements T3 et plus), maison (maisons).","type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"repli":{"description":"Vrai quand le segment de la typologie manquait et que celui de l'ensemble des appartements l'a remplacé.","type":"boolean"},"loyer_m2":{"description":"Loyer d'annonce au m² par mois, charges comprises.","type":"number"},"loyer_mensuel":{"description":"Loyer d'annonce mensuel, charges comprises : loyer au m² multiplié par la surface.","type":"number"},"fourchette_mensuelle":{"description":"Bornes de l'intervalle de prédiction à 95 % multipliées par la surface ; null si le segment n'en publie pas.","anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"rendement_brut_marche_pct":{"description":"Rendement brut de marché du type de bien (appartement ou maison) dans la commune, en % ; null sans prix de vente publié ou au-delà de la borne de vraisemblance.","anyOf":[{"type":"number"},{"type":"null"}]},"modele":{"anyOf":[{"type":"object","properties":{"type_prediction":{"description":"commune : prédit avec les annonces de la commune ; maille ou EPCI : prédit à une maille plus large, faute d'annonces assez nombreuses dans la commune.","anyOf":[{"type":"string"},{"type":"null"}]},"nb_obs_commune":{"description":"Annonces de la commune dans le modèle.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_obs_maille":{"description":"Annonces de la maille dans le modèle.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"r2_ajuste":{"description":"R² ajusté du modèle.","anyOf":[{"type":"number"},{"type":"null"}]},"surface_reference_m2":{"description":"Surface de référence publiée pour le segment ; null pour les maisons.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["type_prediction","nb_obs_commune","nb_obs_maille","r2_ajuste","surface_reference_m2"],"additionalProperties":false},{"type":"null"}]}},"required":["typologie","surface_m2","segment","repli","loyer_m2","loyer_mensuel","fourchette_mensuelle","qualite","rendement_brut_marche_pct","modele"],"additionalProperties":false},{"type":"null"}]},"par_typologie":{"description":"Une ligne par typologie couverte, à la surface d'exemple publiée par les pages loyer de pillr.fr.","type":"array","items":{"type":"object","properties":{"typologie":{"description":"Typologie du logement : T1 à T5 (T5 et plus), ou maison.","type":"string","enum":["T1","T2","T3","T4","T5","maison"]},"surface_m2":{"type":"number"},"segment":{"description":"Segment de la Carte des loyers : appartement (appartements, toutes typologies), appartement_t1_t2 (appartements T1 et T2), appartement_t3plus (appartements T3 et plus), maison (maisons).","type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"repli":{"description":"Vrai quand le segment de la typologie manquait et que celui de l'ensemble des appartements l'a remplacé.","type":"boolean"},"loyer_m2":{"description":"Loyer d'annonce au m² par mois, charges comprises.","type":"number"},"loyer_mensuel":{"description":"Loyer d'annonce mensuel, charges comprises : loyer au m² multiplié par la surface.","type":"number"},"fourchette_mensuelle":{"description":"Bornes de l'intervalle de prédiction à 95 % multipliées par la surface ; null si le segment n'en publie pas.","anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["typologie","surface_m2","segment","repli","loyer_m2","loyer_mensuel","fourchette_mensuelle","qualite"],"additionalProperties":false}},"rendement_brut_marche_pct":{"description":"Rendement brut de marché de la commune : loyer annuel au m² sur prix médian au m², en %.","type":"object","properties":{"appartement":{"anyOf":[{"type":"number"},{"type":"null"}]},"maison":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["appartement","maison","qualite"],"additionalProperties":false},"segments":{"type":"array","items":{"type":"object","properties":{"segment":{"description":"Segment de la Carte des loyers : appartement (appartements, toutes typologies), appartement_t1_t2 (appartements T1 et T2), appartement_t3plus (appartements T3 et plus), maison (maisons).","type":"string","enum":["appartement","appartement_t1_t2","appartement_t3plus","maison"]},"libelle":{"type":"string"},"loyer_m2":{"type":"number"},"min_95":{"anyOf":[{"type":"number"},{"type":"null"}]},"max_95":{"anyOf":[{"type":"number"},{"type":"null"}]},"modele":{"description":"null pour un agrégat d'arrondissements.","anyOf":[{"type":"object","properties":{"type_prediction":{"description":"commune : prédit avec les annonces de la commune ; maille ou EPCI : prédit à une maille plus large, faute d'annonces assez nombreuses dans la commune.","anyOf":[{"type":"string"},{"type":"null"}]},"nb_obs_commune":{"description":"Annonces de la commune dans le modèle.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"nb_obs_maille":{"description":"Annonces de la maille dans le modèle.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"r2_ajuste":{"description":"R² ajusté du modèle.","anyOf":[{"type":"number"},{"type":"null"}]},"surface_reference_m2":{"description":"Surface de référence publiée pour le segment ; null pour les maisons.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["type_prediction","nb_obs_commune","nb_obs_maille","r2_ajuste","surface_reference_m2"],"additionalProperties":false},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["segment","libelle","loyer_m2","min_95","max_95","modele","qualite"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","millesime","arrondissements_agreges","charges_comprises","loyer_m2_commune","logement","par_typologie","rendement_brut_marche_pct","segments","limites","source","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"loyer_marche"}},"/encadrement-loyers":{"get":{"operationId":"encadrement_loyers","summary":"Encadrement des loyers","description":"Encadrement des loyers d'un logement à Paris, décrit par son code postal, son nombre de pièces, son époque de construction, la location meublée ou non et sa surface, ou par une annonce du catalogue : loyers de référence, minoré et majoré au m² du barème le plus récent (quartier nommé, ou moyenne des quartiers de l'arrondissement), loyer maximal légal hors complément de loyer, et dépassement d'un loyer envisagé. Hors de Paris, applicable vaut faux et encadrement_en_vigueur dit si la commune figure parmi les communes encadrées ; leur barème n'est pas servi. Coût : 1 crédit par appel réussi.","parameters":[{"name":"annonce","in":"query","required":false,"schema":{"description":"Identifiant d'une annonce : son code postal, sa surface, ses pièces, sa location meublée et son loyer estimé servent de défaut.","type":"string","minLength":3,"maxLength":200}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},{"name":"quartier","in":"query","required":false,"schema":{"description":"Quartier administratif de Paris (ex. Belleville) ; sans lui, la moyenne des quartiers de l'arrondissement.","type":"string","minLength":2,"maxLength":80}},{"name":"pieces","in":"query","required":false,"schema":{"description":"Nombre de pièces principales.","type":"integer","minimum":1,"maximum":30}},{"name":"epoque","in":"query","required":false,"schema":{"description":"Sans époque : la moyenne des quatre époques.","type":"string","enum":["avant_1946","1946_1970","1971_1990","apres_1990"]}},{"name":"meuble","in":"query","required":false,"schema":{"description":"Location meublée (true) ou nue (false, par défaut).","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false"]}]}},{"name":"surface","in":"query","required":false,"schema":{"description":"Surface habitable, en m².","type":"number","exclusiveMinimum":0,"maximum":1000}},{"name":"loyer","in":"query","required":false,"schema":{"description":"Loyer mensuel envisagé hors charges, en euros.","type":"number","exclusiveMinimum":0,"maximum":100000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"applicable":{"description":"Vrai : le barème d'encadrement de ce lieu est servi (Paris). Faux ailleurs, y compris dans une commune encadrée dont le barème n'est pas chargé.","type":"boolean"},"encadrement_en_vigueur":{"description":"La commune applique l'encadrement des loyers (liste des communes encadrées du simulateur de pillr.fr).","type":"boolean"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrondissement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"quartier":{"description":"Quartier retenu, ou l'arrondissement quand la moyenne de ses quartiers est prise.","anyOf":[{"type":"string"},{"type":"null"}]},"annee_bareme":{"description":"Année du barème lu (la plus récente chargée).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"criteres":{"type":"object","properties":{"pieces":{"description":"Pièces du barème, 1 à 4 (4 : quatre pièces et plus).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"epoque":{"description":"null : toutes les époques de construction, en moyenne.","anyOf":[{"description":"Époque de construction : avant_1946, 1946_1970, 1971_1990 ou apres_1990.","type":"string","enum":["avant_1946","1946_1970","1971_1990","apres_1990"]},{"type":"null"}]},"meuble":{"type":"boolean"}},"required":["pieces","epoque","meuble"],"additionalProperties":false},"loyer_reference_eur_m2":{"description":"Loyer de référence, en euros par m² et par mois.","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_minore_eur_m2":{"description":"Loyer de référence minoré, en euros par m² et par mois.","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_majore_eur_m2":{"description":"Loyer de référence majoré, en euros par m² et par mois.","anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_max_legal_eur_mois":{"description":"Loyer de référence majoré multiplié par la surface : le loyer hors charges maximal, hors complément de loyer.","anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime_eur_mois":{"description":"Le loyer comparé : celui donné, ou le loyer estimé de l'annonce (charges comprises, voir hypotheses).","anyOf":[{"type":"number"},{"type":"null"}]},"depassement_pct":{"description":"Écart du loyer comparé au loyer maximal légal, en % (positif : au-dessus).","anyOf":[{"type":"number"},{"type":"null"}]},"conforme":{"description":"Vrai si le loyer comparé ne dépasse pas le loyer maximal légal ; null sans loyer ou sans plafond.","anyOf":[{"type":"boolean"},{"type":"null"}]},"lignes_bareme":{"description":"Les lignes du barème retenues pour les moyennes.","type":"array","items":{"type":"object","properties":{"id_quartier":{"anyOf":[{"type":"string"},{"type":"null"}]},"quartier":{"anyOf":[{"type":"string"},{"type":"null"}]},"epoque":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_reference":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_minore":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_majore":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id_quartier","quartier","epoque","loyer_reference","loyer_minore","loyer_majore"],"additionalProperties":false}},"hypotheses":{"type":"array","items":{"type":"string"}},"note":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"source":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["applicable","encadrement_en_vigueur","commune","code_postal","insee","arrondissement","quartier","annee_bareme","criteres","loyer_reference_eur_m2","loyer_minore_eur_m2","loyer_majore_eur_m2","surface_m2","loyer_max_legal_eur_mois","loyer_estime_eur_mois","depassement_pct","conforme","lignes_bareme","hypotheses","note","qualite","source","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"encadrement_loyers"}},"/communes/{insee}/zonage":{"get":{"operationId":"zonage_logement","summary":"Zonage ABC, plafonds et contraintes locales","description":"Zone ABC d'une commune (corrigée des révisions officielles que la base n'intègre pas encore), statut à la date de l'appel des dispositifs d'investissement locatif (Pinel, Relance logement, Denormandie, Loc'Avantages, déficit foncier) avec leur source officielle, plafond de loyer de la location intermédiaire au m² et, pour une surface donnée, au mois avec le coefficient de surface, comparé à un loyer, et contraintes locales à vérifier en mairie : encadrement des loyers, location de courte durée, tension du marché. Mêmes faits sourcés que les pages de pillr.fr ; aucun conseil fiscal. Coût : 1 crédit par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"surface","in":"query","required":false,"schema":{"description":"Surface retenue en m² (habitable, plus la moitié des annexes dans la limite de 8 m²).","type":"number","exclusiveMinimum":0,"maximum":1000}},{"name":"loyer","in":"query","required":false,"schema":{"description":"Loyer mensuel hors charges à comparer au plafond, en euros.","type":"number","exclusiveMinimum":0,"maximum":100000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone":{"description":"La zone en vigueur ; null pour une commune inconnue du zonage (outre-mer compris).","anyOf":[{"description":"Zone du zonage ABC : A bis, A, B1, B2 ou C.","type":"string","enum":["A bis","A","B1","B2","C"]},{"type":"null"}]},"zone_servie":{"description":"La zone lue en base, avant correction.","anyOf":[{"type":"string"},{"type":"null"}]},"correction":{"description":"Une révision officielle que la base n'intègre pas encore et qui change la zone de la commune.","anyOf":[{"type":"object","properties":{"arrete":{"type":"string"},"en_vigueur_le":{"type":"string"},"zone_servie":{"description":"Zone du zonage ABC : A bis, A, B1, B2 ou C.","type":"string","enum":["A bis","A","B1","B2","C"]},"source":{"type":"object","properties":{"editeur":{"type":"string"},"libelle":{"type":"string"},"url":{"type":"string"},"date":{"description":"Date de la source ou de la version du texte consultée (AAAA-MM-JJ).","type":"string"}},"required":["editeur","libelle","url","date"],"additionalProperties":false}},"required":["arrete","en_vigueur_le","zone_servie","source"],"additionalProperties":false},{"type":"null"}]},"zonage":{"type":"object","properties":{"arrete":{"description":"Dernière révision officielle intégrée à la base.","type":"string"},"importe_le":{"type":"string"},"constate_le":{"type":"string"},"phrase":{"type":"string"},"source":{"type":"object","properties":{"editeur":{"type":"string"},"libelle":{"type":"string"},"url":{"type":"string"},"date":{"description":"Date de la source ou de la version du texte consultée (AAAA-MM-JJ).","type":"string"}},"required":["editeur","libelle","url","date"],"additionalProperties":false}},"required":["arrete","importe_le","constate_le","phrase","source"],"additionalProperties":false},"dispositifs":{"type":"array","items":{"type":"object","properties":{"cle":{"type":"string","enum":["pinel","relance_logement","denormandie","loc_avantages","deficit_foncier"]},"nom":{"type":"string"},"statut":{"description":"ouvert : ouvert aux nouvelles opérations à la date de l'appel ; ferme : fermé ; a_verifier : ouvert sous une condition que Pillr Data ne vérifie pas (liste de communes, convention).","type":"string","enum":["ouvert","ferme","a_verifier"]},"detail":{"type":"string"},"jusqu_au":{"description":"Date limite des acquisitions ou des demandes (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"role_de_la_zone":{"type":"string"},"source":{"type":"object","properties":{"editeur":{"type":"string"},"libelle":{"type":"string"},"url":{"type":"string"},"date":{"description":"Date de la source ou de la version du texte consultée (AAAA-MM-JJ).","type":"string"}},"required":["editeur","libelle","url","date"],"additionalProperties":false},"sources_complementaires":{"type":"array","items":{"type":"object","properties":{"editeur":{"type":"string"},"libelle":{"type":"string"},"url":{"type":"string"},"date":{"description":"Date de la source ou de la version du texte consultée (AAAA-MM-JJ).","type":"string"}},"required":["editeur","libelle","url","date"],"additionalProperties":false}},"verifie_le":{"type":"string"}},"required":["cle","nom","statut","detail","jusqu_au","role_de_la_zone","source","sources_complementaires","verifie_le"],"additionalProperties":false}},"plafond_loyer_intermediaire":{"description":"Plafond de loyer de la location intermédiaire (Relance logement, baux Pinel en cours, Denormandie).","type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"eur_m2_mois":{"description":"Plafond hors charges par m² de surface retenue, avant coefficient ; null hors métropole ou sans zone.","anyOf":[{"type":"number"},{"type":"null"}]},"coefficient_surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"formule_coefficient":{"type":"string"},"plafond_mensuel":{"description":"Plafond mensuel hors charges pour la surface donnée, coefficient compris.","anyOf":[{"type":"number"},{"type":"null"}]},"loyer":{"description":"Le loyer comparé, hors charges.","anyOf":[{"type":"number"},{"type":"null"}]},"depassement_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"conforme":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"champ":{"description":"Ce que ce plafond vise, et ce qu'il ne vise pas.","type":"string"},"source":{"type":"object","properties":{"editeur":{"type":"string"},"libelle":{"type":"string"},"url":{"type":"string"},"date":{"description":"Date de la source ou de la version du texte consultée (AAAA-MM-JJ).","type":"string"}},"required":["editeur","libelle","url","date"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","eur_m2_mois","coefficient_surface","formule_coefficient","plafond_mensuel","loyer","depassement_pct","conforme","champ","source","qualite"],"additionalProperties":false},"contraintes_locales":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["encadrement","courte_duree","tension"]},"niveau":{"type":"string","enum":["info","attention"]},"titre":{"type":"string"},"detail":{"type":"string"},"a_verifier":{"description":"Pillr signale, la mairie confirme.","type":"boolean","const":true}},"required":["type","niveau","titre","detail","a_verifier"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","zone","zone_servie","correction","zonage","dispositifs","plafond_loyer_intermediaire","contraintes_locales","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"zonage_logement"}},"/simulations/rendement":{"post":{"operationId":"simuler_rendement","summary":"Rendement, cash-flow et crédit","description":"Simulation d'un investissement locatif avec le moteur du simulateur de la fiche annonce de pillr.fr : pour la location nue, la location meublée longue durée et la courte durée, loyer, rendements brut et net, mensualité du crédit, cash-flow mensuel avant et après l'impôt de la première année (régime le moins imposé), décomposé poste par poste, et projection année par année. Recommandation sur le cash-flow avant impôt et sur le TRI après impôt et revente, taux d'effort au sens du HCSF quand les revenus sont donnés. Le loyer est celui donné, sinon le loyer de marché de la commune ; la courte durée suit le profil de marché AirDNA et le statut réglementaire de la commune. Les frais d'acquisition suivent le barème du département. Calcul déterministe, aucun conseil fiscal. Coût : 2 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prix":{"description":"Prix d'achat hors frais, en euros.","type":"integer","minimum":10000,"maximum":50000000},"surface":{"description":"Surface habitable, en m².","type":"number","exclusiveMinimum":0,"maximum":1000},"insee":{"description":"Commune du bien : loyer de marché, vacance, courte durée, réglementation et frais d'acquisition du département.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"loyer":{"description":"Loyer mensuel en location nue, en euros ; sans lui, le loyer de marché de la commune.","type":"number","exclusiveMinimum":0,"maximum":100000},"travaux":{"description":"Budget de travaux, en euros (0 par défaut).","type":"number","minimum":0,"maximum":10000000},"mobilier":{"description":"Budget mobilier d'une location meublée, en euros.","type":"number","minimum":0,"maximum":1000000},"apport":{"description":"Apport en euros, rapporté à l'investissement de la location nue.","type":"number","minimum":0,"maximum":50000000},"apport_pct":{"description":"Apport en % de l'investissement (à la place d'apport).","type":"number","minimum":0,"maximum":100},"taux":{"description":"Taux du crédit, en % par an.","type":"number","minimum":0,"maximum":15},"duree":{"description":"Durée du crédit, en années.","type":"integer","minimum":1,"maximum":30},"charges":{"description":"Charges non récupérables, en euros par mois.","type":"number","minimum":0,"maximum":20000},"taxe_fonciere":{"description":"Taxe foncière, en euros par an.","type":"number","minimum":0,"maximum":200000},"tmi":{"description":"Tranche marginale d'imposition, en %.","type":"number","minimum":0,"maximum":45},"revenus":{"description":"Revenus nets mensuels du foyer, pour le taux d'effort.","type":"number","exclusiveMinimum":0,"maximum":10000000},"credits_en_cours":{"description":"Mensualités des crédits en cours, en euros.","type":"number","minimum":0,"maximum":1000000},"type":{"type":"string","enum":["appartement","maison"]},"chambres":{"description":"Chambres : capacité d'accueil en courte durée.","type":"integer","minimum":0,"maximum":20},"dpe":{"description":"Étiquette DPE : statut réglementaire de la courte durée.","type":"string","enum":["A","B","C","D","E","F","G"]},"neuf":{"type":"boolean"},"horizon":{"description":"Années de projection et de TRI.","type":"integer","minimum":1,"maximum":30},"lcd_classe":{"description":"Courte durée : meublé de tourisme classé (oui par défaut).","type":"boolean"},"lcd_conciergerie":{"description":"Courte durée : gestion par une conciergerie (oui par défaut).","type":"boolean"},"lcd_occupation_pct":{"description":"Courte durée : occupation imposée, en % des nuits ouvertes.","type":"number","minimum":0,"maximum":100},"lcd_autorise":{"description":"Courte durée : autorisation de changement d'usage obtenue.","type":"boolean"}},"required":["prix","surface"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"hypotheses":{"type":"object","properties":{"prix":{"type":"number"},"surface_m2":{"type":"number"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"travaux":{"type":"number"},"mobilier":{"type":"number"},"apport_pct":{"type":"number"},"taux_pct":{"type":"number"},"duree_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"charges_mensuelles":{"type":"number"},"taxe_fonciere":{"type":"number"},"tmi_pct":{"type":"number"},"frais_acquisition":{"type":"number"},"frais_acquisition_source":{"type":"string"},"loyer_mensuel_nu":{"type":"number"},"loyer_source":{"description":"donne : le loyer de l'appelant ; marche_commune : loyer de marché au m² de la commune multiplié par la surface.","type":"string","enum":["donne","marche_commune"]},"vacance_pct":{"type":"number"},"horizon_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["prix","surface_m2","commune","insee","travaux","mobilier","apport_pct","taux_pct","duree_ans","charges_mensuelles","taxe_fonciere","tmi_pct","frais_acquisition","frais_acquisition_source","loyer_mensuel_nu","loyer_source","vacance_pct","horizon_ans"],"additionalProperties":false},"strategies":{"type":"array","items":{"type":"object","properties":{"cle":{"description":"lld_nue : location nue ; lld_meublee : location meublée longue durée (LMNP) ; lcd : location courte durée (meublé de tourisme).","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"libelle":{"type":"string"},"loyer_mensuel":{"type":"number"},"loyer_annuel":{"type":"number"},"rendement_brut_pct":{"description":"Loyer annuel sur investissement total (prix, frais, travaux, mobilier), en %.","type":"number"},"rendement_net_pct":{"description":"Loyer annuel moins charges, vacance et gestion, sur investissement total, en %.","type":"number"},"investissement_total":{"type":"number"},"emprunt":{"type":"number"},"mensualite":{"type":"number"},"charges_annuelles":{"type":"number"},"vacance_pct":{"type":"number"},"gestion_pct":{"type":"number"},"regime_annee1":{"type":"object","properties":{"cle":{"type":"string"},"libelle":{"type":"string"},"impot_annuel":{"type":"number"},"base_imposable":{"type":"number"}},"required":["cle","libelle","impot_annuel","base_imposable"],"additionalProperties":false},"cashflow_mensuel":{"type":"object","properties":{"avant_impot":{"type":"number"},"apres_impot":{"type":"number"}},"required":["avant_impot","apres_impot"],"additionalProperties":false},"decomposition":{"description":"Montants mensuels en euros, les coûts en positif : loyer moins mensualité, charges, taxe foncière et vacance et gestion égale le cash-flow avant impôt ; moins l'impôt, le cash-flow après impôt.","type":"object","properties":{"loyer":{"type":"number"},"mensualite":{"type":"number"},"charges":{"type":"number"},"taxe_fonciere":{"type":"number"},"vacance_et_gestion":{"description":"Vacance locative, gestion et arrondis du moteur : le reste du cash-flow avant impôt.","type":"number"},"cashflow_avant_impot":{"type":"number"},"impot":{"description":"Impôt mensuel du régime de l'année 1 ; négatif : économie d'impôt (déficit foncier).","type":"number"},"cashflow_apres_impot":{"type":"number"}},"required":["loyer","mensualite","charges","taxe_fonciere","vacance_et_gestion","cashflow_avant_impot","impot","cashflow_apres_impot"],"additionalProperties":false},"projection":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cashflow_annuel":{"type":"number"},"cashflow_cumule":{"type":"number"},"capital_restant_du":{"type":"number"}},"required":["annee","cashflow_annuel","cashflow_cumule","capital_restant_du"],"additionalProperties":false}},"recommandable":{"description":"Faux pour une courte durée que la réglementation locale ou le DPE ferment.","type":"boolean"},"courte_duree":{"anyOf":[{"type":"object","properties":{"prix_nuit":{"type":"number"},"occupation_pct":{"type":"number"},"nuits_ouvertes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nuits_reservees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"capacite":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revenu_annee1":{"description":"Revenu de la première année (montée en charge).","type":"number"},"revenu_croisiere":{"description":"Revenu annuel en régime de croisière.","type":"number"},"confiance":{"type":"string","enum":["mesure","estime","faible"]},"source":{"description":"Provenance du profil de marché : marché AirDNA de la commune, profil départemental ou national, anciennes colonnes, ou repli sur le loyer nu.","type":"string"},"statut_reglementaire":{"type":"object","properties":{"niveau":{"type":"string","enum":["libre","declaration","autorisation","compensation","dpe"]},"recommandable":{"type":"boolean"},"titre":{"type":"string"},"texte":{"type":"string"}},"required":["niveau","recommandable","titre","texte"],"additionalProperties":false}},"required":["prix_nuit","occupation_pct","nuits_ouvertes","nuits_reservees","capacite","revenu_annee1","revenu_croisiere","confiance","source","statut_reglementaire"],"additionalProperties":false},{"type":"null"}]}},"required":["cle","libelle","loyer_mensuel","loyer_annuel","rendement_brut_pct","rendement_net_pct","investissement_total","emprunt","mensualite","charges_annuelles","vacance_pct","gestion_pct","regime_annee1","cashflow_mensuel","decomposition","projection","recommandable","courte_duree"],"additionalProperties":false}},"recommandee":{"type":"object","properties":{"avant_impot":{"description":"Meilleur cashflow mensuel avant impôt, parmi les stratégies recommandables.","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"apres_impot":{"description":"Meilleur TRI après impôt et revente sur l'horizon, régime le plus favorable de chaque stratégie.","anyOf":[{"type":"object","properties":{"cle":{"description":"lld_nue : location nue ; lld_meublee : location meublée longue durée (LMNP) ; lcd : location courte durée (meublé de tourisme).","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"horizon_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tri_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"regime":{"type":"string"}},"required":["cle","horizon_ans","tri_pct","regime"],"additionalProperties":false},{"type":"null"}]}},"required":["avant_impot","apres_impot"],"additionalProperties":false},"synthese":{"type":"object","properties":{"strategie":{"description":"lld_nue : location nue ; lld_meublee : location meublée longue durée (LMNP) ; lcd : location courte durée (meublé de tourisme).","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"rendement_brut_pct":{"type":"number"},"rendement_net_pct":{"type":"number"},"mensualite":{"type":"number"},"cashflow_mensuel":{"type":"object","properties":{"avant_impot":{"type":"number"},"apres_impot":{"type":"number"}},"required":["avant_impot","apres_impot"],"additionalProperties":false}},"required":["strategie","rendement_brut_pct","rendement_net_pct","mensualite","cashflow_mensuel"],"additionalProperties":false},"hcsf":{"description":"Taux d'effort au sens du Haut Conseil de stabilité financière ; null sans revenus.","anyOf":[{"type":"object","properties":{"revenus_mensuels":{"type":"number"},"mensualites":{"description":"Mensualité de la stratégie de la synthèse, plus les crédits en cours.","type":"number"},"taux_effort_pct":{"type":"number"},"seuil_pct":{"type":"number"},"conforme":{"type":"boolean"},"mensualite_max":{"type":"number"}},"required":["revenus_mensuels","mensualites","taux_effort_pct","seuil_pct","conforme","mensualite_max"],"additionalProperties":false},{"type":"null"}]},"avertissements":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["hypotheses","strategies","recommandee","synthese","hcsf","avertissements","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"simuler_rendement"}},"/taux-credit":{"get":{"operationId":"taux_credit","summary":"Taux de crédit du moment","description":"Taux de crédit immobilier du moment par durée (bon taux, très bon taux, taux excellent), lus dans le tableau du baromètre public de meilleurtaux.com, avec la date de sa simulation. Lecture d'une page tierce sans API ni contrat : si le tableau change de forme ou ne répond pas, l'opération répond « donnée indisponible », jamais un taux de repli. Réponse gardée 6 heures. Coût : 1 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"taux":{"description":"Taux nominaux par durée, hors assurance, tels que le baromètre les publie.","type":"array","items":{"type":"object","properties":{"duree_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bon_pct":{"description":"« Bon taux » du baromètre, en % par an.","anyOf":[{"type":"number"},{"type":"null"}]},"tres_bon_pct":{"description":"« Très bon taux » du baromètre, en % par an.","anyOf":[{"type":"number"},{"type":"null"}]},"excellent_pct":{"description":"« Taux excellent » du baromètre, en % par an.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["duree_ans","bon_pct","tres_bon_pct","excellent_pct"],"additionalProperties":false}},"simulation_du":{"description":"Date de la simulation publiée par le baromètre (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"lu_le":{"description":"Horodatage de la lecture de la page.","type":"string"},"source":{"type":"string"},"url":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["taux","simulation_du","lu_le","source","url","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"taux_credit"}},"/fiscal/simulations":{"post":{"operationId":"simuler_fiscalite","summary":"Simulation fiscale sur l'horizon de détention","description":"Simulation fiscale déterministe d'un investissement locatif, décrit ou désigné par une annonce, avec le moteur du simulateur de pillr.fr et de l'agent du Hub : location nue, meublée longue durée et courte durée, chacune évaluée sous chacun de ses régimes (micro-foncier, réel avec déficit, bailleur privé, micro-BIC, micro-BIC classé, réel LMNP, SCI à l'IS). Pour chaque régime : impôt et cash-flow année par année, revente nette et impôt de plus-value, TRI, VAN, enrichissement, et le motif d'un régime inaccessible. Recommandation motivée au meilleur TRI après impôt, prix maximum pour un TRI visé et pour un cash-flow nul, test de résistance, contraintes locales. Règles fiscales codées dans le moteur et citées dans ses avertissements ; aucun conseil fiscal. Coût : 2 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"annonce":{"description":"Annonce du catalogue : prix, surface, type, commune, DPE, chambres, loyer estimé et travaux servent de défaut.","type":"string","minLength":3,"maxLength":200},"prix":{"description":"Prix d'achat hors frais, en euros.","type":"integer","minimum":10000,"maximum":50000000},"surface":{"type":"number","exclusiveMinimum":0,"maximum":1000},"insee":{"description":"Commune : loyer de marché, vacance, courte durée, réglementation, frais d'acquisition du département.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"loyer":{"description":"Loyer mensuel en location nue, en euros ; sans lui, le loyer estimé de l'annonce ou le loyer de marché.","type":"number","exclusiveMinimum":0,"maximum":100000},"type":{"type":"string","enum":["appartement","maison"]},"neuf":{"type":"boolean"},"dpe":{"type":"string","enum":["A","B","C","D","E","F","G"]},"chambres":{"type":"integer","minimum":0,"maximum":20},"travaux":{"type":"number","minimum":0,"maximum":10000000},"mobilier":{"type":"number","minimum":0,"maximum":1000000},"apport_pct":{"description":"Apport, en % de l'investissement.","type":"number","minimum":0,"maximum":100},"taux":{"description":"Taux du crédit, en % par an.","type":"number","minimum":0,"maximum":15},"duree":{"description":"Durée du crédit, en années.","type":"integer","minimum":1,"maximum":30},"tmi":{"description":"Tranche marginale d'imposition, en %.","type":"number","minimum":0,"maximum":45},"charges":{"description":"Charges non récupérables, en euros par mois.","type":"number","minimum":0,"maximum":20000},"taxe_fonciere":{"description":"Taxe foncière, en euros par an.","type":"number","minimum":0,"maximum":200000},"horizon":{"description":"Années de détention avant revente.","type":"integer","minimum":1,"maximum":35},"bailleur_prive_loyer":{"description":"Niveau de loyer du statut du bailleur privé.","type":"string","enum":["intermediaire","social","tres_social"]},"sci_distribue":{"description":"SCI à l'IS : résultats distribués (sinon capitalisés).","type":"boolean"},"lcd_classe":{"type":"boolean"},"lcd_conciergerie":{"type":"boolean"},"lcd_occupation_pct":{"type":"number","minimum":0,"maximum":100},"lcd_autorise":{"type":"boolean"},"valorisation_pct":{"description":"Valorisation annuelle du bien, en %.","type":"number","minimum":-10,"maximum":15},"hausse_loyer_pct":{"description":"Hausse annuelle des loyers, en %.","type":"number","minimum":-10,"maximum":15},"tri_vise_pct":{"description":"TRI visé pour le prix maximum, en %.","type":"number","minimum":0,"maximum":30}},"additionalProperties":false,"required":[]}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"annonce":{"anyOf":[{"type":"string"},{"type":"null"}]},"bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"hypotheses":{"type":"object","properties":{"prix_eur":{"type":"number"},"surface_m2":{"type":"number"},"type_bien":{"type":"string"},"neuf":{"type":"boolean"},"travaux_eur":{"type":"number"},"mobilier_eur":{"type":"number"},"apport_pct":{"type":"number"},"taux_credit_pct":{"type":"number"},"duree_credit_ans":{"type":"number"},"tmi_pct":{"type":"number"},"charges_mensuelles_eur":{"type":"number"},"taxe_fonciere_eur_an":{"type":"number"},"frais_acquisition_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"frais_acquisition_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"horizon_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"valorisation_pct":{"description":"Valorisation annuelle du bien retenue ; null : celle du moteur.","anyOf":[{"type":"number"},{"type":"null"}]},"hausse_loyer_pct":{"description":"Hausse annuelle des loyers retenue ; null : celle du moteur.","anyOf":[{"type":"number"},{"type":"null"}]},"source_loyer":{"type":"string"},"source_lcd":{"type":"string"}},"required":["prix_eur","surface_m2","type_bien","neuf","travaux_eur","mobilier_eur","apport_pct","taux_credit_pct","duree_credit_ans","tmi_pct","charges_mensuelles_eur","taxe_fonciere_eur_an","frais_acquisition_eur","frais_acquisition_source","horizon_ans","valorisation_pct","hausse_loyer_pct","source_loyer","source_lcd"],"additionalProperties":false},"strategies":{"type":"array","items":{"type":"object","properties":{"strategie":{"type":"string"},"cle":{"description":"lld_nue : location nue ; lld_meublee : location meublée longue durée (LMNP) ; lcd : location courte durée (meublé de tourisme).","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"loyer_mensuel_eur":{"type":"number"},"rendement_brut_pct":{"type":"number"},"rendement_net_avant_impot_pct":{"type":"number"},"cashflow_mensuel_avant_impot_eur":{"type":"number"},"investissement_total_eur":{"type":"number"},"apport_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"mensualite_credit_eur":{"type":"number"},"regime_conseille":{"anyOf":[{"type":"object","properties":{"regime":{"type":"string"},"cle":{"description":"Régime fiscal : micro-foncier, réel foncier, bailleur privé (Relance logement), micro-BIC, micro-BIC classé, réel LMNP, SCI à l'IS.","type":"string","enum":["micro_foncier","reel_foncier","bailleur_prive","micro_bic","micro_bic_classe","reel_bic_lmnp","sci_is"]},"tri_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net_net_annee1_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"cashflow_mensuel_apres_impot_annee1_eur":{"type":"number"},"cashflow_cumule_apres_impot_eur":{"type":"number"},"impot_total_horizon_eur":{"type":"number"},"revente_nette_eur":{"type":"number"},"enrichissement_eur":{"type":"number"},"annees_sans_impot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cotisations_sociales_eur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["regime","cle","tri_pct","rendement_net_net_annee1_pct","cashflow_mensuel_apres_impot_annee1_eur","cashflow_cumule_apres_impot_eur","impot_total_horizon_eur","revente_nette_eur","enrichissement_eur","annees_sans_impot","cotisations_sociales_eur"],"additionalProperties":false},{"type":"null"}]},"raisons":{"type":"array","items":{"type":"string"}},"regimes":{"type":"array","items":{"type":"object","properties":{"regime":{"type":"string"},"cle":{"description":"Régime fiscal : micro-foncier, réel foncier, bailleur privé (Relance logement), micro-BIC, micro-BIC classé, réel LMNP, SCI à l'IS.","type":"string","enum":["micro_foncier","reel_foncier","bailleur_prive","micro_bic","micro_bic_classe","reel_bic_lmnp","sci_is"]},"eligible":{"type":"boolean"},"inaccessible":{"description":"Vrai si le régime n'est pas ouvert à ce bien ; raison dit pourquoi.","type":"boolean"},"raison":{"type":"string"},"impot_annee1_eur":{"type":"number"},"base_imposable_annee1_eur":{"type":"number"},"cashflow_mensuel_apres_impot_annee1_eur":{"type":"number"},"tri_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"van_eur":{"description":"Valeur actuelle nette des flux de l'investisseur sur l'horizon.","type":"number"},"impot_total_horizon_eur":{"type":"number"},"cotisations_sociales_eur":{"description":"Meublé de tourisme au-delà du seuil de recettes : cotisations sociales, déjà comprises dans l'impôt.","anyOf":[{"type":"number"},{"type":"null"}]},"cashflow_cumule_apres_impot_eur":{"type":"number"},"annees_sans_impot":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revente":{"type":"object","properties":{"prix_eur":{"type":"number"},"capital_restant_du_eur":{"type":"number"},"impot_eur":{"description":"Impôt sur la plus-value de revente (ou plus-value professionnelle de la SCI).","type":"number"},"amortissements_reintegres_eur":{"type":"number"},"net_apres_credit_eur":{"type":"number"}},"required":["prix_eur","capital_restant_du_eur","impot_eur","amortissements_reintegres_eur","net_apres_credit_eur"],"additionalProperties":false},"enrichissement_eur":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}},"annees":{"type":"array","items":{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loyer_brut":{"type":"number"},"loyer_encaisse":{"type":"number"},"charges":{"type":"number"},"interets":{"type":"number"},"capital_rembourse":{"type":"number"},"base_imposable":{"type":"number"},"impot":{"description":"Impôt de l'année (impôt sur le revenu et prélèvements sociaux, ou IS) ; négatif : économie d'impôt sur le revenu global.","type":"number"},"cashflow_avant_impot":{"type":"number"},"cashflow_apres_impot":{"type":"number"},"cumul_apres_impot":{"type":"number"},"amortissement_deduit":{"type":"number"},"report":{"description":"Déficits ou amortissements en report à la fin de l'année.","type":"number"},"capital_restant_du":{"type":"number"},"valeur_bien":{"type":"number"},"enrichissement":{"type":"number"}},"required":["annee","loyer_brut","loyer_encaisse","charges","interets","capital_rembourse","base_imposable","impot","cashflow_avant_impot","cashflow_apres_impot","cumul_apres_impot","amortissement_deduit","report","capital_restant_du","valeur_bien","enrichissement"],"additionalProperties":false}}},"required":["regime","cle","eligible","inaccessible","raison","impot_annee1_eur","base_imposable_annee1_eur","cashflow_mensuel_apres_impot_annee1_eur","tri_pct","van_eur","impot_total_horizon_eur","cotisations_sociales_eur","cashflow_cumule_apres_impot_eur","annees_sans_impot","revente","enrichissement_eur","notes","annees"],"additionalProperties":false}},"courte_duree":{"anyOf":[{"type":"object","properties":{"prix_nuit_eur":{"type":"number"},"occupation_pct":{"type":"number"},"nuits_reservees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nuits_ouvertes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rotations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"capacite":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revenu_annee1_eur":{"type":"number"},"revenu_croisiere_eur":{"type":"number"},"ratio_vs_loyer_nu":{"anyOf":[{"type":"number"},{"type":"null"}]},"confiance":{"type":"string"},"source":{"type":"string"},"marche":{"type":"object","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonces_actives":{"anyOf":[{"type":"number"},{"type":"null"}]},"date":{"anyOf":[{"type":"string"},{"type":"null"}]},"score_marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_demande":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_saisonnalite":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_croissance":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_reglementation":{"anyOf":[{"type":"number"},{"type":"null"}]},"variation_annuelle_annonces_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nom","annonces_actives","date","score_marche","score_demande","score_saisonnalite","score_croissance","score_reglementation","variation_annuelle_annonces_pct"],"additionalProperties":false},"couts":{"type":"object","properties":{"plateforme_pct":{"type":"number"},"conciergerie_pct":{"type":"number"},"renouvellement_pct":{"type":"number"},"menage_eur":{"type":"number"},"linge_eur":{"type":"number"},"energie_eur":{"type":"number"},"internet_eur":{"type":"number"},"assurance_eur":{"type":"number"},"classement_eur":{"type":"number"},"total_eur":{"type":"number"}},"required":["plateforme_pct","conciergerie_pct","renouvellement_pct","menage_eur","linge_eur","energie_eur","internet_eur","assurance_eur","classement_eur","total_eur"],"additionalProperties":false},"reglementation":{"type":"object","properties":{"niveau":{"type":"string"},"recommandable":{"type":"boolean"},"titre":{"type":"string"},"texte":{"type":"string"}},"required":["niveau","recommandable","titre","texte"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"}},"avertissements":{"type":"array","items":{"type":"string"}}},"required":["prix_nuit_eur","occupation_pct","nuits_reservees","nuits_ouvertes","rotations","capacite","revenu_annee1_eur","revenu_croisiere_eur","ratio_vs_loyer_nu","confiance","source","marche","couts","reglementation","notes","avertissements"],"additionalProperties":false},{"type":"null"}]}},"required":["strategie","cle","loyer_mensuel_eur","rendement_brut_pct","rendement_net_avant_impot_pct","cashflow_mensuel_avant_impot_eur","investissement_total_eur","apport_eur","mensualite_credit_eur","regime_conseille","raisons","regimes","courte_duree"],"additionalProperties":false}},"recommandation":{"description":"La stratégie au meilleur TRI après impôt et revente, parmi les stratégies recommandables, et son régime.","anyOf":[{"type":"object","properties":{"strategie":{"type":"string"},"cle_strategie":{"description":"lld_nue : location nue ; lld_meublee : location meublée longue durée (LMNP) ; lcd : location courte durée (meublé de tourisme).","type":"string","enum":["lld_nue","lld_meublee","lcd"]},"regime":{"type":"string"},"cle_regime":{"description":"Régime fiscal : micro-foncier, réel foncier, bailleur privé (Relance logement), micro-BIC, micro-BIC classé, réel LMNP, SCI à l'IS.","type":"string","enum":["micro_foncier","reel_foncier","bailleur_prive","micro_bic","micro_bic_classe","reel_bic_lmnp","sci_is"]},"tri_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net_net_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"raisons":{"type":"array","items":{"type":"string"}}},"required":["strategie","cle_strategie","regime","cle_regime","tri_pct","rendement_net_net_pct","raisons"],"additionalProperties":false},{"type":"null"}]},"courbes":{"anyOf":[{"type":"object","properties":{"strategie":{"type":"string"},"annees":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"regimes":{"type":"array","items":{"type":"object","properties":{"regime":{"type":"string"},"cle":{"description":"Régime fiscal : micro-foncier, réel foncier, bailleur privé (Relance logement), micro-BIC, micro-BIC classé, réel LMNP, SCI à l'IS.","type":"string","enum":["micro_foncier","reel_foncier","bailleur_prive","micro_bic","micro_bic_classe","reel_bic_lmnp","sci_is"]},"eligible":{"type":"boolean"},"cumul_apres_impot":{"type":"array","items":{"type":"number"}},"enrichissement":{"type":"array","items":{"type":"number"}},"impot":{"type":"array","items":{"type":"number"}}},"required":["regime","cle","eligible","cumul_apres_impot","enrichissement","impot"],"additionalProperties":false}}},"required":["strategie","annees","regimes"],"additionalProperties":false},{"type":"null"}]},"prix_maximum":{"anyOf":[{"type":"object","properties":{"strategie":{"type":"string"},"regime":{"type":"string"},"prix_demande_eur":{"type":"number"},"pour_tri_cible":{"anyOf":[{"type":"object","properties":{"tri_cible_pct":{"type":"number"},"prix_eur":{"type":"number"},"ecart_pct":{"type":"number"}},"required":["tri_cible_pct","prix_eur","ecart_pct"],"additionalProperties":false},{"type":"null"}]},"pour_cashflow_nul":{"anyOf":[{"type":"object","properties":{"prix_eur":{"type":"number"},"ecart_pct":{"type":"number"}},"required":["prix_eur","ecart_pct"],"additionalProperties":false},{"type":"null"}]}},"required":["strategie","regime","prix_demande_eur","pour_tri_cible","pour_cashflow_nul"],"additionalProperties":false},{"type":"null"}]},"test_de_resistance":{"anyOf":[{"type":"object","properties":{"strategie":{"type":"string"},"regime":{"type":"string"},"scenarios":{"type":"array","items":{"type":"object","properties":{"cle":{"type":"string"},"libelle":{"type":"string"},"tri_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"cashflow_mensuel_apres_impot_annee1_eur":{"type":"number"},"enrichissement_eur":{"type":"number"}},"required":["cle","libelle","tri_pct","cashflow_mensuel_apres_impot_annee1_eur","enrichissement_eur"],"additionalProperties":false}}},"required":["strategie","regime","scenarios"],"additionalProperties":false},{"type":"null"}]},"contraintes_locales":{"type":"array","items":{"type":"object","properties":{"niveau":{"type":"string","enum":["info","attention"]},"titre":{"type":"string"},"texte":{"type":"string"}},"required":["niveau","titre","texte"],"additionalProperties":false}},"avertissements":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["annonce","bien","hypotheses","strategies","recommandation","courbes","prix_maximum","test_de_resistance","contraintes_locales","avertissements","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"simuler_fiscalite"}},"/fiscal/plus-value":{"post":{"operationId":"plus_value","summary":"Plus-value immobilière à la revente","description":"Plus-value immobilière d'un particulier à la revente, avec le moteur fiscal de pillr.fr : durée de détention, prix d'acquisition majoré des frais (réels, ou forfait de 7,5 %) et des travaux (réels, ou forfait de 15 % après 5 ans), amortissements réintégrés en LMNP ou en bailleur privé, abattements pour durée de détention à l'impôt sur le revenu et aux prélèvements sociaux, impôt, prélèvements, surtaxe des plus-values élevées, impôt total et net vendeur. Exonération de la résidence principale. Aucun conseil fiscal. Coût : 1 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prix_achat":{"description":"Prix d'achat, en euros.","type":"number","minimum":1000,"maximum":100000000},"date_achat":{"description":"Date d'achat (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"frais_acquisition":{"description":"Frais d'acquisition réels, en euros ; sans eux, le forfait de 7,5 % du prix d'achat.","type":"number","minimum":0,"maximum":10000000},"travaux":{"description":"Travaux réels non déduits des revenus, en euros.","type":"number","minimum":0,"maximum":100000000},"travaux_forfait":{"description":"Forfait travaux de 15 % du prix d'achat, au-delà de 5 ans de détention (à la place des travaux réels).","type":"boolean"},"prix_vente":{"description":"Prix de vente, en euros.","type":"number","minimum":1000,"maximum":100000000},"date_vente":{"description":"Date de vente (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"residence_principale":{"description":"Vente de la résidence principale : exonérée.","type":"boolean"},"regime":{"description":"lmnp ou bailleur_prive : les amortissements déduits sont réintégrés au prix d'acquisition.","type":"string","enum":["particulier","lmnp","bailleur_prive"]},"amortissements_deduits":{"description":"Amortissements déduits pendant la détention, en euros.","type":"number","minimum":0,"maximum":100000000}},"required":["prix_achat","date_achat","prix_vente","date_vente"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"duree_detention_ans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_achat":{"type":"number"},"frais_acquisition":{"type":"number"},"frais_acquisition_mode":{"description":"forfait : 7,5 % du prix d'achat, retenu quand les frais réels ne sont pas donnés.","type":"string","enum":["reels","forfait"]},"travaux":{"type":"number"},"travaux_mode":{"description":"forfait : 15 % du prix d'achat, après plus de 5 ans de détention.","type":"string","enum":["reels","forfait","aucun"]},"amortissements_reintegres":{"type":"number"},"prix_acquisition_majore":{"description":"Prix d'achat, frais et travaux, diminué des amortissements réintégrés.","type":"number"},"prix_vente":{"type":"number"},"plus_value_brute":{"description":"Prix de vente moins prix d'achat, frais et travaux.","type":"number"},"plus_value_imposable":{"type":"number"},"abattement_ir_pct":{"type":"number"},"abattement_ps_pct":{"type":"number"},"base_ir":{"type":"number"},"base_ps":{"type":"number"},"impot_ir":{"type":"number"},"prelevements_sociaux":{"type":"number"},"surtaxe":{"type":"number"},"impot_total":{"type":"number"},"plus_value_nette":{"description":"Plus-value brute moins l'impôt total.","type":"number"},"net_vendeur":{"description":"Prix de vente moins l'impôt total, avant remboursement d'un éventuel crédit.","type":"number"},"exoneration":{"anyOf":[{"type":"object","properties":{"motif":{"type":"string"},"source":{"type":"string"}},"required":["motif","source"],"additionalProperties":false},{"type":"null"}]},"taux":{"type":"object","properties":{"impot_revenu_pct":{"type":"number"},"prelevements_sociaux_pct":{"type":"number"}},"required":["impot_revenu_pct","prelevements_sociaux_pct"],"additionalProperties":false},"hypotheses":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["duree_detention_ans","prix_achat","frais_acquisition","frais_acquisition_mode","travaux","travaux_mode","amortissements_reintegres","prix_acquisition_majore","prix_vente","plus_value_brute","plus_value_imposable","abattement_ir_pct","abattement_ps_pct","base_ir","base_ps","impot_ir","prelevements_sociaux","surtaxe","impot_total","plus_value_nette","net_vendeur","exoneration","taux","hypotheses","sources","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"plus_value"}},"/fiscal/taxe-amenagement":{"post":{"operationId":"taxe_amenagement","summary":"Taxe d'aménagement d'un projet","description":"Taxe d'aménagement d'un projet de construction, d'agrandissement, de piscine ou de places de stationnement extérieures, avec le moteur des démarches d'urbanisme de pillr.fr : parts communale, départementale et régionale (Île-de-France) aux taux votés par les collectivités (délibérations notifiées à la DGFiP), ou au barème légal en fourchette quand la commune n'en publie pas, abattement de la résidence principale, piscine et places au forfait, taxe d'archéologie préventive, déclaration et paiement, chaque valeur avec sa source. Un fait manquant revient en question. Estimation indicative : seul l'avis de la DGFiP fixe le montant dû. Coût : 1 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Commune du terrain : ses taux et sa valeur forfaitaire.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"type_travaux":{"description":"Nature des travaux ; par défaut construction_nouvelle avec une surface, piscine avec un bassin seul.","type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"formalite":{"description":"Autorisation d'urbanisme du projet ; sans elle, la taxe est calculée pour un projet soumis à autorisation. aucune : rien n'est dû.","type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"surface_taxable_creee_m2":{"description":"Surface taxable créée : close, couverte, de plus de 1,80 m sous plafond, en m².","type":"number","minimum":0,"maximum":100000},"surface_taxable_existante_m2":{"description":"Surface taxable existante du logement et de ses annexes, pour l'abattement.","type":"number","minimum":0,"maximum":100000},"residence_principale":{"description":"Résidence principale ou ses annexes : abattement de 50 % sur les 100 premiers m².","type":"boolean"},"piscine_m2":{"description":"Surface du bassin, en m².","type":"number","minimum":0,"maximum":10000},"places_exterieures":{"description":"Places de stationnement extérieures créées.","type":"integer","minimum":0,"maximum":10000},"affecte_sous_sol":{"description":"Travaux qui affectent le sous-sol (fondations, terrassement) : taxe d'archéologie préventive.","type":"boolean"},"taux_communal_pct":{"description":"Taux communal connu, en % (remplace celui des délibérations).","type":"number","minimum":0,"maximum":20},"taux_departemental_pct":{"description":"Taux départemental connu, en %.","type":"number","minimum":0,"maximum":2.5}},"required":["insee"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"statut":{"description":"estimee : montant ou fourchette ; non_due : rien n'est dû ; hors_calcul : cas que le moteur n'estime pas ; faits_manquants : les questions disent quoi donner.","type":"string","enum":["estimee","non_due","hors_calcul","faits_manquants"]},"regle":{"type":"string"},"annee_valeurs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_jour_le":{"type":"string"},"formule":{"type":"string"},"valeurs":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"valeur":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["libelle","valeur","sources"],"additionalProperties":false}},"assiette":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"calcul":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"sources":{"type":"array","items":{"type":"string"}}},"required":["libelle","calcul","min","max","sources"],"additionalProperties":false}},"assiette_min":{"type":"number"},"assiette_max":{"type":"number"},"parts":{"type":"array","items":{"type":"object","properties":{"part":{"type":"string","enum":["communale","departementale","regionale"]},"libelle":{"type":"string"},"taux":{"type":"string"},"taux_min":{"type":"number"},"taux_max":{"type":"number"},"montant_min":{"type":"number"},"montant_max":{"type":"number"},"source":{"type":"string"},"a_confirmer":{"type":"boolean"}},"required":["part","libelle","taux","taux_min","taux_max","montant_min","montant_max","source","a_confirmer"],"additionalProperties":false}},"total_min":{"type":"number"},"total_max":{"type":"number"},"abattement_residence_principale":{"description":"Vrai si l'abattement de 50 % sur les 100 premiers m² de la résidence principale entre dans l'assiette.","type":"boolean"},"archeologie":{"anyOf":[{"type":"object","properties":{"statut":{"type":"string","enum":["due","si_sous_sol","non_due"]},"taux_pct":{"type":"number"},"montant_min":{"type":"number"},"montant_max":{"type":"number"},"regle":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["statut","taux_pct","montant_min","montant_max","regle","sources"],"additionalProperties":false},{"type":"null"}]},"faits_manquants":{"type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"declaration":{"type":"array","items":{"type":"object","properties":{"etape":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["etape","sources"],"additionalProperties":false}},"fiscalite_locale":{"anyOf":[{"type":"object","properties":{"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"ile_de_france":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"secteurs":{"anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"code_hors_bareme":{"type":"boolean"},"taux_annee_suivante":{"anyOf":[{"type":"object","properties":{"annee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"min":{"type":"number"},"max":{"type":"number"},"provisoire":{"type":"boolean"}},"required":["annee","min","max","provisoire"],"additionalProperties":false},{"type":"null"}]},"exoneration_abris_pct":{"type":"object","properties":{"communale":{"anyOf":[{"type":"number"},{"type":"null"}]},"departementale":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["communale","departementale"],"additionalProperties":false},"stationnement_vote_eur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["departement","ile_de_france","secteurs","code_hors_bareme","taux_annee_suivante","exoneration_abris_pct","stationnement_vote_eur"],"additionalProperties":false},{"type":"null"}]},"hypotheses":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","statut","regle","annee_valeurs","a_jour_le","formule","valeurs","assiette","assiette_min","assiette_max","parts","total_min","total_max","abattement_residence_principale","archeologie","faits_manquants","notes","a_confirmer","declaration","fiscalite_locale","hypotheses","sources","limites","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"taxe_amenagement"}},"/communes/{insee}/courte-duree":{"get":{"operationId":"courte_duree_commune","summary":"Marché de la courte durée d'une commune","description":"Marché de la location courte durée d'une commune : profil AirDNA (annonces actives, revenu, occupation, prix de nuit, revenu par nuit disponible, évolutions sur un an, score de marché et sous-scores), à la maille de la commune, de la ville pour un arrondissement, du département ajusté à la part de résidences secondaires ou de la France, avec sa confiance ; rentabilité de la courte durée, scores Pillr de courte durée, de longue durée et de tourisme, part de résidences secondaires, et statut réglementaire de la courte durée. Mêmes profils que le simulateur de pillr.fr. Données aspirées des pages publiques d'AirDNA. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"profil":{"description":"null : aucun profil, même départemental ou national.","anyOf":[{"type":"object","properties":{"maille":{"description":"commune : marché AirDNA de la commune ; ville : marché de la ville d'un arrondissement ; departement : profil du département ajusté à la part de résidences secondaires ; france : profil national ; anciennes_donnees : colonnes du jeu de 2025.","type":"string","enum":["commune","ville","departement","france","anciennes_donnees"]},"marche":{"description":"Nom du marché ou du profil source.","anyOf":[{"type":"string"},{"type":"null"}]},"annonces_actives":{"description":"Annonces actives sur le marché, douze derniers mois.","anyOf":[{"type":"number"},{"type":"null"}]},"revenu_annuel":{"description":"Revenu annuel de l'annonce type du marché, en euros, avant charges.","anyOf":[{"type":"number"},{"type":"null"}]},"occupation_pct":{"description":"Part des nuits ouvertes réservées, en %.","type":"number"},"prix_nuit":{"description":"Prix de nuit moyen payé, en euros.","type":"number"},"revpar":{"description":"Revenu par nuit disponible : prix de nuit multiplié par l'occupation, en euros.","type":"number"},"evolution_annonces_1an_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"evolution_revenu_1an_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_marche":{"description":"Score de marché AirDNA, 40 à 100.","anyOf":[{"type":"number"},{"type":"null"}]},"scores_airdna":{"type":"object","properties":{"demande":{"anyOf":[{"type":"number"},{"type":"null"}]},"saisonnalite":{"anyOf":[{"type":"number"},{"type":"null"}]},"croissance":{"anyOf":[{"type":"number"},{"type":"null"}]},"reglementation":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demande","saisonnalite","croissance","reglementation"],"additionalProperties":false},"confiance":{"description":"mesure : marché AirDNA d'au moins 20 annonces ; estime : petit marché lissé avec son département, ou profil départemental ; faible : profil national ou anciennes données.","type":"string","enum":["mesure","estime","faible"]},"millesime":{"description":"Millésime de l'aspiration des pages marché AirDNA.","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["maille","marche","annonces_actives","revenu_annuel","occupation_pct","prix_nuit","revpar","evolution_annonces_1an_pct","evolution_revenu_1an_pct","score_marche","scores_airdna","confiance","millesime","qualite"],"additionalProperties":false},{"type":"null"}]},"rentabilite_lcd_pct":{"description":"Rentabilité brute de la courte durée publiée par market_data (colonne héritée du jeu de 2025).","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"scores":{"description":"Scores Pillr de la commune sur 100 : courte durée, longue durée, tourisme.","type":"object","properties":{"lcd":{"anyOf":[{"type":"number"},{"type":"null"}]},"lld":{"anyOf":[{"type":"number"},{"type":"null"}]},"tourisme":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["lcd","lld","tourisme","qualite"],"additionalProperties":false},"part_residences_secondaires_pct":{"type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"reglementation":{"description":"Statut de la courte durée pour un investisseur (hors résidence principale) dans la commune, sans DPE donné.","type":"object","properties":{"niveau":{"description":"libre : déclaration en mairie ; declaration : zone tendue, déclaration et numéro d'enregistrement ; autorisation : changement d'usage à obtenir ; compensation : changement d'usage avec compensation ; dpe : DPE qui ferme le meublé de tourisme.","type":"string","enum":["libre","declaration","autorisation","compensation","dpe"]},"recommandable":{"description":"Faux quand la courte durée ne peut pas être conseillée en l'état (compensation, DPE).","type":"boolean"},"titre":{"type":"string"},"texte":{"type":"string"}},"required":["niveau","recommandable","titre","texte"],"additionalProperties":false},"limites":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","profil","rentabilite_lcd_pct","scores","part_residences_secondaires_pct","reglementation","limites","source","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"courte_duree_commune"}},"/courte-duree/estimations":{"post":{"operationId":"estimer_courte_duree","summary":"Revenu de courte durée d'un logement","description":"Revenu de location courte durée d'un logement décrit par sa commune, sa surface et ses chambres, avec le modèle du simulateur de pillr.fr : capacité d'accueil, prix de nuit et occupation ajustés à la capacité depuis le profil de marché AirDNA de la commune, nuits ouvertes et réservées, montée en charge de la première année ; coûts d'exploitation (plateforme, conciergerie, renouvellement, ménage, linge, énergie, internet, assurance, classement), revenu net, statut réglementaire de la commune et du DPE, hypothèses et avertissements. Sans profil de marché, le revenu est un multiple du loyer nu, et le dit. Coût : 2 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"surface":{"description":"Surface habitable, en m².","type":"number","exclusiveMinimum":0,"maximum":1000},"chambres":{"description":"Chambres ; sans elles, la capacité est déduite de la surface.","type":"integer","minimum":0,"maximum":20},"nuits_ouvertes":{"description":"Nuits ouvertes à la location dans l'année.","type":"integer","minimum":1,"maximum":365},"occupation_pct":{"description":"Occupation imposée, en % des nuits ouvertes ; sinon celle du marché, ajustée à la capacité.","type":"number","minimum":0,"maximum":100},"gestion":{"description":"Gestion par l'investisseur seul, ou par une conciergerie (par défaut).","type":"string","enum":["seul","conciergerie"]},"classe":{"description":"Meublé de tourisme classé (oui par défaut).","type":"boolean"},"dpe":{"description":"Étiquette DPE : une nouvelle autorisation l'exige suffisante.","type":"string","enum":["A","B","C","D","E","F","G"]},"loyer_nu":{"description":"Loyer mensuel en location nue, pour le repli et la comparaison ; sinon le loyer de marché de la commune.","type":"number","exclusiveMinimum":0,"maximum":100000}},"required":["insee","surface"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"revenu":{"type":"object","properties":{"capacite":{"description":"Couchages retenus : deux par chambre plus un, ou déduits de la surface.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prix_nuit":{"type":"number"},"occupation_pct":{"type":"number"},"nuits_ouvertes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nuits_reservees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rotations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revenu_brut":{"description":"Revenu annuel en régime de croisière, en euros.","type":"number"},"revenu_annee1":{"description":"Revenu de la première année (montée en charge).","type":"number"},"ratio_loyer_nu":{"description":"Revenu brut sur loyer nu annuel.","anyOf":[{"type":"number"},{"type":"null"}]},"confiance":{"description":"mesure : marché AirDNA d'au moins 20 annonces ; estime : petit marché lissé avec son département, ou profil départemental ; faible : profil national ou anciennes données.","type":"string","enum":["mesure","estime","faible"]},"source":{"type":"string","enum":["airdna_market","airdna_departement","airdna_national","legacy_dump","loyer_nu"]},"notes":{"type":"array","items":{"type":"string"}},"avertissements":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["capacite","prix_nuit","occupation_pct","nuits_ouvertes","nuits_reservees","rotations","revenu_brut","revenu_annee1","ratio_loyer_nu","confiance","source","notes","avertissements","qualite"],"additionalProperties":false},"couts":{"type":"object","properties":{"plateforme_pct":{"type":"number"},"conciergerie_pct":{"type":"number"},"renouvellement_pct":{"type":"number"},"plateforme":{"type":"number"},"conciergerie":{"type":"number"},"renouvellement":{"type":"number"},"menage":{"type":"number"},"linge":{"type":"number"},"energie":{"type":"number"},"internet":{"type":"number"},"assurance":{"type":"number"},"classement":{"type":"number"},"total":{"description":"Coûts d'exploitation annuels, en euros, sur le revenu brut.","type":"number"}},"required":["plateforme_pct","conciergerie_pct","renouvellement_pct","plateforme","conciergerie","renouvellement","menage","linge","energie","internet","assurance","classement","total"],"additionalProperties":false},"revenu_net":{"description":"Revenu brut moins coûts d'exploitation, avant charges de copropriété, taxe foncière, crédit et impôt.","type":"number"},"loyer_nu_mensuel":{"description":"Loyer nu de comparaison : celui donné, ou loyer de marché au m² de la commune multiplié par la surface.","anyOf":[{"type":"number"},{"type":"null"}]},"statut_reglementaire":{"type":"object","properties":{"niveau":{"description":"libre : déclaration en mairie ; declaration : zone tendue, déclaration et numéro d'enregistrement ; autorisation : changement d'usage à obtenir ; compensation : changement d'usage avec compensation ; dpe : DPE qui ferme le meublé de tourisme.","type":"string","enum":["libre","declaration","autorisation","compensation","dpe"]},"recommandable":{"description":"Faux quand la courte durée ne peut pas être conseillée en l'état (compensation, DPE).","type":"boolean"},"titre":{"type":"string"},"texte":{"type":"string"}},"required":["niveau","recommandable","titre","texte"],"additionalProperties":false},"hypotheses":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","revenu","couts","revenu_net","loyer_nu_mensuel","statut_reglementaire","hypotheses","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"estimation","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"estimer_courte_duree"}},"/communes/{insee}/risques":{"get":{"operationId":"risques_commune","summary":"Risques naturels et technologiques","description":"Risques d'une commune : inondation, remontée de nappe, séisme, mouvement de terrain, argiles, radon, feu de forêt, site industriel, nucléaire, pollution des sols, rupture de barrage et risque minier, avec leur niveau et un score composite là où Géorisques est relevé en base, et les risques recensés par l'API publique Géorisques en direct ailleurs ; potentiel radon de l'IRSN pour toutes les communes ; arrêtés de catastrophe naturelle depuis 1982. Chaque bloc dit sa source. Ne remplace pas l'état des risques d'une adresse, obligatoire avant un achat. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"risques":{"type":"object","properties":{"source":{"description":"base : relevé Géorisques en base ; georisques : risques recensés par l'API publique Géorisques, en direct ; indisponible : l'API n'a pas répondu.","type":"string","enum":["base","georisques","indisponible"]},"par_risque":{"type":"object","properties":{"inondation":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"remontee_nappe":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"seisme":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"mouvement_terrain":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"argiles":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"radon":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"feu_foret":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"icpe":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"nucleaire":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"pollution_sols":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"rupture_barrage":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false},"minier":{"type":"object","properties":{"present":{"description":"Vrai : risque relevé ou recensé ; faux : ni relevé ni recensé ; null : inconnu (source indisponible).","anyOf":[{"type":"boolean"},{"type":"null"}]},"niveau":{"description":"Niveau relevé en base (0 absent, 1 faible, 2 moyen, 3 fort ; sismicité 1 à 5), ou zone de sismicité recensée ; null sans niveau.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["present","niveau"],"additionalProperties":false}},"required":["inondation","remontee_nappe","seisme","mouvement_terrain","argiles","radon","feu_foret","icpe","nucleaire","pollution_sols","rupture_barrage","minier"],"additionalProperties":false},"libelles":{"description":"Les risques en clair, tels que la source les nomme.","type":"array","items":{"type":"string"}},"score_risque_composite":{"description":"Score composite de la base, sur 100 ; null hors des communes relevées.","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["source","par_risque","libelles","score_risque_composite","qualite"],"additionalProperties":false},"radon":{"type":"object","properties":{"classe":{"description":"Potentiel radon de l'IRSN, 1 à 3 (3 : significatif).","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["classe","qualite"],"additionalProperties":false},"catnat":{"type":"object","properties":{"arretes":{"description":"Arrêtés de catastrophe naturelle de la commune depuis 1982, du plus récent au plus ancien ; null si l'API n'a pas répondu.","anyOf":[{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"nature":{"type":"string"},"debut":{"description":"Début de l'évènement (AAAA-MM-JJ).","type":"string"},"fin":{"anyOf":[{"type":"string"},{"type":"null"}]},"arrete_publie_le":{"description":"Publication de l'arrêté au Journal officiel (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","nature","debut","fin","arrete_publie_le"],"additionalProperties":false}},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["arretes","qualite"],"additionalProperties":false},"phrase":{"type":"string"},"limites":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","risques","radon","catnat","phrase","limites","sources","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"risques_commune"}},"/communes/{insee}/mesures":{"get":{"operationId":"mesures_zone","summary":"Équipements, accès, délinquance et cadre de vie","description":"Mesures d'une commune, chacune avec sa phrase et sa source, celles de l'analyse de zone de pillr.fr : équipements de la Base permanente des équipements (quinze comptes sur la commune entière et les essentiels absents), gare de voyageurs et aéroport les plus proches avec la distance, délinquance enregistrée par catégorie (faits et taux pour 1 000 habitants, comparés à la moyenne des communes publiées), potentiel radon et risques relevés, points d'intérêt à 500 m et score de marche à pied là où ils sont calculés. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"equipements":{"anyOf":[{"type":"object","properties":{"perimetre":{"type":"string","const":"commune entière"},"comptes":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"services_particuliers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commerces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commerces_alimentaires":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enseignement":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ecoles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"colleges":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lycees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sante_social":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"medecins_generalistes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pharmacies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"transports":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"gares":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sports_loisirs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tourisme":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","services_particuliers","commerces","commerces_alimentaires","enseignement","ecoles","colleges","lycees","sante_social","medecins_generalistes","pharmacies","transports","gares","sports_loisirs","tourisme"],"additionalProperties":false},"essentiels_absents":{"type":"array","items":{"type":"string"}},"phrase":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["perimetre","comptes","essentiels_absents","phrase","qualite"],"additionalProperties":false},{"type":"null"}]},"acces":{"description":"Gare de voyageurs et aéroport à vols réguliers les plus proches, à vol d'oiseau depuis le centre habité.","anyOf":[{"type":"object","properties":{"gare":{"anyOf":[{"type":"object","properties":{"nom":{"type":"string"},"categorie":{"anyOf":[{"type":"string","enum":["nationale","régionale","locale"]},{"type":"null"}]},"km":{"type":"number"}},"required":["nom","categorie","km"],"additionalProperties":false},{"type":"null"}]},"aeroport":{"anyOf":[{"type":"object","properties":{"nom":{"type":"string"},"iata":{"anyOf":[{"type":"string"},{"type":"null"}]},"km":{"type":"number"}},"required":["nom","iata","km"],"additionalProperties":false},{"type":"null"}]},"phrase":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["gare","aeroport","phrase","qualite"],"additionalProperties":false},{"type":"null"}]},"delinquance":{"anyOf":[{"type":"object","properties":{"annee":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"population":{"anyOf":[{"type":"number"},{"type":"null"}]},"categories":{"type":"array","items":{"type":"object","properties":{"cle":{"type":"string"},"nom":{"type":"string"},"nb":{"description":"Faits enregistrés ; null quand le ministère ne publie pas (petits effectifs).","anyOf":[{"type":"number"},{"type":"null"}]},"taux_pour_1000":{"anyOf":[{"type":"number"},{"type":"null"}]},"moyenne_pour_1000":{"description":"Moyenne des communes dont les chiffres sont publiés, la même année ; null sans moyenne calculée.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["cle","nom","nb","taux_pour_1000","moyenne_pour_1000"],"additionalProperties":false}},"phrase":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["annee","population","categories","phrase","qualite"],"additionalProperties":false},{"type":"null"}]},"risques":{"type":"object","properties":{"radon_classe":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"releve":{"anyOf":[{"type":"object","properties":{"inondation":{"type":"string","enum":["faible","moyen","fort","inconnu"]},"argiles":{"type":"string","enum":["faible","moyen","fort","inconnu"]},"mouvement_terrain":{"type":"string","enum":["faible","moyen","fort","inconnu"]}},"required":["inondation","argiles","mouvement_terrain"],"additionalProperties":false},{"type":"null"}]},"phrase":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["radon_classe","releve","phrase","qualite"],"additionalProperties":false},"poi_500m":{"description":"Points d'intérêt OpenStreetMap à 500 m du centre ; calculés pour quelques centaines de communes seulement.","anyOf":[{"type":"object","properties":{"transports":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecoles":{"anyOf":[{"type":"number"},{"type":"null"}]},"commerces":{"anyOf":[{"type":"number"},{"type":"null"}]},"sante":{"anyOf":[{"type":"number"},{"type":"null"}]},"loisirs":{"anyOf":[{"type":"number"},{"type":"null"}]},"restauration":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_marche_a_pied":{"description":"Score de marche à pied, sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"score_qualite_vie":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["transports","ecoles","commerces","sante","loisirs","restauration","total","score_marche_a_pied","score_qualite_vie","qualite"],"additionalProperties":false},{"type":"null"}]},"phrases":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","equipements","acces","delinquance","risques","poi_500m","phrases","sources","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"mesures_zone"}},"/adresses/{cle_ban}/urbanisme":{"get":{"operationId":"urbanisme_adresse","summary":"Urbanisme à l'adresse","description":"Urbanisme à une adresse, par sa clé BAN, par l'adresse en texte ou par un point (lat et lon), d'après les documents publiés sur le Géoportail de l'Urbanisme : zone du PLU, du PLUi ou de la carte communale avec le lien du règlement, prescriptions et informations qui couvrent le point ou passent tout près, servitudes d'utilité publique avec le lien de l'acte, constats factuels, et un statut explicite quand aucune zone n'est rendue (commune au RNU, document non publié pour la commune, point hors des zones publiées). Le règlement n'est pas lu, son lien est donné. Seul un certificat d'urbanisme engage la commune. Coût : 2 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une adresse en texte ou un point.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point : numéro, milieu de la voie, lieu-dit, point donné, autre.","type":"string","enum":["numero","voie","lieu_dit","point","autre"]},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"Statut du document d'urbanisme au point : jamais une réponse vide sans motif.","type":"object","properties":{"code":{"description":"zonage_publie : une zone d'un document publié couvre le point ; rnu : commune au règlement national d'urbanisme ; document_non_publie : la commune n'est pas au RNU et aucun document n'est publié pour elle ; hors_zonage : la commune a un document publié mais aucune zone ne couvre le point ; indetermine : commune non identifiée.","type":"string","enum":["zonage_publie","rnu","document_non_publie","hors_zonage","indetermine"]},"motif":{"description":"La raison en une phrase.","type":"string"}},"required":["code","motif"],"additionalProperties":false},"commune_rnu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"zones":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"description":"Famille de la zone en clair : urbaine, à urbaniser, agricole, naturelle.","anyOf":[{"type":"string"},{"type":"null"}]},"document":{"description":"Identifiant du document d'urbanisme sur le Géoportail.","anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"reglement_url":{"description":"Lien du règlement de la zone (PDF) : non lu par cette opération.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","famille","document","type_document","approuve_le","reglement_url"],"additionalProperties":false}},"prescriptions":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"type_code":{"description":"Code du type de prescription ou d'information du standard CNIG.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien du document qui porte l'élément.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : l'élément couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","type_code","lien","distance_m"],"additionalProperties":false}},"informations":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"type_code":{"description":"Code du type de prescription ou d'information du standard CNIG.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien du document qui porte l'élément.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : l'élément couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","type_code","lien","distance_m"],"additionalProperties":false}},"servitudes":{"type":"array","items":{"type":"object","properties":{"categorie":{"description":"Catégorie de servitude d'utilité publique (AC1, AC4, PM1...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"lien":{"description":"Lien de l'acte.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : la servitude couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["categorie","libelle","lien","distance_m"],"additionalProperties":false}},"constats":{"description":"Constats factuels tirés de la réponse, dans l'ordre où ils comptent pour un projet.","type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","adresse","statut","commune_rnu","zones","prescriptions","informations","servitudes","constats","limites","source","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"urbanisme_adresse"}},"/urbanisme":{"get":{"operationId":"urbanisme_adresse_2","summary":"Urbanisme à l'adresse","description":"Urbanisme à une adresse, par sa clé BAN, par l'adresse en texte ou par un point (lat et lon), d'après les documents publiés sur le Géoportail de l'Urbanisme : zone du PLU, du PLUi ou de la carte communale avec le lien du règlement, prescriptions et informations qui couvrent le point ou passent tout près, servitudes d'utilité publique avec le lien de l'acte, constats factuels, et un statut explicite quand aucune zone n'est rendue (commune au RNU, document non publié pour la commune, point hors des zones publiées). Le règlement n'est pas lu, son lien est donné. Seul un certificat d'urbanisme engage la commune. Coût : 2 crédits par appel réussi.","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200}},{"name":"code_postal","in":"query","required":false,"schema":{"description":"Code postal, pour départager une adresse homonyme (avec q).","type":"string","pattern":"^\\d{5}$"}},{"name":"lat","in":"query","required":false,"schema":{"description":"Latitude d'un point, avec lon.","type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"schema":{"description":"Longitude d'un point, avec lat.","type":"number","minimum":-180,"maximum":180}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une adresse en texte ou un point.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point : numéro, milieu de la voie, lieu-dit, point donné, autre.","type":"string","enum":["numero","voie","lieu_dit","point","autre"]},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"Statut du document d'urbanisme au point : jamais une réponse vide sans motif.","type":"object","properties":{"code":{"description":"zonage_publie : une zone d'un document publié couvre le point ; rnu : commune au règlement national d'urbanisme ; document_non_publie : la commune n'est pas au RNU et aucun document n'est publié pour elle ; hors_zonage : la commune a un document publié mais aucune zone ne couvre le point ; indetermine : commune non identifiée.","type":"string","enum":["zonage_publie","rnu","document_non_publie","hors_zonage","indetermine"]},"motif":{"description":"La raison en une phrase.","type":"string"}},"required":["code","motif"],"additionalProperties":false},"commune_rnu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"zones":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"description":"Famille de la zone en clair : urbaine, à urbaniser, agricole, naturelle.","anyOf":[{"type":"string"},{"type":"null"}]},"document":{"description":"Identifiant du document d'urbanisme sur le Géoportail.","anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"reglement_url":{"description":"Lien du règlement de la zone (PDF) : non lu par cette opération.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","famille","document","type_document","approuve_le","reglement_url"],"additionalProperties":false}},"prescriptions":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"type_code":{"description":"Code du type de prescription ou d'information du standard CNIG.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien du document qui porte l'élément.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : l'élément couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","type_code","lien","distance_m"],"additionalProperties":false}},"informations":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"type_code":{"description":"Code du type de prescription ou d'information du standard CNIG.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien du document qui porte l'élément.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : l'élément couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["libelle","type_code","lien","distance_m"],"additionalProperties":false}},"servitudes":{"type":"array","items":{"type":"object","properties":{"categorie":{"description":"Catégorie de servitude d'utilité publique (AC1, AC4, PM1...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"lien":{"description":"Lien de l'acte.","anyOf":[{"type":"string"},{"type":"null"}]},"distance_m":{"description":"null : la servitude couvre le point ; sinon sa distance au point, en mètres.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["categorie","libelle","lien","distance_m"],"additionalProperties":false}},"constats":{"description":"Constats factuels tirés de la réponse, dans l'ordre où ils comptent pour un projet.","type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","adresse","statut","commune_rnu","zones","prescriptions","informations","servitudes","constats","limites","source","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"urbanisme_adresse"}},"/urbanisme/reglements":{"post":{"operationId":"lire_plu","summary":"Règlement du PLU lu et cité","description":"Les règles écrites du règlement de la zone du PLU ou du PLUi d'une adresse (clé BAN, adresse en texte ou point), par thème : voies, limites séparatives, distances entre constructions, emprise au sol, hauteur, piscines, annexes, stationnement, espaces verts, aspect et clôtures. Chaque règle porte sa valeur ou sa formule, son article, sa page et la citation exacte retrouvée dans le texte du PDF ; une règle dont la citation n'est pas retrouvée est écartée, jamais affirmée. La réponse donne aussi les définitions du lexique, les renvois et les thèmes non trouvés. Une zone déjà lue vient du cache des lectures de Pillr ; sinon le règlement est lu par un modèle, ce qui prend de l'ordre d'une minute : la réponse est une tâche (202) dont le résultat se lit ensuite. Une lecture nouvelle est bornée par le débit du serveur. Sans règlement à lire (commune au RNU, carte communale, aucun PDF publié), rien n'est débité. Seul un certificat d'urbanisme engage la commune. Coût : 60 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"},"q":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200},"code_postal":{"description":"Code postal, pour départager une adresse homonyme (avec q).","type":"string","pattern":"^\\d{5}$"},"lat":{"description":"Latitude d'un point, avec lon.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"Longitude d'un point, avec lat.","type":"number","minimum":-180,"maximum":180},"themes":{"description":"Thèmes à rendre ; par défaut, tous.","maxItems":10,"type":"array","items":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]}},"nature_projet":{"description":"Nature du projet : les règles propres à cet objet d'abord, puis celles de toutes les constructions.","type":"string","enum":["maison","extension","veranda","annexe","abri","garage","carport","piscine","terrasse","cloture","autre"]},"attendre":{"description":"Secondes d'attente de la fin de la tâche avant de répondre (60 au plus).","default":0,"type":"integer","minimum":0,"maximum":60},"webhook":{"description":"URL https appelée à la fin de la tâche, signée (Pillr-Signature).","type":"string","maxLength":500}},"additionalProperties":false,"required":[]}}}},"responses":{"200":{"description":"Tâche terminée (resultat) ou échouée (erreur, crédits rendus).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point (numero, voie, lieu_dit, point, autre).","type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"lu : règles extraites et vérifiées ; scanne : PDF sans texte, rien n'est affirmé ; zone_absente : la zone n'est pas dans ce règlement.","type":"string","enum":["lu","scanne","zone_absente"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["code","libelle","type_document","document","approuve_le"],"additionalProperties":false},"autres_zones":{"description":"Autres zones qui touchent le point : une parcelle en limite peut relever de plusieurs règlements.","type":"array","items":{"type":"string"}},"reglement_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"filtre":{"type":"object","properties":{"themes":{"type":"array","items":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]}},"nature_projet":{"anyOf":[{"type":"string","enum":["maison","extension","veranda","annexe","abri","garage","carport","piscine","terrasse","cloture","autre"]},{"type":"null"}]}},"required":["themes","nature_projet"],"additionalProperties":false},"regles":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"objets":{"description":"Ce que vise la règle ; vide : toutes les constructions.","type":"array","items":{"type":"string"}},"secteurs":{"description":"Secteurs visés, tels qu'écrits ; vide : toute la zone.","type":"array","items":{"type":"string"}},"exceptions":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"description":"distance_min, formule_hauteur, limite_ou_recul, plafond, pourcentage_max, pourcentage_min, minimum, interdit, non_reglemente, qualitatif.","type":"string"},"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"unite":{"anyOf":[{"type":"string"},{"type":"null"}]},"diviseur":{"description":"Formule : distance au moins égale à la hauteur divisée par ce nombre.","anyOf":[{"type":"number"},{"type":"null"}]},"minimum_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"conditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Comment la valeur se mesure (à l'égout du toit, au faîtage...).","anyOf":[{"type":"string"},{"type":"null"}]},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"article":{"anyOf":[{"type":"string"},{"type":"null"}]},"page":{"description":"Page du PDF où la citation a été retrouvée (1 : première page du fichier).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"description":"Citation retrouvée hors du chapitre de la zone : règle à confirmer dans le règlement.","type":"boolean"},"reserves":{"description":"Ce que la citation ne prouve pas.","type":"array","items":{"type":"string"}},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]},"portee":{"description":"Pour une nature de projet : règle propre à cet objet, ou valable pour toutes les constructions.","anyOf":[{"type":"string","enum":["specifique","generale"]},{"type":"null"}]}},"required":["theme","objets","secteurs","exceptions","forme","valeur","unite","diviseur","minimum_m","conditions","mesure","resume","citation","article","page","a_confirmer","reserves","lien","portee"],"additionalProperties":false}},"definitions":{"type":"array","items":{"type":"object","properties":{"terme":{"type":"string"},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["terme","resume","citation","page","a_confirmer","lien"],"additionalProperties":false}},"renvois":{"type":"array","items":{"type":"object","properties":{"vers":{"type":"string"},"objet":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vers","objet","citation","page","a_confirmer","lien"],"additionalProperties":false}},"non_trouve":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"raison":{"type":"string"}},"required":["theme","raison"],"additionalProperties":false}},"citations_ecartees":{"description":"Règles, définitions et renvois écartés : citation introuvable dans le texte, ou valeur absente de la citation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lecture":{"anyOf":[{"type":"object","properties":{"modele":{"type":"string"},"extrait_le":{"type":"string"},"pages_pdf":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depuis_cache":{"type":"boolean"}},"required":["modele","extrait_le","pages_pdf","depuis_cache"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","statut","message","zone","autres_zones","reglement_url","filtre","regles","definitions","renvois","non_trouve","citations_ecartees","lecture","limites","qualite"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"202":{"description":"Tâche acceptée, pas encore terminée : lire le résultat à l'adresse de l'en-tête Location (ou attendre avec le paramètre attendre).","headers":{"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point (numero, voie, lieu_dit, point, autre).","type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"lu : règles extraites et vérifiées ; scanne : PDF sans texte, rien n'est affirmé ; zone_absente : la zone n'est pas dans ce règlement.","type":"string","enum":["lu","scanne","zone_absente"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["code","libelle","type_document","document","approuve_le"],"additionalProperties":false},"autres_zones":{"description":"Autres zones qui touchent le point : une parcelle en limite peut relever de plusieurs règlements.","type":"array","items":{"type":"string"}},"reglement_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"filtre":{"type":"object","properties":{"themes":{"type":"array","items":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]}},"nature_projet":{"anyOf":[{"type":"string","enum":["maison","extension","veranda","annexe","abri","garage","carport","piscine","terrasse","cloture","autre"]},{"type":"null"}]}},"required":["themes","nature_projet"],"additionalProperties":false},"regles":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"objets":{"description":"Ce que vise la règle ; vide : toutes les constructions.","type":"array","items":{"type":"string"}},"secteurs":{"description":"Secteurs visés, tels qu'écrits ; vide : toute la zone.","type":"array","items":{"type":"string"}},"exceptions":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"description":"distance_min, formule_hauteur, limite_ou_recul, plafond, pourcentage_max, pourcentage_min, minimum, interdit, non_reglemente, qualitatif.","type":"string"},"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"unite":{"anyOf":[{"type":"string"},{"type":"null"}]},"diviseur":{"description":"Formule : distance au moins égale à la hauteur divisée par ce nombre.","anyOf":[{"type":"number"},{"type":"null"}]},"minimum_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"conditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Comment la valeur se mesure (à l'égout du toit, au faîtage...).","anyOf":[{"type":"string"},{"type":"null"}]},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"article":{"anyOf":[{"type":"string"},{"type":"null"}]},"page":{"description":"Page du PDF où la citation a été retrouvée (1 : première page du fichier).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"description":"Citation retrouvée hors du chapitre de la zone : règle à confirmer dans le règlement.","type":"boolean"},"reserves":{"description":"Ce que la citation ne prouve pas.","type":"array","items":{"type":"string"}},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]},"portee":{"description":"Pour une nature de projet : règle propre à cet objet, ou valable pour toutes les constructions.","anyOf":[{"type":"string","enum":["specifique","generale"]},{"type":"null"}]}},"required":["theme","objets","secteurs","exceptions","forme","valeur","unite","diviseur","minimum_m","conditions","mesure","resume","citation","article","page","a_confirmer","reserves","lien","portee"],"additionalProperties":false}},"definitions":{"type":"array","items":{"type":"object","properties":{"terme":{"type":"string"},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["terme","resume","citation","page","a_confirmer","lien"],"additionalProperties":false}},"renvois":{"type":"array","items":{"type":"object","properties":{"vers":{"type":"string"},"objet":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vers","objet","citation","page","a_confirmer","lien"],"additionalProperties":false}},"non_trouve":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"raison":{"type":"string"}},"required":["theme","raison"],"additionalProperties":false}},"citations_ecartees":{"description":"Règles, définitions et renvois écartés : citation introuvable dans le texte, ou valeur absente de la citation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lecture":{"anyOf":[{"type":"object","properties":{"modele":{"type":"string"},"extrait_le":{"type":"string"},"pages_pdf":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depuis_cache":{"type":"boolean"}},"required":["modele","extrait_le","pages_pdf","depuis_cache"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","statut","message","zone","autres_zones","reglement_url","filtre","regles","definitions","renvois","non_trouve","citations_ecartees","lecture","limites","qualite"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute ; Trop de tâches en cours","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":60,"x-pillr-unite":"appel","x-pillr-portee":"plu","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"lire_plu","x-pillr-tache":{"resultat":"/urbanisme/reglements/{tache}","outil_resultat":"resultat_lire_plu"}}},"/urbanisme/reglements/{tache}":{"get":{"operationId":"resultat_lire_plu","summary":"Résultat : règlement du PLU lu et cité","description":"État et résultat d'une tâche lancée par POST /urbanisme/reglements (outil lire_plu) : statut, sortie complète quand elle est terminée, erreur quand elle a échoué (ses crédits sont alors rendus). Le paramètre attendre patiente jusqu'à 60 s. Coût : 0 crédit par appel réussi.","parameters":[{"name":"tache","in":"path","required":true,"schema":{"description":"Identifiant de la tâche rendu au lancement (tache.id).","type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},{"name":"attendre","in":"query","required":false,"schema":{"description":"Secondes d'attente de la fin de la tâche avant de répondre (60 au plus).","default":0,"type":"integer","minimum":0,"maximum":60}}],"responses":{"200":{"description":"Tâche terminée (resultat) ou échouée (erreur, crédits rendus).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point (numero, voie, lieu_dit, point, autre).","type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"lu : règles extraites et vérifiées ; scanne : PDF sans texte, rien n'est affirmé ; zone_absente : la zone n'est pas dans ce règlement.","type":"string","enum":["lu","scanne","zone_absente"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["code","libelle","type_document","document","approuve_le"],"additionalProperties":false},"autres_zones":{"description":"Autres zones qui touchent le point : une parcelle en limite peut relever de plusieurs règlements.","type":"array","items":{"type":"string"}},"reglement_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"filtre":{"type":"object","properties":{"themes":{"type":"array","items":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]}},"nature_projet":{"anyOf":[{"type":"string","enum":["maison","extension","veranda","annexe","abri","garage","carport","piscine","terrasse","cloture","autre"]},{"type":"null"}]}},"required":["themes","nature_projet"],"additionalProperties":false},"regles":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"objets":{"description":"Ce que vise la règle ; vide : toutes les constructions.","type":"array","items":{"type":"string"}},"secteurs":{"description":"Secteurs visés, tels qu'écrits ; vide : toute la zone.","type":"array","items":{"type":"string"}},"exceptions":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"description":"distance_min, formule_hauteur, limite_ou_recul, plafond, pourcentage_max, pourcentage_min, minimum, interdit, non_reglemente, qualitatif.","type":"string"},"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"unite":{"anyOf":[{"type":"string"},{"type":"null"}]},"diviseur":{"description":"Formule : distance au moins égale à la hauteur divisée par ce nombre.","anyOf":[{"type":"number"},{"type":"null"}]},"minimum_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"conditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Comment la valeur se mesure (à l'égout du toit, au faîtage...).","anyOf":[{"type":"string"},{"type":"null"}]},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"article":{"anyOf":[{"type":"string"},{"type":"null"}]},"page":{"description":"Page du PDF où la citation a été retrouvée (1 : première page du fichier).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"description":"Citation retrouvée hors du chapitre de la zone : règle à confirmer dans le règlement.","type":"boolean"},"reserves":{"description":"Ce que la citation ne prouve pas.","type":"array","items":{"type":"string"}},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]},"portee":{"description":"Pour une nature de projet : règle propre à cet objet, ou valable pour toutes les constructions.","anyOf":[{"type":"string","enum":["specifique","generale"]},{"type":"null"}]}},"required":["theme","objets","secteurs","exceptions","forme","valeur","unite","diviseur","minimum_m","conditions","mesure","resume","citation","article","page","a_confirmer","reserves","lien","portee"],"additionalProperties":false}},"definitions":{"type":"array","items":{"type":"object","properties":{"terme":{"type":"string"},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["terme","resume","citation","page","a_confirmer","lien"],"additionalProperties":false}},"renvois":{"type":"array","items":{"type":"object","properties":{"vers":{"type":"string"},"objet":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vers","objet","citation","page","a_confirmer","lien"],"additionalProperties":false}},"non_trouve":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"raison":{"type":"string"}},"required":["theme","raison"],"additionalProperties":false}},"citations_ecartees":{"description":"Règles, définitions et renvois écartés : citation introuvable dans le texte, ou valeur absente de la citation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lecture":{"anyOf":[{"type":"object","properties":{"modele":{"type":"string"},"extrait_le":{"type":"string"},"pages_pdf":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depuis_cache":{"type":"boolean"}},"required":["modele","extrait_le","pages_pdf","depuis_cache"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","statut","message","zone","autres_zones","reglement_url","filtre","regles","definitions","renvois","non_trouve","citations_ecartees","lecture","limites","qualite"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"202":{"description":"Tâche acceptée, pas encore terminée : lire le résultat à l'adresse de l'en-tête Location (ou attendre avec le paramètre attendre).","headers":{"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"adresse":{"type":"object","properties":{"libelle":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"precision":{"description":"Précision du point (numero, voie, lieu_dit, point, autre).","type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["libelle","insee","precision","lat","lon"],"additionalProperties":false},"statut":{"description":"lu : règles extraites et vérifiées ; scanne : PDF sans texte, rien n'est affirmé ; zone_absente : la zone n'est pas dans ce règlement.","type":"string","enum":["lu","scanne","zone_absente"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"zone":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_document":{"anyOf":[{"type":"string"},{"type":"null"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["code","libelle","type_document","document","approuve_le"],"additionalProperties":false},"autres_zones":{"description":"Autres zones qui touchent le point : une parcelle en limite peut relever de plusieurs règlements.","type":"array","items":{"type":"string"}},"reglement_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"filtre":{"type":"object","properties":{"themes":{"type":"array","items":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]}},"nature_projet":{"anyOf":[{"type":"string","enum":["maison","extension","veranda","annexe","abri","garage","carport","piscine","terrasse","cloture","autre"]},{"type":"null"}]}},"required":["themes","nature_projet"],"additionalProperties":false},"regles":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"objets":{"description":"Ce que vise la règle ; vide : toutes les constructions.","type":"array","items":{"type":"string"}},"secteurs":{"description":"Secteurs visés, tels qu'écrits ; vide : toute la zone.","type":"array","items":{"type":"string"}},"exceptions":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"description":"distance_min, formule_hauteur, limite_ou_recul, plafond, pourcentage_max, pourcentage_min, minimum, interdit, non_reglemente, qualitatif.","type":"string"},"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"unite":{"anyOf":[{"type":"string"},{"type":"null"}]},"diviseur":{"description":"Formule : distance au moins égale à la hauteur divisée par ce nombre.","anyOf":[{"type":"number"},{"type":"null"}]},"minimum_m":{"anyOf":[{"type":"number"},{"type":"null"}]},"conditions":{"anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Comment la valeur se mesure (à l'égout du toit, au faîtage...).","anyOf":[{"type":"string"},{"type":"null"}]},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"article":{"anyOf":[{"type":"string"},{"type":"null"}]},"page":{"description":"Page du PDF où la citation a été retrouvée (1 : première page du fichier).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"description":"Citation retrouvée hors du chapitre de la zone : règle à confirmer dans le règlement.","type":"boolean"},"reserves":{"description":"Ce que la citation ne prouve pas.","type":"array","items":{"type":"string"}},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]},"portee":{"description":"Pour une nature de projet : règle propre à cet objet, ou valable pour toutes les constructions.","anyOf":[{"type":"string","enum":["specifique","generale"]},{"type":"null"}]}},"required":["theme","objets","secteurs","exceptions","forme","valeur","unite","diviseur","minimum_m","conditions","mesure","resume","citation","article","page","a_confirmer","reserves","lien","portee"],"additionalProperties":false}},"definitions":{"type":"array","items":{"type":"object","properties":{"terme":{"type":"string"},"resume":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["terme","resume","citation","page","a_confirmer","lien"],"additionalProperties":false}},"renvois":{"type":"array","items":{"type":"object","properties":{"vers":{"type":"string"},"objet":{"type":"string"},"citation":{"description":"Le passage exact du règlement, retrouvé dans le texte du PDF.","type":"string"},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_confirmer":{"type":"boolean"},"lien":{"description":"Lien qui ouvre le PDF du règlement à la page de la citation.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["vers","objet","citation","page","a_confirmer","lien"],"additionalProperties":false}},"non_trouve":{"type":"array","items":{"type":"object","properties":{"theme":{"type":"string","enum":["voies","limites_separatives","entre_constructions","emprise_sol","hauteur","piscines","annexes","stationnement","espaces_verts","aspect_clotures"]},"raison":{"type":"string"}},"required":["theme","raison"],"additionalProperties":false}},"citations_ecartees":{"description":"Règles, définitions et renvois écartés : citation introuvable dans le texte, ou valeur absente de la citation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lecture":{"anyOf":[{"type":"object","properties":{"modele":{"type":"string"},"extrait_le":{"type":"string"},"pages_pdf":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"depuis_cache":{"type":"boolean"}},"required":["modele","extrait_le","pages_pdf","depuis_cache"],"additionalProperties":false},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["adresse","statut","message","zone","autres_zones","reglement_url","filtre","regles","definitions","renvois","non_trouve","citations_ecartees","lecture","limites","qualite"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Tâche introuvable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"plu","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resultat_lire_plu","x-pillr-resultat-de":"lire_plu"}},"/communes/{insee}/urbanisme":{"get":{"operationId":"documents_urbanisme","summary":"Documents d'urbanisme d'une commune","description":"Les documents d'urbanisme d'une commune publiés sur le Géoportail de l'Urbanisme : PLU, PLUi ou carte communale avec leur identifiant, type, état, dates et lien ; le RNU ; la liste des zones avec le lien de leur règlement et l'état de sa lecture par Pillr ; les secteurs de carte communale ; les servitudes d'utilité publique dont l'emprise touche celle de la commune, avec leurs actes. Pour un arrondissement de Paris, Lyon ou Marseille, les documents de la commune sont lus aussi. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune":{"description":"Nom de la commune dans le Géoportail de l'Urbanisme.","anyOf":[{"type":"string"},{"type":"null"}]},"statut":{"type":"object","properties":{"code":{"description":"documents_publies : au moins un PLU, PLUi ou carte communale publié ; rnu : commune au règlement national d'urbanisme ; document_non_publie : ni RNU ni document publié.","type":"string","enum":["documents_publies","rnu","document_non_publie"]},"motif":{"type":"string"}},"required":["code","motif"],"additionalProperties":false},"commune_rnu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"documents":{"type":"array","items":{"type":"object","properties":{"idurba":{"description":"Identifiant du document (ex. 35238_PLUI_20251215), clé de lecture du règlement.","type":"string"},"type":{"description":"PLU, PLUi, carte communale, POS, plan de sauvegarde et de mise en valeur.","anyOf":[{"type":"string"},{"type":"null"}]},"type_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"etat":{"description":"Code d'état du document au Géoportail, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"approuve_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"reference_le":{"description":"Date de référence du document, telle que publiée.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"intercommunal":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"nom":{"description":"Nom du plan, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"siren_porteur":{"description":"SIREN de la collectivité qui porte le document.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien des pièces du document.","anyOf":[{"type":"string"},{"type":"null"}]},"publication":{"description":"Identifiant de la publication sur le Géoportail (gpu_doc_id).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["idurba","type","type_code","etat","approuve_le","reference_le","intercommunal","nom","siren_porteur","lien","publication"],"additionalProperties":false}},"zones":{"type":"array","items":{"type":"object","properties":{"document":{"description":"Identifiant du document ; null : zone sans document, son règlement ne peut pas être lu par lire_plu.","anyOf":[{"type":"string"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_zone":{"description":"Type de zone du standard CNIG (U, AUc, AUs, A, N).","anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"anyOf":[{"type":"string"},{"type":"null"}]},"reglement_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"n_objets":{"description":"Nombre de polygones de la zone sur la commune.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lecture":{"description":"Le règlement de la zone déjà lu par Pillr (lire_plu), ou null.","anyOf":[{"type":"object","properties":{"statut":{"description":"lu, scanne ou zone_absente.","type":"string"},"extrait_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"a_jour":{"description":"Faux : lecture échue ou d'une version d'extraction ancienne, une nouvelle lecture la remplacera.","type":"boolean"}},"required":["statut","extrait_le","a_jour"],"additionalProperties":false},{"type":"null"}]}},"required":["document","code","libelle","type_zone","famille","reglement_url","n_objets","lecture"],"additionalProperties":false}},"secteurs_cc":{"type":"array","items":{"type":"object","properties":{"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"anyOf":[{"type":"string"},{"type":"null"}]},"n_objets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["document","code","type_code","famille","n_objets"],"additionalProperties":false}},"servitudes":{"type":"array","items":{"type":"object","properties":{"categorie":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"nom":{"description":"Nom de l'assiette, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"document":{"description":"Partition de la servitude au Géoportail.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]},"n_objets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"actes":{"type":"array","items":{"type":"object","properties":{"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]},"decide_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["nom","lien","decide_le","type"],"additionalProperties":false}}},"required":["categorie","libelle","nom","document","lien","n_objets","actes"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune","statut","commune_rnu","documents","zones","secteurs_cc","servitudes","limites","source","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"documents_urbanisme"}},"/urbanisme/objets":{"get":{"operationId":"objets_urbanisme","summary":"Objets d'urbanisme dans une emprise","description":"Les objets du Géoportail de l'Urbanisme dont l'emprise touche une boîte d'environ 2 km de côté au plus, avec leur géométrie GeoJSON et leurs propriétés brutes : zones, secteurs de carte communale, prescriptions et informations (surfaces, lignes, points), assiettes de servitudes. Liste paginée par curseur, dans l'ordre des couches puis des identifiants. Un objet est retenu quand sa boîte englobante touche l'emprise : sa géométrie peut rester en dehors. Coût : 1 crédit par élément rendu.","parameters":[{"name":"bbox","in":"query","required":true,"schema":{"description":"Emprise « ouest,sud,est,nord » en degrés WGS84, 0.03 degré de longitude et 0.02 degré de latitude au plus (environ 2 km).","type":"string","maxLength":80,"pattern":"^-?\\d{1,3}(?:\\.\\d{1,12})?(?:,-?\\d{1,3}(?:\\.\\d{1,12})?){3}$"}},{"name":"couches","in":"query","required":false,"schema":{"description":"Couches à rendre, séparées par des virgules, parmi : zone_urba, secteur_cc, prescription_surf, prescription_lin, prescription_pct, info_surf, info_lin, info_pct, assiette_sup_s, assiette_sup_l. Par défaut, toutes.","type":"string","maxLength":300,"pattern":"^[a-z_]{1,40}(?:,[a-z_]{1,40}){0,20}$"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (1000 au plus).","default":100,"type":"integer","minimum":1,"maximum":1000}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"emprise":{"description":"L'emprise lue : ouest, sud, est, nord.","type":"array","items":{"type":"number"}},"couches":{"type":"array","items":{"type":"string","enum":["zone_urba","secteur_cc","prescription_surf","prescription_lin","prescription_pct","info_surf","info_lin","info_pct","assiette_sup_s","assiette_sup_l"]}},"donnees":{"type":"array","items":{"type":"object","properties":{"couche":{"type":"string","enum":["zone_urba","secteur_cc","prescription_surf","prescription_lin","prescription_pct","info_surf","info_lin","info_pct","assiette_sup_s","assiette_sup_l","acte_sup","doc_urba","doc_urba_com","document","municipality"]},"gid":{"description":"Identifiant de l'objet dans sa couche.","type":"string"},"idurba":{"description":"Identifiant du document d'urbanisme (ex. 35238_PLUI_20251215).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune de l'objet, quand la couche le porte.","anyOf":[{"type":"string"},{"type":"null"}]},"url_fichier":{"anyOf":[{"type":"string"},{"type":"null"}]},"proprietes":{"description":"Propriétés brutes de l'objet, telles que publiées.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"geometrie":{"description":"Géométrie GeoJSON en WGS84 (lon, lat).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["couche","gid","idurba","libelle","type_code","insee","url_fichier","proprietes","geometrie"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["emprise","couches","donnees","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"objets_urbanisme"}},"/adresses/{cle_ban}/permis":{"get":{"operationId":"permis_adresse","summary":"Autorisations d'urbanisme d'une adresse ou d'une parcelle","description":"Toutes les autorisations d'urbanisme Sitadel d'une adresse (clé BAN) ou d'une parcelle cadastrale : permis de construire, déclarations préalables, permis d'aménager et de démolir, locaux non résidentiels. Pour chacune : type, état, dates d'autorisation, d'ouverture de chantier et d'achèvement, nature du projet, logements créés par taille, sociaux et en prêt à taux zéro, surfaces, superficie du terrain, demandeur personne morale nommé avec son SIREN (une personne physique n'est jamais nommée), parcelles, et tous les champs publiés. Le rattachement se fait par une parcelle du terrain, sinon par le numéro et la voie, et chaque autorisation dit lequel. Les dates postérieures à aujourd'hui sont des dates prévisionnelles de la source, signalées. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Autorisations délivrées depuis cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une parcelle.","anyOf":[{"type":"string"},{"type":"null"}]},"id_parcelle":{"description":"Parcelle demandée ; null pour une clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune de l'adresse ou de la parcelle.","type":"string"},"parcelles":{"description":"Parcelles de l'adresse (ou la parcelle demandée) qui ont servi au rattachement.","type":"array","items":{"type":"string"}},"permis":{"type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro de l'autorisation (num_dau, num_pa ou num_pd de Sitadel).","type":"string"},"type":{"description":"PC permis de construire, DP déclaration préalable, PA permis d'aménager, PD permis de démolir.","anyOf":[{"type":"string","enum":["PC","DP","PA","PD"]},{"type":"null"}]},"source":{"description":"Table Sitadel : logements, locaux non résidentiels, démolitions, aménagements.","type":"string","enum":["logements","locaux","demolir","amenager"]},"etat":{"type":"object","properties":{"code":{"description":"Code d'état de Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"autorisee (2), annulee (4), commencee (5, chantier ouvert), achevee (6, achèvement déclaré).","anyOf":[{"type":"string","enum":["autorisee","annulee","commencee","achevee"]},{"type":"null"}]}},"required":["code","libelle"],"additionalProperties":false},"depose_en":{"description":"Année de dépôt de la demande.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"autorise_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"ouvert_le":{"description":"Date d'ouverture du chantier déclarée.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"acheve_le":{"description":"Date d'achèvement déclarée (DAACT).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"date_prevue":{"description":"Vrai si une date est postérieure à aujourd'hui : Sitadel publie aussi des dates prévisionnelles.","type":"boolean"},"nature":{"type":"object","properties":{"declaree":{"description":"Code de nature du projet déclarée (1 : nouvelle construction, 2 : travaux sur construction existante).","anyOf":[{"type":"string"},{"type":"null"}]},"completee":{"description":"Code de nature du projet complétée par le service instructeur, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"Libellé de la nature déclarée.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["declaree","completee","libelle"],"additionalProperties":false},"destination":{"description":"Code de destination principale, tel que publié par Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"description":"Logements créés (table logements seulement).","anyOf":[{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"individuels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"par_taille":{"type":"object","properties":{"p1":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p2":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p3":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p4":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p6_et_plus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["p1","p2","p3","p4","p5","p6_et_plus"],"additionalProperties":false},"sociaux":{"description":"Logements financés par un prêt locatif social.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"accession_sociale":{"description":"Logements en accession sociale hors prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ptz":{"description":"Logements financés par un prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demolis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","individuels","collectifs","par_taille","sociaux","accession_sociale","ptz","demolis"],"additionalProperties":false},{"type":"null"}]},"surfaces":{"type":"object","properties":{"habitation_creee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"habitation_demolie_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_crees_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_demolis_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["habitation_creee_m2","habitation_demolie_m2","locaux_crees_m2","locaux_demolis_m2"],"additionalProperties":false},"superficie_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"demandeur":{"description":"Demandeur personne morale, nommé avec son SIREN ; null pour une personne physique (jamais nommée).","anyOf":[{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren","siret","categorie_juridique","code_ape"],"additionalProperties":false},{"type":"null"}]},"terrain":{"type":"object","properties":{"commune":{"description":"Code INSEE de la commune dans Sitadel (commune entière pour Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lieu_dit":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"localite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","numero","voie","lieu_dit","code_postal","localite"],"additionalProperties":false},"parcelles":{"description":"Parcelles du terrain (14 caractères), préfixées par la commune de l'adresse.","type":"array","items":{"type":"string"}},"champs":{"description":"Tous les champs de l'autorisation, tels que publiés par Sitadel (demandeur personne physique retiré par la source).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"rattachement":{"description":"parcelle : une parcelle du terrain est celle de l'adresse ; adresse : même numéro et même voie.","type":"string","enum":["parcelle","adresse"]}},"required":["numero","type","source","etat","depose_en","autorise_le","ouvert_le","acheve_le","date_prevue","nature","destination","logements","surfaces","superficie_terrain_m2","demandeur","terrain","parcelles","champs","rattachement"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","id_parcelle","insee","parcelles","permis","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"permis_adresse"}},"/parcelles/{id_parcelle}/permis":{"get":{"operationId":"permis_adresse_2","summary":"Autorisations d'urbanisme d'une adresse ou d'une parcelle","description":"Toutes les autorisations d'urbanisme Sitadel d'une adresse (clé BAN) ou d'une parcelle cadastrale : permis de construire, déclarations préalables, permis d'aménager et de démolir, locaux non résidentiels. Pour chacune : type, état, dates d'autorisation, d'ouverture de chantier et d'achèvement, nature du projet, logements créés par taille, sociaux et en prêt à taux zéro, surfaces, superficie du terrain, demandeur personne morale nommé avec son SIREN (une personne physique n'est jamais nommée), parcelles, et tous les champs publiés. Le rattachement se fait par une parcelle du terrain, sinon par le numéro et la voie, et chaque autorisation dit lequel. Les dates postérieures à aujourd'hui sont des dates prévisionnelles de la source, signalées. Coût : 3 crédits par appel réussi.","parameters":[{"name":"id_parcelle","in":"path","required":true,"schema":{"description":"Identifiant de la parcelle cadastrale à 14 caractères : code INSEE, préfixe, section et numéro (ex. 35238000AB0123).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})[0-9A-Z]{3}[0-9A-Z]{2}\\d{4}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"description":"Clé BAN demandée ; null pour une parcelle.","anyOf":[{"type":"string"},{"type":"null"}]},"id_parcelle":{"description":"Parcelle demandée ; null pour une clé BAN.","anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"description":"Code INSEE de la commune de l'adresse ou de la parcelle.","type":"string"},"parcelles":{"description":"Parcelles de l'adresse (ou la parcelle demandée) qui ont servi au rattachement.","type":"array","items":{"type":"string"}},"permis":{"type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro de l'autorisation (num_dau, num_pa ou num_pd de Sitadel).","type":"string"},"type":{"description":"PC permis de construire, DP déclaration préalable, PA permis d'aménager, PD permis de démolir.","anyOf":[{"type":"string","enum":["PC","DP","PA","PD"]},{"type":"null"}]},"source":{"description":"Table Sitadel : logements, locaux non résidentiels, démolitions, aménagements.","type":"string","enum":["logements","locaux","demolir","amenager"]},"etat":{"type":"object","properties":{"code":{"description":"Code d'état de Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"autorisee (2), annulee (4), commencee (5, chantier ouvert), achevee (6, achèvement déclaré).","anyOf":[{"type":"string","enum":["autorisee","annulee","commencee","achevee"]},{"type":"null"}]}},"required":["code","libelle"],"additionalProperties":false},"depose_en":{"description":"Année de dépôt de la demande.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"autorise_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"ouvert_le":{"description":"Date d'ouverture du chantier déclarée.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"acheve_le":{"description":"Date d'achèvement déclarée (DAACT).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"date_prevue":{"description":"Vrai si une date est postérieure à aujourd'hui : Sitadel publie aussi des dates prévisionnelles.","type":"boolean"},"nature":{"type":"object","properties":{"declaree":{"description":"Code de nature du projet déclarée (1 : nouvelle construction, 2 : travaux sur construction existante).","anyOf":[{"type":"string"},{"type":"null"}]},"completee":{"description":"Code de nature du projet complétée par le service instructeur, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"Libellé de la nature déclarée.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["declaree","completee","libelle"],"additionalProperties":false},"destination":{"description":"Code de destination principale, tel que publié par Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"description":"Logements créés (table logements seulement).","anyOf":[{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"individuels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"par_taille":{"type":"object","properties":{"p1":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p2":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p3":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p4":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p6_et_plus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["p1","p2","p3","p4","p5","p6_et_plus"],"additionalProperties":false},"sociaux":{"description":"Logements financés par un prêt locatif social.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"accession_sociale":{"description":"Logements en accession sociale hors prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ptz":{"description":"Logements financés par un prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demolis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","individuels","collectifs","par_taille","sociaux","accession_sociale","ptz","demolis"],"additionalProperties":false},{"type":"null"}]},"surfaces":{"type":"object","properties":{"habitation_creee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"habitation_demolie_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_crees_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_demolis_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["habitation_creee_m2","habitation_demolie_m2","locaux_crees_m2","locaux_demolis_m2"],"additionalProperties":false},"superficie_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"demandeur":{"description":"Demandeur personne morale, nommé avec son SIREN ; null pour une personne physique (jamais nommée).","anyOf":[{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren","siret","categorie_juridique","code_ape"],"additionalProperties":false},{"type":"null"}]},"terrain":{"type":"object","properties":{"commune":{"description":"Code INSEE de la commune dans Sitadel (commune entière pour Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lieu_dit":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"localite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","numero","voie","lieu_dit","code_postal","localite"],"additionalProperties":false},"parcelles":{"description":"Parcelles du terrain (14 caractères), préfixées par la commune de l'adresse.","type":"array","items":{"type":"string"}},"champs":{"description":"Tous les champs de l'autorisation, tels que publiés par Sitadel (demandeur personne physique retiré par la source).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"rattachement":{"description":"parcelle : une parcelle du terrain est celle de l'adresse ; adresse : même numéro et même voie.","type":"string","enum":["parcelle","adresse"]}},"required":["numero","type","source","etat","depose_en","autorise_le","ouvert_le","acheve_le","date_prevue","nature","destination","logements","surfaces","superficie_terrain_m2","demandeur","terrain","parcelles","champs","rattachement"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","id_parcelle","insee","parcelles","permis","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"permis_adresse"}},"/permis":{"get":{"operationId":"permis","summary":"Recherche d'autorisations d'urbanisme","description":"Les autorisations d'urbanisme Sitadel d'une commune, d'un demandeur personne morale (SIREN) ou d'un numéro, filtrées par période, type (PC, DP, PA, PD), nature du projet et nombre de logements créés, des plus récentes aux plus anciennes. Chaque autorisation porte les mêmes champs que permis_adresse, l'adresse du terrain, la clé BAN rapprochée (par une parcelle du terrain, sinon par le numéro et la voie) et tous les champs publiés. Pour Paris, Lyon et Marseille, Sitadel range les autorisations sous la commune entière : un code d'arrondissement est lu avec celui de sa commune. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"siren_demandeur","in":"query","required":false,"schema":{"description":"SIREN du demandeur personne morale (9 chiffres).","type":"string","pattern":"^\\d{9}$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Autorisées depuis cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"jusqu_a","in":"query","required":false,"schema":{"description":"Autorisées jusqu'à cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["PC","DP","PA","PD"]}},{"name":"nature","in":"query","required":false,"schema":{"description":"Nature du projet déclarée.","type":"string","enum":["nouvelle_construction","construction_existante"]}},{"name":"logements_min","in":"query","required":false,"schema":{"description":"Logements créés au moins (table logements).","type":"integer","minimum":1,"maximum":100000}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (200 au plus).","default":20,"type":"integer","minimum":1,"maximum":200}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro de l'autorisation (num_dau, num_pa ou num_pd de Sitadel).","type":"string"},"type":{"description":"PC permis de construire, DP déclaration préalable, PA permis d'aménager, PD permis de démolir.","anyOf":[{"type":"string","enum":["PC","DP","PA","PD"]},{"type":"null"}]},"source":{"description":"Table Sitadel : logements, locaux non résidentiels, démolitions, aménagements.","type":"string","enum":["logements","locaux","demolir","amenager"]},"etat":{"type":"object","properties":{"code":{"description":"Code d'état de Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"autorisee (2), annulee (4), commencee (5, chantier ouvert), achevee (6, achèvement déclaré).","anyOf":[{"type":"string","enum":["autorisee","annulee","commencee","achevee"]},{"type":"null"}]}},"required":["code","libelle"],"additionalProperties":false},"depose_en":{"description":"Année de dépôt de la demande.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"autorise_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"ouvert_le":{"description":"Date d'ouverture du chantier déclarée.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"acheve_le":{"description":"Date d'achèvement déclarée (DAACT).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"date_prevue":{"description":"Vrai si une date est postérieure à aujourd'hui : Sitadel publie aussi des dates prévisionnelles.","type":"boolean"},"nature":{"type":"object","properties":{"declaree":{"description":"Code de nature du projet déclarée (1 : nouvelle construction, 2 : travaux sur construction existante).","anyOf":[{"type":"string"},{"type":"null"}]},"completee":{"description":"Code de nature du projet complétée par le service instructeur, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"Libellé de la nature déclarée.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["declaree","completee","libelle"],"additionalProperties":false},"destination":{"description":"Code de destination principale, tel que publié par Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"description":"Logements créés (table logements seulement).","anyOf":[{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"individuels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"par_taille":{"type":"object","properties":{"p1":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p2":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p3":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p4":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p6_et_plus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["p1","p2","p3","p4","p5","p6_et_plus"],"additionalProperties":false},"sociaux":{"description":"Logements financés par un prêt locatif social.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"accession_sociale":{"description":"Logements en accession sociale hors prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ptz":{"description":"Logements financés par un prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demolis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","individuels","collectifs","par_taille","sociaux","accession_sociale","ptz","demolis"],"additionalProperties":false},{"type":"null"}]},"surfaces":{"type":"object","properties":{"habitation_creee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"habitation_demolie_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_crees_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_demolis_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["habitation_creee_m2","habitation_demolie_m2","locaux_crees_m2","locaux_demolis_m2"],"additionalProperties":false},"superficie_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"demandeur":{"description":"Demandeur personne morale, nommé avec son SIREN ; null pour une personne physique (jamais nommée).","anyOf":[{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren","siret","categorie_juridique","code_ape"],"additionalProperties":false},{"type":"null"}]},"terrain":{"type":"object","properties":{"commune":{"description":"Code INSEE de la commune dans Sitadel (commune entière pour Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lieu_dit":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"localite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","numero","voie","lieu_dit","code_postal","localite"],"additionalProperties":false},"parcelles":{"description":"Parcelles du terrain (14 caractères), préfixées par la commune de l'adresse.","type":"array","items":{"type":"string"}},"champs":{"description":"Tous les champs de l'autorisation, tels que publiés par Sitadel (demandeur personne physique retiré par la source).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cle_ban":{"description":"Clé BAN rapprochée du terrain, ou null si aucune adresse ne se rattache.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement_ban":{"description":"Comment la clé BAN a été rapprochée : par une parcelle du terrain, sinon par le numéro et la voie.","anyOf":[{"type":"string","enum":["parcelle","adresse"]},{"type":"null"}]}},"required":["numero","type","source","etat","depose_en","autorise_le","ouvert_le","acheve_le","date_prevue","nature","destination","logements","surfaces","superficie_terrain_m2","demandeur","terrain","parcelles","champs","cle_ban","rattachement_ban"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"permis"}},"/permis/{num_dau}":{"get":{"operationId":"permis_2","summary":"Recherche d'autorisations d'urbanisme","description":"Les autorisations d'urbanisme Sitadel d'une commune, d'un demandeur personne morale (SIREN) ou d'un numéro, filtrées par période, type (PC, DP, PA, PD), nature du projet et nombre de logements créés, des plus récentes aux plus anciennes. Chaque autorisation porte les mêmes champs que permis_adresse, l'adresse du terrain, la clé BAN rapprochée (par une parcelle du terrain, sinon par le numéro et la voie) et tous les champs publiés. Pour Paris, Lyon et Marseille, Sitadel range les autorisations sous la commune entière : un code d'arrondissement est lu avec celui de sa commune. Coût : 1 crédit par élément rendu.","parameters":[{"name":"num_dau","in":"path","required":true,"schema":{"description":"Numéro de l'autorisation dans Sitadel (ex. PC03523826X0001).","type":"string","pattern":"^[0-9A-Z]{8,20}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"numero":{"description":"Numéro de l'autorisation (num_dau, num_pa ou num_pd de Sitadel).","type":"string"},"type":{"description":"PC permis de construire, DP déclaration préalable, PA permis d'aménager, PD permis de démolir.","anyOf":[{"type":"string","enum":["PC","DP","PA","PD"]},{"type":"null"}]},"source":{"description":"Table Sitadel : logements, locaux non résidentiels, démolitions, aménagements.","type":"string","enum":["logements","locaux","demolir","amenager"]},"etat":{"type":"object","properties":{"code":{"description":"Code d'état de Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"autorisee (2), annulee (4), commencee (5, chantier ouvert), achevee (6, achèvement déclaré).","anyOf":[{"type":"string","enum":["autorisee","annulee","commencee","achevee"]},{"type":"null"}]}},"required":["code","libelle"],"additionalProperties":false},"depose_en":{"description":"Année de dépôt de la demande.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"autorise_le":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"ouvert_le":{"description":"Date d'ouverture du chantier déclarée.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"acheve_le":{"description":"Date d'achèvement déclarée (DAACT).","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"date_prevue":{"description":"Vrai si une date est postérieure à aujourd'hui : Sitadel publie aussi des dates prévisionnelles.","type":"boolean"},"nature":{"type":"object","properties":{"declaree":{"description":"Code de nature du projet déclarée (1 : nouvelle construction, 2 : travaux sur construction existante).","anyOf":[{"type":"string"},{"type":"null"}]},"completee":{"description":"Code de nature du projet complétée par le service instructeur, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"description":"Libellé de la nature déclarée.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["declaree","completee","libelle"],"additionalProperties":false},"destination":{"description":"Code de destination principale, tel que publié par Sitadel.","anyOf":[{"type":"string"},{"type":"null"}]},"logements":{"description":"Logements créés (table logements seulement).","anyOf":[{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"individuels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"par_taille":{"type":"object","properties":{"p1":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p2":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p3":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p4":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"p6_et_plus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["p1","p2","p3","p4","p5","p6_et_plus"],"additionalProperties":false},"sociaux":{"description":"Logements financés par un prêt locatif social.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"accession_sociale":{"description":"Logements en accession sociale hors prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ptz":{"description":"Logements financés par un prêt à taux zéro.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"demolis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["total","individuels","collectifs","par_taille","sociaux","accession_sociale","ptz","demolis"],"additionalProperties":false},{"type":"null"}]},"surfaces":{"type":"object","properties":{"habitation_creee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"habitation_demolie_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_crees_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"locaux_demolis_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["habitation_creee_m2","habitation_demolie_m2","locaux_crees_m2","locaux_demolis_m2"],"additionalProperties":false},"superficie_terrain_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"demandeur":{"description":"Demandeur personne morale, nommé avec son SIREN ; null pour une personne physique (jamais nommée).","anyOf":[{"type":"object","properties":{"denomination":{"type":"string"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"siret":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_ape":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren","siret","categorie_juridique","code_ape"],"additionalProperties":false},{"type":"null"}]},"terrain":{"type":"object","properties":{"commune":{"description":"Code INSEE de la commune dans Sitadel (commune entière pour Paris, Lyon et Marseille).","anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"voie":{"anyOf":[{"type":"string"},{"type":"null"}]},"lieu_dit":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"localite":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","numero","voie","lieu_dit","code_postal","localite"],"additionalProperties":false},"parcelles":{"description":"Parcelles du terrain (14 caractères), préfixées par la commune de l'adresse.","type":"array","items":{"type":"string"}},"champs":{"description":"Tous les champs de l'autorisation, tels que publiés par Sitadel (demandeur personne physique retiré par la source).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cle_ban":{"description":"Clé BAN rapprochée du terrain, ou null si aucune adresse ne se rattache.","anyOf":[{"type":"string"},{"type":"null"}]},"rattachement_ban":{"description":"Comment la clé BAN a été rapprochée : par une parcelle du terrain, sinon par le numéro et la voie.","anyOf":[{"type":"string","enum":["parcelle","adresse"]},{"type":"null"}]}},"required":["numero","type","source","etat","depose_en","autorise_le","ouvert_le","acheve_le","date_prevue","nature","destination","logements","surfaces","superficie_terrain_m2","demandeur","terrain","parcelles","champs","cle_ban","rattachement_ban"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"permis"}},"/urbanisme/demarche":{"post":{"operationId":"demarche_urbanisme","summary":"Démarche d'urbanisme d'un projet","description":"Démarche d'urbanisme d'un projet de travaux décrit, sans adresse : formalité (aucune, déclaration préalable, permis de construire, d'aménager ou de démolir), formulaire Cerfa, architecte obligatoire ou non, pièces du dossier avec l'opération qui les prépare, délai d'instruction et valeur du silence de la mairie, taxe d'aménagement estimée (aux taux votés par la commune quand son code INSEE est donné, sinon en fourchette du barème légal) et redevance d'archéologie préventive, chaque conclusion avec sa règle et sa source, et la date de la base de règles. Un fait manquant revient en question, jamais en supposition. La zone du PLU et les servitudes ne sont pas lues : les protections du terrain se déclarent en paramètres (urbanisme_adresse les donne pour une adresse). Information générale, ni conseil juridique ni décision de la mairie. Coût : 1 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type_travaux":{"description":"Nature des travaux. Une annexe séparée est une construction_nouvelle ; une extension ou une véranda accolée, des travaux_existant.","type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"emprise_au_sol_creee_m2":{"description":"Emprise au sol créée, en m² (un carport ou un garage compte même sans surface de plancher).","type":"number","minimum":0,"maximum":1000000},"surface_plancher_creee_m2":{"description":"Surface de plancher créée, ou surface close transformée pour un garage, en m².","type":"number","minimum":0,"maximum":1000000},"hauteur_m":{"description":"Hauteur de la construction ou du mur, en mètres.","type":"number","minimum":0,"maximum":1000000},"surface_plancher_existante_m2":{"description":"Surface de plancher du bâtiment existant, en m².","type":"number","minimum":0,"maximum":1000000},"emprise_au_sol_existante_m2":{"description":"Emprise au sol du bâtiment existant, en m².","type":"number","minimum":0,"maximum":1000000},"modifie_aspect_exterieur":{"type":"boolean"},"modifie_volume":{"type":"boolean"},"visible_espace_public":{"type":"boolean"},"bassin_m2":{"description":"Piscine : surface du bassin, en m².","type":"number","minimum":0,"maximum":1000000},"hauteur_couverture_m":{"description":"Piscine : hauteur de la couverture en mètres, 0 si non couverte.","type":"number","minimum":0,"maximum":1000000},"piscine_demontable":{"type":"boolean"},"duree_installation_mois":{"description":"Piscine démontable : mois d'installation par an.","type":"number","minimum":0,"maximum":1000000},"duree_installation_jours":{"description":"Piscine démontable en espace protégé : jours d'installation par an.","type":"number","minimum":0,"maximum":1000000},"deliberation_communale":{"description":"La commune a soumis clôtures ou ravalements à déclaration par délibération.","type":"boolean"},"secteur_cloture_plu":{"description":"Clôture dans un secteur délimité par le PLU.","type":"boolean"},"reparation_a_l_identique":{"type":"boolean"},"pac_visible":{"description":"Pompe à chaleur visible depuis l'espace public, la voie ou les autres bâtiments.","type":"boolean"},"date_debut_travaux":{"description":"Date de début des travaux, si elle est passée.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"ravalement_change_couleurs":{"type":"boolean"},"changement":{"type":"string","enum":["destination","sous_destination"]},"travaux_structure_ou_facade":{"type":"boolean"},"equipements_communs":{"description":"Division : création de voies, espaces ou équipements communs.","type":"boolean"},"date_depot":{"description":"Division : date de dépôt prévue (par défaut, aujourd'hui).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"permis_demolir_institue":{"type":"boolean"},"restauration_immobiliere":{"type":"boolean"},"inclut_demolition":{"type":"boolean"},"demandeur":{"description":"Qui dépose la demande (une SCI est une société).","type":"string","enum":["personne_physique","exploitation_agricole","societe"]},"maison_individuelle":{"type":"boolean"},"serre_production":{"type":"boolean"},"hauteur_pied_droit_m":{"description":"Serre : hauteur du pied-droit, en mètres.","type":"number","minimum":0,"maximum":1000000},"erp_ou_igh":{"description":"Établissement recevant du public ou immeuble de grande hauteur.","type":"boolean"},"participation_du_public":{"type":"boolean"},"evaluation_environnementale":{"type":"boolean"},"spr":{"description":"Terrain en site patrimonial remarquable.","type":"boolean"},"abords_monument_historique":{"description":"Terrain aux abords d'un monument historique.","type":"boolean"},"site_classe":{"type":"boolean"},"site_inscrit":{"type":"boolean"},"reserve_naturelle":{"type":"boolean"},"element_protege_plu":{"description":"Bâtiment ou élément protégé par le PLU.","type":"boolean"},"monument_historique":{"description":"Travaux sur un monument historique.","type":"boolean"},"coeur_parc_national":{"type":"boolean"},"document_urbanisme":{"description":"Document d'urbanisme de la commune.","type":"string","enum":["plu","carte_communale","rnu"]},"zone_urbaine":{"description":"Terrain en zone urbaine du PLU.","type":"boolean"},"surface_taxable_creee_m2":{"description":"Taxe d'aménagement : surface taxable créée, en m².","type":"number","minimum":0,"maximum":1000000},"surface_taxable_existante_m2":{"description":"Taxe d'aménagement : surface taxable existante, en m².","type":"number","minimum":0,"maximum":1000000},"places_stationnement_exterieures":{"description":"Taxe d'aménagement : places de stationnement extérieures créées.","type":"number","minimum":0,"maximum":1000000},"residence_principale":{"description":"Taxe d'aménagement : le projet porte sur la résidence principale ou ses annexes (abattement).","type":"boolean"},"affecte_sous_sol":{"description":"Redevance d'archéologie préventive : les travaux affectent le sous-sol.","type":"boolean"},"code_insee":{"description":"Commune du terrain, pour ses taux de taxe d'aménagement ; sans elle, l'estimation reste une fourchette du barème légal.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"taux_communal_pct":{"description":"Taux communal de la taxe d'aménagement, en %, s'il est connu (il prime sur celui de la commune).","type":"number","minimum":0,"maximum":20},"taux_departemental_pct":{"description":"Taux départemental de la taxe d'aménagement, en %, s'il est connu.","type":"number","minimum":0,"maximum":5}},"required":["type_travaux"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"statut":{"description":"faits_manquants : la formalité ou le permis ne peuvent pas être établis sans les réponses de questions.","type":"string","enum":["conclusion","faits_manquants"]},"regles_a_jour_le":{"description":"Date de vérification de la base de règles.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"projet":{"type":"object","properties":{"type_travaux":{"type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"libelle":{"type":"string"},"faits":{"type":"array","items":{"type":"string"}}},"required":["type_travaux","libelle","faits"],"additionalProperties":false},"contexte":{"type":"object","properties":{"document":{"anyOf":[{"type":"string","enum":["plu","carte_communale","rnu"]},{"type":"null"}]},"zone_urbaine":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"protections":{"type":"object","properties":{"spr":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"abords_monument_historique":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"site_classe":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"site_inscrit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reserve_naturelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"element_protege_plu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"monument_historique":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coeur_parc_national":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["spr","abords_monument_historique","site_classe","site_inscrit","reserve_naturelle","element_protege_plu","monument_historique","coeur_parc_national"],"additionalProperties":false},"detection":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"required":["document","zone_urbaine","protections","detection","details"],"additionalProperties":false},"faits_manquants":{"type":"array","items":{"type":"string"}},"questions":{"type":"array","items":{"type":"object","properties":{"fait":{"description":"Le paramètre qui reçoit la réponse.","type":"string"},"question":{"type":"string"},"options":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["libelle","description"],"additionalProperties":false}},{"type":"null"}]},"choix_multiple":{"type":"boolean"}},"required":["fait","question","options","choix_multiple"],"additionalProperties":false}},"formalite":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"libelle":{"type":"string"},"regle":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}}},"required":["code","libelle","regle","sources","a_confirmer","notes"],"additionalProperties":false},{"type":"null"}]},"formalites_associees":{"type":"array","items":{"type":"object","properties":{"regle":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}}},"required":["regle","sources","a_confirmer","notes"],"additionalProperties":false}},"cerfa":{"anyOf":[{"type":"object","properties":{"numero":{"type":"string"},"libelle":{"type":"string"},"notes":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}}},"required":["numero","libelle","notes","sources"],"additionalProperties":false},{"type":"null"}]},"architecte":{"anyOf":[{"type":"object","properties":{"obligatoire":{"description":"null : ne se prononce pas (faits manquants ou cas hors de la base de règles).","anyOf":[{"type":"boolean"},{"type":"null"}]},"manque":{"type":"array","items":{"type":"string"}},"regle":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}}},"required":["obligatoire","manque","regle","sources","a_confirmer","notes"],"additionalProperties":false},{"type":"null"}]},"pieces":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"condition":{"type":"string"},"exigee":{"type":"string","enum":["oui","selon_le_projet"]},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"operation":{"description":"L'opération de Pillr Data qui prépare la pièce ; null quand Pillr ne la prépare pas (photos, insertion).","anyOf":[{"type":"string","enum":["croquis_projet","coupes_facades","generer_document"]},{"type":"null"}]}},"required":["code","libelle","condition","exigee","sources","a_confirmer","operation"],"additionalProperties":false}},"delai":{"anyOf":[{"type":"object","properties":{"mois":{"anyOf":[{"type":"number"},{"type":"null"}]},"base_mois":{"anyOf":[{"type":"number"},{"type":"null"}]},"detail":{"type":"array","items":{"type":"string"}},"prolongations_possibles":{"type":"array","items":{"type":"string"}},"silence":{"description":"Ce que vaut le silence de la mairie au terme du délai.","type":"string","enum":["acceptation","refus"]},"refus_tacite_si":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"}},"required":["mois","base_mois","detail","prolongations_possibles","silence","refus_tacite_si","sources","a_confirmer"],"additionalProperties":false},{"type":"null"}]},"apres_decision":{"type":"array","items":{"type":"object","properties":{"etape":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"}},"required":["etape","sources","a_confirmer"],"additionalProperties":false}},"depot_en_ligne":{"type":"array","items":{"type":"object","properties":{"etape":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"}},"required":["etape","sources","a_confirmer"],"additionalProperties":false}},"taxe_amenagement":{"description":"Taxe d'aménagement estimée, avec la redevance d'archéologie préventive ; null tant que la formalité n'est pas établie.","anyOf":[{"type":"object","properties":{"statut":{"type":"string","enum":["estimee","non_due","hors_calcul","faits_manquants"]},"regle":{"type":"string"},"annee_valeurs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_jour_le":{"type":"string"},"formule":{"type":"string"},"valeurs":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"valeur":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["libelle","valeur","sources"],"additionalProperties":false}},"assiette":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"calcul":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"sources":{"type":"array","items":{"type":"string"}}},"required":["libelle","calcul","min","max","sources"],"additionalProperties":false}},"assiette_min":{"type":"number"},"assiette_max":{"type":"number"},"parts":{"type":"array","items":{"type":"object","properties":{"part":{"type":"string","enum":["communale","departementale","regionale"]},"libelle":{"type":"string"},"taux":{"type":"string"},"taux_min":{"type":"number"},"taux_max":{"type":"number"},"montant_min":{"type":"number"},"montant_max":{"type":"number"},"source":{"type":"string"},"a_confirmer":{"type":"boolean"}},"required":["part","libelle","taux","taux_min","taux_max","montant_min","montant_max","source","a_confirmer"],"additionalProperties":false}},"total_min":{"description":"Taxe estimée, borne basse, en euros.","type":"number"},"total_max":{"description":"Taxe estimée, borne haute, en euros.","type":"number"},"archeologie":{"anyOf":[{"type":"object","properties":{"statut":{"type":"string","enum":["due","si_sous_sol","non_due"]},"taux_pct":{"type":"number"},"montant_min":{"type":"number"},"montant_max":{"type":"number"},"regle":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["statut","taux_pct","montant_min","montant_max","regle","sources"],"additionalProperties":false},{"type":"null"}]},"faits_manquants":{"type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"},"declaration":{"type":"array","items":{"type":"object","properties":{"etape":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["etape","sources"],"additionalProperties":false}},"sources":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["statut","regle","annee_valeurs","a_jour_le","formule","valeurs","assiette","assiette_min","assiette_max","parts","total_min","total_max","archeologie","faits_manquants","notes","a_confirmer","declaration","sources","limites","qualite"],"additionalProperties":false},{"type":"null"}]},"a_confirmer":{"description":"Vrai si une conclusion est à faire confirmer par le service urbanisme de la mairie.","type":"boolean"},"notes_a_confirmer":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["statut","regles_a_jour_le","projet","contexte","faits_manquants","questions","formalite","formalites_associees","cerfa","architecte","pieces","delai","apres_decision","depot_en_ligne","taxe_amenagement","a_confirmer","notes_a_confirmer","limites","sources","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"demarche_urbanisme"}},"/urbanisme/croquis":{"post":{"operationId":"croquis_projet","summary":"Plan de situation, plan de masse et implantation","description":"Le plan de situation et le plan de masse coté d'un projet (extension, annexe, abri, garage, carport, piscine, terrasse, véranda) sur la parcelle cadastrale et les bâtiments de la BD TOPO de l'IGN, lus en direct, pour une adresse, un identifiant de parcelle ou un point. Les projets se placent contre un côté du bâtiment principal, à une distance d'une limite, par un contour donné, ou automatiquement : trois emplacements notés sur l'ensoleillement au 21 juin et au 21 mars, les distances, le relief et les limites. La réponse donne les emprises et les mesures, les alertes (débord, chevauchement), la formalité établie depuis les projets dessinés, la zone du PLU et les servitudes lues en un point de la parcelle, les règles du règlement déjà lu (reculs, emprise, hauteur) et les vues du plan de situation. Le plan de masse n'est pas dessiné quand un architecte est obligatoire ou que des faits manquent : la réponse le dit, avec les questions. Croquis indicatif, à vérifier avant dépôt. Coût : 20 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200},"code_postal":{"description":"Code postal, pour départager une adresse homonyme (avec adresse).","type":"string","pattern":"^\\d{5}$"},"idu":{"description":"Identifiant de la parcelle cadastrale à 14 caractères (ex. 69382000AB0050).","type":"string","minLength":14,"maxLength":24},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"recul_limites_m":{"description":"Implantation automatique : recul aux limites, en mètres (sinon celui du règlement lu, ou le défaut).","type":"number","minimum":0,"maximum":50},"distance_min_batiments_m":{"type":"number","minimum":0,"maximum":50},"distance_max_maison_m":{"type":"number","minimum":1,"maximum":200},"choix_implantation":{"description":"Implantation automatique : l'emplacement retenu, A, B ou C.","type":"string","enum":["A","B","C"]},"formalite":{"description":"Formalité annoncée : jamais crue, comparée à celle que le croquis établit.","type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"demandeur":{"type":"string","enum":["personne_physique","exploitation_agricole","societe"]},"surface_plancher_creee_m2":{"type":"number","minimum":0,"maximum":1000000},"surface_plancher_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"emprise_au_sol_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"annotations":{"description":"Éléments du plan : arbres, accès, stationnement, réseaux, points de vue des photos.","maxItems":60,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["arbre","acces","stationnement","reseau","vue_photo"]},"position_wgs84":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]},"etat":{"type":"string","enum":["conserve","abattu","plante"]},"diametre_m":{"type":"number","minimum":0,"maximum":100},"azimut_deg":{"description":"Orientation, 0 au nord, 90 à l'est.","type":"number","minimum":-360,"maximum":720},"nature":{"type":"string","enum":["vehicule","pieton"]},"largeur_m":{"type":"number","minimum":0,"maximum":100},"longueur_m":{"type":"number","minimum":0,"maximum":100},"reseau":{"type":"string","enum":["eau","electricite","assainissement"]},"trace_wgs84":{"maxItems":50,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"numero":{"type":"integer","minimum":0,"maximum":1000},"piece":{"type":"string","enum":["proche","lointain"]}},"required":["type"],"additionalProperties":false}},"projets":{"description":"Les projets à placer sur la parcelle.","minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"nature":{"description":"Nature du projet.","type":"string","enum":["extension","annexe","abri","garage","carport","piscine","terrasse","veranda","autre"]},"libelle":{"type":"string","maxLength":60},"largeur_m":{"description":"Largeur, le long du côté de référence, en mètres.","type":"number","minimum":0.5,"maximum":200},"profondeur_m":{"description":"Profondeur, en mètres.","type":"number","minimum":0.5,"maximum":200},"hauteur_m":{"description":"Hauteur totale en mètres ; 0 pour un ouvrage au niveau du sol.","type":"number","minimum":0,"maximum":50},"ancrage":{"description":"accole_batiment : contre un côté du bâtiment principal ; depuis_limite : à une distance d'une limite ; auto : trois emplacements proposés ; libre : contour donné.","type":"string","enum":["accole_batiment","depuis_limite","auto","libre"]},"cote":{"description":"Côté visé (bâtiment ou limite) : nord, sud, est, ouest.","type":"string","enum":["nord","sud","est","ouest"]},"distance_limite_m":{"description":"Distance à la limite, en mètres (ancrage depuis_limite).","type":"number","minimum":0,"maximum":500},"decalage_m":{"description":"Décalage le long du côté, en mètres.","type":"number","minimum":-500,"maximum":500},"calage":{"type":"string","enum":["centre","extremite_ouest_sud","extremite_est_nord"]},"hauteur_couverture_m":{"description":"Piscine : hauteur de la couverture en mètres, 0 si non couverte.","type":"number","minimum":0,"maximum":10},"demontable":{"description":"Piscine démontable (hors sol).","type":"boolean"},"contour_wgs84":{"description":"Ancrage libre : les quatre coins [lon, lat], tels que le croquis les rend.","minItems":4,"maxItems":5,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}}},"required":["nature"],"additionalProperties":false}}},"required":["projets"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"object","properties":{"libelle":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"precision":{"type":"string"}},"required":["libelle","lat","lon","precision"],"additionalProperties":false},{"type":"null"}]},"origine":{"description":"Origine du plan local (mètres, x vers l'est, y vers le nord).","type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},"parcelle":{"type":"object","properties":{"idu":{"type":"string"},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"contenance_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_calculee_m2":{"type":"number"},"contour":{"description":"Anneaux de la parcelle, en mètres du plan local.","type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"cotes":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["idu","section","numero","commune","code_insee","contenance_m2","surface_calculee_m2","contour","cotes"],"additionalProperties":false},"batiments":{"description":"Bâtiments de la BD TOPO sur la parcelle : contour, surface, hauteur, étages, usage, principal.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"projets":{"description":"Projets placés : contour (plan local) et contour_wgs84, surface, distances aux limites et aux bâtiments, alertes.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"projets_non_places":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["libelle","raison"],"additionalProperties":false}},"mesures":{"type":"object","properties":{"surface_parcelle_cadastre_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_parcelle_calculee_m2":{"type":"number"},"emprise_existante_m2":{"type":"number"},"emprise_projets_m2":{"type":"number"},"emprise_totale_m2":{"type":"number"},"part_emprise_totale_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"base_part":{"type":"string","enum":["contenance_cadastrale","surface_calculee"]},"distance_min_limite_projets_m":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["surface_parcelle_cadastre_m2","surface_parcelle_calculee_m2","emprise_existante_m2","emprise_projets_m2","emprise_totale_m2","part_emprise_totale_pct","base_part","distance_min_limite_projets_m"],"additionalProperties":false},"plan_de_masse":{"type":"object","properties":{"echelle":{"type":"number"},"echelle_usuelle":{"type":"boolean"},"cadre_mm":{"type":"object","properties":{"largeur":{"type":"number"},"hauteur":{"type":"number"}},"required":["largeur","hauteur"],"additionalProperties":false},"centre":{"type":"array","items":{"type":"number"}},"refus":{"description":"Plan de masse non dessiné : architecte obligatoire, ou faits manquants pour l'établir.","anyOf":[{"type":"object","properties":{"raison":{"type":"string"},"a_confirmer":{"type":"boolean"},"questions":{"type":"array","items":{"description":"Un fait à demander, structuré : le paramètre qui reçoit la réponse, la question et ses choix éventuels.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["raison","a_confirmer","questions"],"additionalProperties":false},{"type":"null"}]},"formalite_derivee":{"description":"Formalité établie par la base de règles depuis les projets dessinés ; null : non établie.","anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]}},"required":["echelle","echelle_usuelle","cadre_mm","centre","refus","formalite_derivee"],"additionalProperties":false},"plan_de_situation":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"urbanisme":{"description":"Zone du PLU et servitudes lues en un point intérieur de la parcelle.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"urbanisme_indisponible":{"anyOf":[{"type":"string"},{"type":"null"}]},"implantation":{"description":"Implantation automatique : trois emplacements notés (soleil, distances, relief, limites).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"annotations":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"contraintes_plu":{"description":"Règles du règlement déjà lu (reculs, emprise, hauteur), avec leur source.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"constats":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"mention":{"type":"string"},"genere_le":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["adresse","origine","parcelle","batiments","projets","projets_non_places","mesures","plan_de_masse","plan_de_situation","urbanisme","urbanisme_indisponible","implantation","annotations","contraintes_plu","constats","sources","limites","mention","genere_le","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"croquis_projet"}},"/urbanisme/coupes":{"post":{"operationId":"coupes_facades","summary":"Coupes, façades et toitures","description":"Le plan en coupe et le plan des façades et des toitures des projets d'un croquis, à l'échelle : terrain naturel lu en direct sur le RGE ALTI de l'IGN (altitudes NGF), hauteur maximale au-dessus du terrain, distances aux limites, surfaces de déblai et de remblai, toitures (plate, un ou deux pans), ouvertures et matériaux, silhouettes des bâtiments existants accolés. Les projets se décrivent comme pour croquis_projet, avec leurs niveaux, leur toiture et leurs ouvertures. Un fait manquant revient en question et le projet n'est pas dessiné ; si l'altimétrie de l'IGN ne répond pas, rien n'est dessiné ni débité. Coût : 20 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200},"code_postal":{"description":"Code postal, pour départager une adresse homonyme (avec adresse).","type":"string","pattern":"^\\d{5}$"},"idu":{"description":"Identifiant de la parcelle cadastrale à 14 caractères (ex. 69382000AB0050).","type":"string","minLength":14,"maxLength":24},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"recul_limites_m":{"description":"Implantation automatique : recul aux limites, en mètres (sinon celui du règlement lu, ou le défaut).","type":"number","minimum":0,"maximum":50},"distance_min_batiments_m":{"type":"number","minimum":0,"maximum":50},"distance_max_maison_m":{"type":"number","minimum":1,"maximum":200},"choix_implantation":{"description":"Implantation automatique : l'emplacement retenu, A, B ou C.","type":"string","enum":["A","B","C"]},"formalite":{"description":"Formalité annoncée : jamais crue, comparée à celle que le croquis établit.","type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"demandeur":{"type":"string","enum":["personne_physique","exploitation_agricole","societe"]},"surface_plancher_creee_m2":{"type":"number","minimum":0,"maximum":1000000},"surface_plancher_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"emprise_au_sol_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"annotations":{"description":"Éléments du plan : arbres, accès, stationnement, réseaux, points de vue des photos.","maxItems":60,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["arbre","acces","stationnement","reseau","vue_photo"]},"position_wgs84":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]},"etat":{"type":"string","enum":["conserve","abattu","plante"]},"diametre_m":{"type":"number","minimum":0,"maximum":100},"azimut_deg":{"description":"Orientation, 0 au nord, 90 à l'est.","type":"number","minimum":-360,"maximum":720},"nature":{"type":"string","enum":["vehicule","pieton"]},"largeur_m":{"type":"number","minimum":0,"maximum":100},"longueur_m":{"type":"number","minimum":0,"maximum":100},"reseau":{"type":"string","enum":["eau","electricite","assainissement"]},"trace_wgs84":{"maxItems":50,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"numero":{"type":"integer","minimum":0,"maximum":1000},"piece":{"type":"string","enum":["proche","lointain"]}},"required":["type"],"additionalProperties":false}},"projets":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"nature":{"description":"Nature du projet.","type":"string","enum":["extension","annexe","abri","garage","carport","piscine","terrasse","veranda","autre"]},"libelle":{"type":"string","maxLength":60},"largeur_m":{"description":"Largeur, le long du côté de référence, en mètres.","type":"number","minimum":0.5,"maximum":200},"profondeur_m":{"description":"Profondeur, en mètres.","type":"number","minimum":0.5,"maximum":200},"hauteur_m":{"description":"Hauteur totale en mètres ; 0 pour un ouvrage au niveau du sol.","type":"number","minimum":0,"maximum":50},"ancrage":{"description":"accole_batiment : contre un côté du bâtiment principal ; depuis_limite : à une distance d'une limite ; auto : trois emplacements proposés ; libre : contour donné.","type":"string","enum":["accole_batiment","depuis_limite","auto","libre"]},"cote":{"description":"Côté visé (bâtiment ou limite) : nord, sud, est, ouest.","type":"string","enum":["nord","sud","est","ouest"]},"distance_limite_m":{"description":"Distance à la limite, en mètres (ancrage depuis_limite).","type":"number","minimum":0,"maximum":500},"decalage_m":{"description":"Décalage le long du côté, en mètres.","type":"number","minimum":-500,"maximum":500},"calage":{"type":"string","enum":["centre","extremite_ouest_sud","extremite_est_nord"]},"hauteur_couverture_m":{"description":"Piscine : hauteur de la couverture en mètres, 0 si non couverte.","type":"number","minimum":0,"maximum":10},"demontable":{"description":"Piscine démontable (hors sol).","type":"boolean"},"contour_wgs84":{"description":"Ancrage libre : les quatre coins [lon, lat], tels que le croquis les rend.","minItems":4,"maxItems":5,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"sens_coupe":{"type":"string","enum":["perpendiculaire_au_cote","parallele_au_cote","nord_sud","est_ouest"]},"facades":{"type":"string","enum":["principale_et_laterale","toutes"]},"profondeur_bassin_m":{"type":"number","minimum":0,"maximum":10},"niveau_margelle_m":{"type":"number","minimum":-10,"maximum":10},"largeur_margelle_m":{"type":"number","minimum":0,"maximum":5},"largeur_plage_m":{"type":"number","minimum":0,"maximum":50},"niveau_terrasse_m":{"type":"number","minimum":-10,"maximum":10},"niveau_plancher_m":{"type":"number","minimum":-10,"maximum":10},"toiture":{"type":"string","enum":["plate","un_pan","deux_pans"]},"hauteur_murs_m":{"type":"number","minimum":0,"maximum":50},"hauteur_faitage_m":{"type":"number","minimum":0,"maximum":50},"pente_toiture_deg":{"type":"number","minimum":0,"maximum":90},"sens_faitage":{"type":"string","enum":["parallele_au_cote","perpendiculaire_au_cote"]},"pan_haut":{"type":"string","enum":["cote_reference","cote_oppose"]},"materiaux":{"type":"object","properties":{"murs":{"type":"string","maxLength":60},"toiture":{"type":"string","maxLength":60},"menuiseries":{"type":"string","maxLength":60}},"additionalProperties":false},"ouvertures":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["porte","fenetre","baie","porte_garage"]},"facade":{"type":"string","enum":["nord","sud","est","ouest"]},"largeur_m":{"type":"number","minimum":0,"maximum":20},"hauteur_m":{"type":"number","minimum":0,"maximum":10},"position_m":{"description":"Position depuis l'extrémité gauche de la façade vue de l'extérieur, en mètres.","type":"number","minimum":0,"maximum":500},"allege_m":{"description":"Hauteur d'allège depuis le plancher, en mètres.","type":"number","minimum":0,"maximum":10},"libelle":{"type":"string","maxLength":40},"materiau":{"type":"string","maxLength":60},"couleur":{"type":"string","maxLength":40}},"required":["type","facade"],"additionalProperties":false}}},"required":["nature"],"additionalProperties":false}},"pieces":{"description":"Pièces à dessiner : coupe, facades, ou les deux (défaut).","minItems":1,"maxItems":2,"type":"array","items":{"type":"string","enum":["coupe","facades"]}}},"required":["projets"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"object","properties":{"libelle":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"precision":{"type":"string"}},"required":["libelle","lat","lon","precision"],"additionalProperties":false},{"type":"null"}]},"origine":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},"parcelle":{"type":"object","properties":{"idu":{"type":"string"},"section":{"anyOf":[{"type":"string"},{"type":"null"}]},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"contour":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}},"required":["idu","section","numero","commune","code_insee","contour"],"additionalProperties":false},"batiments":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"projets":{"description":"Projets et leurs altitudes NGF, toitures, ouvertures et mesures.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"coupes":{"description":"Plans en coupe : terrain naturel (RGE ALTI), projet, hauteur maximale au-dessus du terrain, distances aux limites, déblai et remblai.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"facades":{"description":"Façades et toitures, ouvertures et matériaux.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"feuilles":{"description":"Feuilles à l'échelle, prêtes à imprimer.","type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"refus":{"anyOf":[{"type":"object","properties":{"raison":{"type":"string"},"a_confirmer":{"type":"boolean"}},"required":["raison","a_confirmer"],"additionalProperties":false},{"type":"null"}]},"formalite_derivee":{"anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]},"faits_manquants":{"type":"array","items":{"type":"string"}},"questions":{"type":"array","items":{"description":"Un fait à demander, structuré : le paramètre qui reçoit la réponse, la question et ses choix éventuels.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"constats":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"string"}},"limites":{"type":"array","items":{"type":"string"}},"mention":{"type":"string"},"genere_le":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["adresse","origine","parcelle","batiments","projets","coupes","facades","feuilles","refus","formalite_derivee","faits_manquants","questions","constats","a_confirmer","sources","limites","mention","genere_le","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"coupes_facades"}},"/urbanisme/dossiers":{"post":{"operationId":"preparer_dossier","summary":"Dossier de dépôt","description":"Le dossier de dépôt en mairie d'un projet, établi dans l'appel : le croquis de la parcelle (comme croquis_projet), les coupes et façades quand les projets en portent les faits (comme coupes_facades), puis la formalité et le Cerfa retenus, les pièces dans l'ordre du bordereau avec leur code, leur rôle et leur état (prête, à produire par une opération, à fournir par le demandeur), ce qui manque, les alertes du croquis et les données du Cerfa à passer à l'opération cerfa. La réponse est une tâche (202) dont le résultat se lit ensuite. L'archive ZIP du dossier (pièces graphiques à l'échelle, Cerfa, bordereau) se fabrique dans le Hub : par l'API, chaque pièce se produit par son opération. Coût : 200 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adresse":{"description":"Adresse en texte, numéro compris, géocodée par la Base Adresse Nationale.","type":"string","minLength":5,"maxLength":200},"code_postal":{"description":"Code postal, pour départager une adresse homonyme (avec adresse).","type":"string","pattern":"^\\d{5}$"},"idu":{"description":"Identifiant de la parcelle cadastrale à 14 caractères (ex. 69382000AB0050).","type":"string","minLength":14,"maxLength":24},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"recul_limites_m":{"description":"Implantation automatique : recul aux limites, en mètres (sinon celui du règlement lu, ou le défaut).","type":"number","minimum":0,"maximum":50},"distance_min_batiments_m":{"type":"number","minimum":0,"maximum":50},"distance_max_maison_m":{"type":"number","minimum":1,"maximum":200},"choix_implantation":{"description":"Implantation automatique : l'emplacement retenu, A, B ou C.","type":"string","enum":["A","B","C"]},"formalite":{"description":"Formalité annoncée : jamais crue, comparée à celle que le croquis établit.","type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"demandeur":{"type":"string","enum":["personne_physique","exploitation_agricole","societe"]},"surface_plancher_creee_m2":{"type":"number","minimum":0,"maximum":1000000},"surface_plancher_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"emprise_au_sol_totale_apres_travaux_m2":{"type":"number","minimum":0,"maximum":1000000},"annotations":{"description":"Éléments du plan : arbres, accès, stationnement, réseaux, points de vue des photos.","maxItems":60,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["arbre","acces","stationnement","reseau","vue_photo"]},"position_wgs84":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]},"etat":{"type":"string","enum":["conserve","abattu","plante"]},"diametre_m":{"type":"number","minimum":0,"maximum":100},"azimut_deg":{"description":"Orientation, 0 au nord, 90 à l'est.","type":"number","minimum":-360,"maximum":720},"nature":{"type":"string","enum":["vehicule","pieton"]},"largeur_m":{"type":"number","minimum":0,"maximum":100},"longueur_m":{"type":"number","minimum":0,"maximum":100},"reseau":{"type":"string","enum":["eau","electricite","assainissement"]},"trace_wgs84":{"maxItems":50,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"numero":{"type":"integer","minimum":0,"maximum":1000},"piece":{"type":"string","enum":["proche","lointain"]}},"required":["type"],"additionalProperties":false}},"projets":{"description":"Les projets, décrits comme pour croquis_projet et, pour les coupes, comme pour coupes_facades.","minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"nature":{"description":"Nature du projet.","type":"string","enum":["extension","annexe","abri","garage","carport","piscine","terrasse","veranda","autre"]},"libelle":{"type":"string","maxLength":60},"largeur_m":{"description":"Largeur, le long du côté de référence, en mètres.","type":"number","minimum":0.5,"maximum":200},"profondeur_m":{"description":"Profondeur, en mètres.","type":"number","minimum":0.5,"maximum":200},"hauteur_m":{"description":"Hauteur totale en mètres ; 0 pour un ouvrage au niveau du sol.","type":"number","minimum":0,"maximum":50},"ancrage":{"description":"accole_batiment : contre un côté du bâtiment principal ; depuis_limite : à une distance d'une limite ; auto : trois emplacements proposés ; libre : contour donné.","type":"string","enum":["accole_batiment","depuis_limite","auto","libre"]},"cote":{"description":"Côté visé (bâtiment ou limite) : nord, sud, est, ouest.","type":"string","enum":["nord","sud","est","ouest"]},"distance_limite_m":{"description":"Distance à la limite, en mètres (ancrage depuis_limite).","type":"number","minimum":0,"maximum":500},"decalage_m":{"description":"Décalage le long du côté, en mètres.","type":"number","minimum":-500,"maximum":500},"calage":{"type":"string","enum":["centre","extremite_ouest_sud","extremite_est_nord"]},"hauteur_couverture_m":{"description":"Piscine : hauteur de la couverture en mètres, 0 si non couverte.","type":"number","minimum":0,"maximum":10},"demontable":{"description":"Piscine démontable (hors sol).","type":"boolean"},"contour_wgs84":{"description":"Ancrage libre : les quatre coins [lon, lat], tels que le croquis les rend.","minItems":4,"maxItems":5,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"sens_coupe":{"type":"string","enum":["perpendiculaire_au_cote","parallele_au_cote","nord_sud","est_ouest"]},"facades":{"type":"string","enum":["principale_et_laterale","toutes"]},"profondeur_bassin_m":{"type":"number","minimum":0,"maximum":10},"niveau_margelle_m":{"type":"number","minimum":-10,"maximum":10},"largeur_margelle_m":{"type":"number","minimum":0,"maximum":5},"largeur_plage_m":{"type":"number","minimum":0,"maximum":50},"niveau_terrasse_m":{"type":"number","minimum":-10,"maximum":10},"niveau_plancher_m":{"type":"number","minimum":-10,"maximum":10},"toiture":{"type":"string","enum":["plate","un_pan","deux_pans"]},"hauteur_murs_m":{"type":"number","minimum":0,"maximum":50},"hauteur_faitage_m":{"type":"number","minimum":0,"maximum":50},"pente_toiture_deg":{"type":"number","minimum":0,"maximum":90},"sens_faitage":{"type":"string","enum":["parallele_au_cote","perpendiculaire_au_cote"]},"pan_haut":{"type":"string","enum":["cote_reference","cote_oppose"]},"materiaux":{"type":"object","properties":{"murs":{"type":"string","maxLength":60},"toiture":{"type":"string","maxLength":60},"menuiseries":{"type":"string","maxLength":60}},"additionalProperties":false},"ouvertures":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["porte","fenetre","baie","porte_garage"]},"facade":{"type":"string","enum":["nord","sud","est","ouest"]},"largeur_m":{"type":"number","minimum":0,"maximum":20},"hauteur_m":{"type":"number","minimum":0,"maximum":10},"position_m":{"description":"Position depuis l'extrémité gauche de la façade vue de l'extérieur, en mètres.","type":"number","minimum":0,"maximum":500},"allege_m":{"description":"Hauteur d'allège depuis le plancher, en mètres.","type":"number","minimum":0,"maximum":10},"libelle":{"type":"string","maxLength":40},"materiau":{"type":"string","maxLength":60},"couleur":{"type":"string","maxLength":40}},"required":["type","facade"],"additionalProperties":false}}},"required":["nature"],"additionalProperties":false}},"maison_individuelle":{"description":"Pour un permis de construire : le projet porte-t-il sur une maison individuelle ou ses annexes ? Le formulaire et les codes des pièces en dépendent.","type":"boolean"},"coupes":{"description":"Faux : ne pas dessiner les coupes et façades dans l'appel. Par défaut, elles le sont dès qu'un projet porte ses faits de toiture, de hauteur des murs ou de niveau.","type":"boolean"},"attendre":{"description":"Secondes d'attente de la fin de la tâche avant de répondre (60 au plus).","default":0,"type":"integer","minimum":0,"maximum":60},"webhook":{"description":"URL https appelée à la fin de la tâche, signée (Pillr-Signature).","type":"string","maxLength":500}},"required":["projets"],"additionalProperties":false}}}},"responses":{"200":{"description":"Tâche terminée (resultat) ou échouée (erreur, crédits rendus).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"statut":{"description":"pret : la liste des pièces est établie ; sinon le message dit ce qui manque.","type":"string","enum":["pret","formalite_non_etablie","aucune_formalite","question_maison_individuelle"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite":{"anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]},"libelle_formalite":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite_source":{"anyOf":[{"type":"string","enum":["croquis","demarche"]},{"type":"null"}]},"cerfa":{"description":"Le formulaire retenu : il se pré-remplit par l'opération cerfa avec donnees_cerfa.","anyOf":[{"type":"object","properties":{"numero":{"type":"string"},"libelle":{"type":"string"},"fichier":{"type":"string"},"url_officielle":{"type":"string"}},"required":["numero","libelle","fichier","url_officielle"],"additionalProperties":false},{"type":"null"}]},"donnees_cerfa":{"description":"Les faits du dossier pour le Cerfa (terrain, références cadastrales, nature des travaux, emprise) : l'entrée donnees de l'opération cerfa.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cases_a_completer":{"type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["rubrique","libelle","raison"],"additionalProperties":false}},"terrain":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"parcelle":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"idu":{"type":"string"}},"required":["adresse","parcelle","commune","idu"],"additionalProperties":false},"pieces":{"type":"array","items":{"type":"object","properties":{"code":{"description":"Code du bordereau (DPC1, PCMI2...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"role":{"description":"Ce que la pièce doit montrer, d'après le bordereau du Cerfa.","type":"string"},"etat":{"description":"prete : produite par Pillr depuis le croquis ou les coupes ; a_produire : par l'opération dite ; a_fournir : par le demandeur (photos, insertion).","type":"string","enum":["prete","a_completer","a_produire","a_fournir"]},"exigee":{"type":"string","enum":["oui","selon_le_projet"]},"a_confirmer":{"type":"boolean"},"complement":{"description":"Joint hors bordereau (vue aérienne).","type":"boolean"},"consigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"operation":{"description":"L'opération qui produit ou produirait la pièce.","anyOf":[{"type":"string","enum":["croquis_projet","coupes_facades","generer_document"]},{"type":"null"}]},"fichier":{"description":"Nom du fichier de la pièce dans le dossier du Hub.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","role","etat","exigee","a_confirmer","complement","consigne","operation","fichier"],"additionalProperties":false}},"manques":{"description":"Ce qui manque au dossier, dit en clair.","type":"array","items":{"type":"string"}},"alertes":{"description":"Points à corriger dans le croquis avant tout dépôt.","type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"maison_individuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coupes":{"description":"Les coupes et façades dessinées dans l'appel, ou pourquoi elles ne l'ont pas été.","type":"object","properties":{"dessinees":{"type":"boolean"},"refus":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["dessinees","refus"],"additionalProperties":false},"archive":{"description":"Nom de l'archive du dossier dans le Hub (statut pret).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"genere_le":{"type":"string"}},"required":["statut","message","formalite","libelle_formalite","formalite_source","cerfa","donnees_cerfa","cases_a_completer","terrain","pieces","manques","alertes","notes","maison_individuelle","coupes","archive","limites","genere_le"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"202":{"description":"Tâche acceptée, pas encore terminée : lire le résultat à l'adresse de l'en-tête Location (ou attendre avec le paramètre attendre).","headers":{"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"statut":{"description":"pret : la liste des pièces est établie ; sinon le message dit ce qui manque.","type":"string","enum":["pret","formalite_non_etablie","aucune_formalite","question_maison_individuelle"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite":{"anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]},"libelle_formalite":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite_source":{"anyOf":[{"type":"string","enum":["croquis","demarche"]},{"type":"null"}]},"cerfa":{"description":"Le formulaire retenu : il se pré-remplit par l'opération cerfa avec donnees_cerfa.","anyOf":[{"type":"object","properties":{"numero":{"type":"string"},"libelle":{"type":"string"},"fichier":{"type":"string"},"url_officielle":{"type":"string"}},"required":["numero","libelle","fichier","url_officielle"],"additionalProperties":false},{"type":"null"}]},"donnees_cerfa":{"description":"Les faits du dossier pour le Cerfa (terrain, références cadastrales, nature des travaux, emprise) : l'entrée donnees de l'opération cerfa.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cases_a_completer":{"type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["rubrique","libelle","raison"],"additionalProperties":false}},"terrain":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"parcelle":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"idu":{"type":"string"}},"required":["adresse","parcelle","commune","idu"],"additionalProperties":false},"pieces":{"type":"array","items":{"type":"object","properties":{"code":{"description":"Code du bordereau (DPC1, PCMI2...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"role":{"description":"Ce que la pièce doit montrer, d'après le bordereau du Cerfa.","type":"string"},"etat":{"description":"prete : produite par Pillr depuis le croquis ou les coupes ; a_produire : par l'opération dite ; a_fournir : par le demandeur (photos, insertion).","type":"string","enum":["prete","a_completer","a_produire","a_fournir"]},"exigee":{"type":"string","enum":["oui","selon_le_projet"]},"a_confirmer":{"type":"boolean"},"complement":{"description":"Joint hors bordereau (vue aérienne).","type":"boolean"},"consigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"operation":{"description":"L'opération qui produit ou produirait la pièce.","anyOf":[{"type":"string","enum":["croquis_projet","coupes_facades","generer_document"]},{"type":"null"}]},"fichier":{"description":"Nom du fichier de la pièce dans le dossier du Hub.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","role","etat","exigee","a_confirmer","complement","consigne","operation","fichier"],"additionalProperties":false}},"manques":{"description":"Ce qui manque au dossier, dit en clair.","type":"array","items":{"type":"string"}},"alertes":{"description":"Points à corriger dans le croquis avant tout dépôt.","type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"maison_individuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coupes":{"description":"Les coupes et façades dessinées dans l'appel, ou pourquoi elles ne l'ont pas été.","type":"object","properties":{"dessinees":{"type":"boolean"},"refus":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["dessinees","refus"],"additionalProperties":false},"archive":{"description":"Nom de l'archive du dossier dans le Hub (statut pret).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"genere_le":{"type":"string"}},"required":["statut","message","formalite","libelle_formalite","formalite_source","cerfa","donnees_cerfa","cases_a_completer","terrain","pieces","manques","alertes","notes","maison_individuelle","coupes","archive","limites","genere_le"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute ; Trop de tâches en cours","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":200,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"preparer_dossier","x-pillr-tache":{"resultat":"/urbanisme/dossiers/{tache}","outil_resultat":"resultat_preparer_dossier"}}},"/urbanisme/dossiers/{tache}":{"get":{"operationId":"resultat_preparer_dossier","summary":"Résultat : dossier de dépôt","description":"État et résultat d'une tâche lancée par POST /urbanisme/dossiers (outil preparer_dossier) : statut, sortie complète quand elle est terminée, erreur quand elle a échoué (ses crédits sont alors rendus). Le paramètre attendre patiente jusqu'à 60 s. Coût : 0 crédit par appel réussi.","parameters":[{"name":"tache","in":"path","required":true,"schema":{"description":"Identifiant de la tâche rendu au lancement (tache.id).","type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},{"name":"attendre","in":"query","required":false,"schema":{"description":"Secondes d'attente de la fin de la tâche avant de répondre (60 au plus).","default":0,"type":"integer","minimum":0,"maximum":60}}],"responses":{"200":{"description":"Tâche terminée (resultat) ou échouée (erreur, crédits rendus).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"statut":{"description":"pret : la liste des pièces est établie ; sinon le message dit ce qui manque.","type":"string","enum":["pret","formalite_non_etablie","aucune_formalite","question_maison_individuelle"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite":{"anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]},"libelle_formalite":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite_source":{"anyOf":[{"type":"string","enum":["croquis","demarche"]},{"type":"null"}]},"cerfa":{"description":"Le formulaire retenu : il se pré-remplit par l'opération cerfa avec donnees_cerfa.","anyOf":[{"type":"object","properties":{"numero":{"type":"string"},"libelle":{"type":"string"},"fichier":{"type":"string"},"url_officielle":{"type":"string"}},"required":["numero","libelle","fichier","url_officielle"],"additionalProperties":false},{"type":"null"}]},"donnees_cerfa":{"description":"Les faits du dossier pour le Cerfa (terrain, références cadastrales, nature des travaux, emprise) : l'entrée donnees de l'opération cerfa.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cases_a_completer":{"type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["rubrique","libelle","raison"],"additionalProperties":false}},"terrain":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"parcelle":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"idu":{"type":"string"}},"required":["adresse","parcelle","commune","idu"],"additionalProperties":false},"pieces":{"type":"array","items":{"type":"object","properties":{"code":{"description":"Code du bordereau (DPC1, PCMI2...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"role":{"description":"Ce que la pièce doit montrer, d'après le bordereau du Cerfa.","type":"string"},"etat":{"description":"prete : produite par Pillr depuis le croquis ou les coupes ; a_produire : par l'opération dite ; a_fournir : par le demandeur (photos, insertion).","type":"string","enum":["prete","a_completer","a_produire","a_fournir"]},"exigee":{"type":"string","enum":["oui","selon_le_projet"]},"a_confirmer":{"type":"boolean"},"complement":{"description":"Joint hors bordereau (vue aérienne).","type":"boolean"},"consigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"operation":{"description":"L'opération qui produit ou produirait la pièce.","anyOf":[{"type":"string","enum":["croquis_projet","coupes_facades","generer_document"]},{"type":"null"}]},"fichier":{"description":"Nom du fichier de la pièce dans le dossier du Hub.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","role","etat","exigee","a_confirmer","complement","consigne","operation","fichier"],"additionalProperties":false}},"manques":{"description":"Ce qui manque au dossier, dit en clair.","type":"array","items":{"type":"string"}},"alertes":{"description":"Points à corriger dans le croquis avant tout dépôt.","type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"maison_individuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coupes":{"description":"Les coupes et façades dessinées dans l'appel, ou pourquoi elles ne l'ont pas été.","type":"object","properties":{"dessinees":{"type":"boolean"},"refus":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["dessinees","refus"],"additionalProperties":false},"archive":{"description":"Nom de l'archive du dossier dans le Hub (statut pret).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"genere_le":{"type":"string"}},"required":["statut","message","formalite","libelle_formalite","formalite_source","cerfa","donnees_cerfa","cases_a_completer","terrain","pieces","manques","alertes","notes","maison_individuelle","coupes","archive","limites","genere_le"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"202":{"description":"Tâche acceptée, pas encore terminée : lire le résultat à l'adresse de l'en-tête Location (ou attendre avec le paramètre attendre).","headers":{"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"tache":{"description":"La tâche asynchrone.","type":"object","properties":{"id":{"description":"Identifiant de la tâche, à passer à l'opération de résultat.","type":"string"},"operation":{"type":"string"},"statut":{"description":"en_attente, en_cours, terminee (resultat rempli) ou echouee (erreur remplie, crédits rendus).","type":"string","enum":["en_attente","en_cours","terminee","echouee"]},"cree_le":{"type":"string"},"termine_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"expire_le":{"description":"Date au-delà de laquelle le résultat n'est plus conservé.","type":"string"},"resultat_url":{"description":"Chemin de lecture du résultat (GET).","type":"string"}},"required":["id","operation","statut","cree_le","termine_le","expire_le","resultat_url"],"additionalProperties":false},"resultat":{"description":"La sortie de l'opération, quand la tâche est terminée ; null sinon.","anyOf":[{"type":"object","properties":{"statut":{"description":"pret : la liste des pièces est établie ; sinon le message dit ce qui manque.","type":"string","enum":["pret","formalite_non_etablie","aucune_formalite","question_maison_individuelle"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite":{"anyOf":[{"type":"string","enum":["aucune","declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},{"type":"null"}]},"libelle_formalite":{"anyOf":[{"type":"string"},{"type":"null"}]},"formalite_source":{"anyOf":[{"type":"string","enum":["croquis","demarche"]},{"type":"null"}]},"cerfa":{"description":"Le formulaire retenu : il se pré-remplit par l'opération cerfa avec donnees_cerfa.","anyOf":[{"type":"object","properties":{"numero":{"type":"string"},"libelle":{"type":"string"},"fichier":{"type":"string"},"url_officielle":{"type":"string"}},"required":["numero","libelle","fichier","url_officielle"],"additionalProperties":false},{"type":"null"}]},"donnees_cerfa":{"description":"Les faits du dossier pour le Cerfa (terrain, références cadastrales, nature des travaux, emprise) : l'entrée donnees de l'opération cerfa.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cases_a_completer":{"type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["rubrique","libelle","raison"],"additionalProperties":false}},"terrain":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"parcelle":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"idu":{"type":"string"}},"required":["adresse","parcelle","commune","idu"],"additionalProperties":false},"pieces":{"type":"array","items":{"type":"object","properties":{"code":{"description":"Code du bordereau (DPC1, PCMI2...).","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"role":{"description":"Ce que la pièce doit montrer, d'après le bordereau du Cerfa.","type":"string"},"etat":{"description":"prete : produite par Pillr depuis le croquis ou les coupes ; a_produire : par l'opération dite ; a_fournir : par le demandeur (photos, insertion).","type":"string","enum":["prete","a_completer","a_produire","a_fournir"]},"exigee":{"type":"string","enum":["oui","selon_le_projet"]},"a_confirmer":{"type":"boolean"},"complement":{"description":"Joint hors bordereau (vue aérienne).","type":"boolean"},"consigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"operation":{"description":"L'opération qui produit ou produirait la pièce.","anyOf":[{"type":"string","enum":["croquis_projet","coupes_facades","generer_document"]},{"type":"null"}]},"fichier":{"description":"Nom du fichier de la pièce dans le dossier du Hub.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","libelle","role","etat","exigee","a_confirmer","complement","consigne","operation","fichier"],"additionalProperties":false}},"manques":{"description":"Ce qui manque au dossier, dit en clair.","type":"array","items":{"type":"string"}},"alertes":{"description":"Points à corriger dans le croquis avant tout dépôt.","type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}},"maison_individuelle":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coupes":{"description":"Les coupes et façades dessinées dans l'appel, ou pourquoi elles ne l'ont pas été.","type":"object","properties":{"dessinees":{"type":"boolean"},"refus":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["dessinees","refus"],"additionalProperties":false},"archive":{"description":"Nom de l'archive du dossier dans le Hub (statut pret).","anyOf":[{"type":"string"},{"type":"null"}]},"limites":{"type":"array","items":{"type":"string"}},"genere_le":{"type":"string"}},"required":["statut","message","formalite","libelle_formalite","formalite_source","cerfa","donnees_cerfa","cases_a_completer","terrain","pieces","manques","alertes","notes","maison_individuelle","coupes","archive","limites","genere_le"],"additionalProperties":false},{"type":"null"}]},"erreur":{"anyOf":[{"description":"Pourquoi la tâche a échoué ; null sinon.","type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["tache","resultat","erreur","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Tâche introuvable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resultat_preparer_dossier","x-pillr-resultat-de":"preparer_dossier"}},"/urbanisme/cerfa/{numero}":{"post":{"operationId":"cerfa","summary":"Cerfa d'urbanisme pré-rempli","description":"Le PDF officiel d'un Cerfa d'urbanisme (lu sur formulaires.service-public.gouv.fr, dans la version vérifiée par Pillr), rempli des seules cases connues du dossier : adresse et superficie du terrain, références cadastrales, nature des travaux, annexes, emprise au sol créée, description du projet. L'identité, les coordonnées, l'engagement et la signature du demandeur ne sont jamais remplis : la réponse les liste avec les cases restées vides. En REST, la réponse est le PDF ; en MCP, la liste des cases remplies et vides, et le PDF en ressource. Si le formulaire officiel a changé depuis sa vérification, rien n'est rempli ni débité et les valeurs sont rendues pour une saisie à la main. Coût : 5 crédits par appel réussi.","parameters":[{"name":"numero","in":"path","required":true,"schema":{"description":"Numéro du formulaire : 16702*03, 16703*03, 13406*17, 13409*17, 13405*15, 16297*05 (l'astérisque s'écrit aussi avec un tiret).","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"description":"Les faits du dossier, par clé de la table de correspondance.","type":"object","properties":{"terrain.numero":{"type":"string","maxLength":1000},"terrain.voie":{"type":"string","maxLength":1000},"terrain.lieudit":{"type":"string","maxLength":1000},"terrain.localite":{"type":"string","maxLength":1000},"terrain.code_postal":{"type":"string","maxLength":1000},"parcelle.prefixe":{"type":"string","maxLength":1000},"parcelle.section":{"type":"string","maxLength":1000},"parcelle.numero":{"type":"string","maxLength":1000},"travaux.description":{"type":"string","maxLength":1000},"annexe.autres_precision":{"type":"string","maxLength":1000},"parcelle.superficie_m2":{"type":"number","minimum":0,"maximum":100000000},"terrain.superficie_totale_m2":{"type":"number","minimum":0,"maximum":100000000},"emprise.creee_m2":{"type":"number","minimum":0,"maximum":100000000},"travaux.nouvelle":{"type":"boolean"},"travaux.existante":{"type":"boolean"},"travaux.extension":{"type":"boolean"},"annexe.piscine":{"type":"boolean"},"annexe.garage":{"type":"boolean"},"annexe.veranda":{"type":"boolean"},"annexe.abri":{"type":"boolean"},"annexe.autres":{"type":"boolean"}},"additionalProperties":false}},"required":["donnees"],"additionalProperties":false}}}},"responses":{"200":{"description":"Le fichier, débité (sauf réponse identique déjà servie dans les 24 h). Les métadonnées sont dans x-pillr-metadonnees (structuredContent côté MCP).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/pdf":{"schema":{"type":"string","contentEncoding":"binary"}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"cerfa","x-pillr-metadonnees":{"type":"object","properties":{"numero":{"type":"string","enum":["16702*03","16703*03","13406*17","13409*17","13405*15","16297*05"]},"libelle":{"type":"string"},"version_formulaire":{"description":"Fichier officiel vérifié par Pillr ; une autre version est refusée plutôt que remplie de travers.","type":"string"},"verifie_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"cases_remplies":{"type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"valeur":{"description":"Texte écrit, ou « coché » pour une case.","type":"string"}},"required":["rubrique","libelle","valeur"],"additionalProperties":false}},"cases_vides":{"description":"Cases que le dossier ne sait pas remplir, puis les rubriques jamais remplies (identité, coordonnées, engagement, signature).","type":"array","items":{"type":"object","properties":{"rubrique":{"type":"string"},"libelle":{"type":"string"},"raison":{"type":"string"}},"required":["rubrique","libelle","raison"],"additionalProperties":false}},"fichier":{"description":"Nom du fichier PDF servi.","type":"string"}},"required":["numero","libelle","version_formulaire","verifie_le","cases_remplies","cases_vides","fichier"],"additionalProperties":false}}},"/urbanisme/echeances":{"post":{"operationId":"echeances_depot","summary":"Échéances d'un dossier après dépôt","description":"Échéances datées d'un dossier d'urbanisme à partir de sa date de dépôt : courrier de pièces manquantes, fin du délai d'instruction (de droit commun et majoré), date à partir de laquelle le silence vaut accord ou refus, affichage et recours des tiers, retrait par la mairie, prorogation et fin de validité, recours contre un refus, puis DAACT, déclaration et paiement de la taxe d'aménagement à l'achèvement. Chaque échéance porte sa règle et sa source. La démarche se donne telle que demarche_urbanisme l'a établie, ou se calcule dans l'appel à partir des faits du projet. Les dates se comptent de quantième à quantième ; le récépissé et les courriers de la mairie font foi. Coût : 1 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date_depot":{"description":"Date de dépôt du dossier complet en mairie (AAAA-MM-JJ, celle du récépissé).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"demarche":{"description":"La démarche déjà établie par demarche_urbanisme. Donner demarche ou projet, pas les deux.","type":"object","properties":{"type_travaux":{"description":"Nature des travaux (projet.type_travaux de demarche_urbanisme).","type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"formalite":{"description":"Formalité déposée (formalite.code de demarche_urbanisme).","type":"string","enum":["declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"delai_base_mois":{"description":"Délai d'instruction de droit commun, en mois (delai.base_mois).","type":"integer","minimum":1,"maximum":12},"delai_mois":{"description":"Délai avec les majorations connues, en mois (delai.mois) ; par défaut, le droit commun.","type":"integer","minimum":1,"maximum":12},"silence":{"description":"Ce que vaut le silence de la mairie au terme du délai (delai.silence).","type":"string","enum":["acceptation","refus"]},"avis_abf":{"description":"Vrai si un avis défavorable de l'architecte des Bâtiments de France peut faire valoir le silence comme refus (delai.refus_tacite_si non vide).","type":"boolean"},"delai_a_confirmer":{"description":"Délai à faire confirmer par la mairie (delai.a_confirmer).","type":"boolean"},"taxe_min_eur":{"description":"Taxe d'aménagement estimée, borne basse, en euros.","type":"number","minimum":0,"maximum":1000000000},"taxe_max_eur":{"description":"Taxe d'aménagement estimée, borne haute, en euros.","type":"number","minimum":0,"maximum":1000000000}},"required":["type_travaux","formalite","delai_base_mois","silence"],"additionalProperties":false},"projet":{"description":"Les faits du projet, comme pour demarche_urbanisme : la démarche est établie dans l'appel.","type":"object","properties":{"type_travaux":{"description":"Nature des travaux. Une annexe séparée est une construction_nouvelle ; une extension ou une véranda accolée, des travaux_existant.","type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"emprise_au_sol_creee_m2":{"description":"Emprise au sol créée, en m² (un carport ou un garage compte même sans surface de plancher).","type":"number","minimum":0,"maximum":1000000},"surface_plancher_creee_m2":{"description":"Surface de plancher créée, ou surface close transformée pour un garage, en m².","type":"number","minimum":0,"maximum":1000000},"hauteur_m":{"description":"Hauteur de la construction ou du mur, en mètres.","type":"number","minimum":0,"maximum":1000000},"surface_plancher_existante_m2":{"description":"Surface de plancher du bâtiment existant, en m².","type":"number","minimum":0,"maximum":1000000},"emprise_au_sol_existante_m2":{"description":"Emprise au sol du bâtiment existant, en m².","type":"number","minimum":0,"maximum":1000000},"modifie_aspect_exterieur":{"type":"boolean"},"modifie_volume":{"type":"boolean"},"visible_espace_public":{"type":"boolean"},"bassin_m2":{"description":"Piscine : surface du bassin, en m².","type":"number","minimum":0,"maximum":1000000},"hauteur_couverture_m":{"description":"Piscine : hauteur de la couverture en mètres, 0 si non couverte.","type":"number","minimum":0,"maximum":1000000},"piscine_demontable":{"type":"boolean"},"duree_installation_mois":{"description":"Piscine démontable : mois d'installation par an.","type":"number","minimum":0,"maximum":1000000},"duree_installation_jours":{"description":"Piscine démontable en espace protégé : jours d'installation par an.","type":"number","minimum":0,"maximum":1000000},"deliberation_communale":{"description":"La commune a soumis clôtures ou ravalements à déclaration par délibération.","type":"boolean"},"secteur_cloture_plu":{"description":"Clôture dans un secteur délimité par le PLU.","type":"boolean"},"reparation_a_l_identique":{"type":"boolean"},"pac_visible":{"description":"Pompe à chaleur visible depuis l'espace public, la voie ou les autres bâtiments.","type":"boolean"},"date_debut_travaux":{"description":"Date de début des travaux, si elle est passée.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"ravalement_change_couleurs":{"type":"boolean"},"changement":{"type":"string","enum":["destination","sous_destination"]},"travaux_structure_ou_facade":{"type":"boolean"},"equipements_communs":{"description":"Division : création de voies, espaces ou équipements communs.","type":"boolean"},"date_depot":{"description":"Division : date de dépôt prévue (par défaut, aujourd'hui).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"permis_demolir_institue":{"type":"boolean"},"restauration_immobiliere":{"type":"boolean"},"inclut_demolition":{"type":"boolean"},"demandeur":{"description":"Qui dépose la demande (une SCI est une société).","type":"string","enum":["personne_physique","exploitation_agricole","societe"]},"maison_individuelle":{"type":"boolean"},"serre_production":{"type":"boolean"},"hauteur_pied_droit_m":{"description":"Serre : hauteur du pied-droit, en mètres.","type":"number","minimum":0,"maximum":1000000},"erp_ou_igh":{"description":"Établissement recevant du public ou immeuble de grande hauteur.","type":"boolean"},"participation_du_public":{"type":"boolean"},"evaluation_environnementale":{"type":"boolean"},"spr":{"description":"Terrain en site patrimonial remarquable.","type":"boolean"},"abords_monument_historique":{"description":"Terrain aux abords d'un monument historique.","type":"boolean"},"site_classe":{"type":"boolean"},"site_inscrit":{"type":"boolean"},"reserve_naturelle":{"type":"boolean"},"element_protege_plu":{"description":"Bâtiment ou élément protégé par le PLU.","type":"boolean"},"monument_historique":{"description":"Travaux sur un monument historique.","type":"boolean"},"coeur_parc_national":{"type":"boolean"},"document_urbanisme":{"description":"Document d'urbanisme de la commune.","type":"string","enum":["plu","carte_communale","rnu"]},"zone_urbaine":{"description":"Terrain en zone urbaine du PLU.","type":"boolean"},"surface_taxable_creee_m2":{"description":"Taxe d'aménagement : surface taxable créée, en m².","type":"number","minimum":0,"maximum":1000000},"surface_taxable_existante_m2":{"description":"Taxe d'aménagement : surface taxable existante, en m².","type":"number","minimum":0,"maximum":1000000},"places_stationnement_exterieures":{"description":"Taxe d'aménagement : places de stationnement extérieures créées.","type":"number","minimum":0,"maximum":1000000},"residence_principale":{"description":"Taxe d'aménagement : le projet porte sur la résidence principale ou ses annexes (abattement).","type":"boolean"},"affecte_sous_sol":{"description":"Redevance d'archéologie préventive : les travaux affectent le sous-sol.","type":"boolean"},"code_insee":{"description":"Commune du terrain, pour ses taux de taxe d'aménagement ; sans elle, l'estimation reste une fourchette du barème légal.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"taux_communal_pct":{"description":"Taux communal de la taxe d'aménagement, en %, s'il est connu (il prime sur celui de la commune).","type":"number","minimum":0,"maximum":20},"taux_departemental_pct":{"description":"Taux départemental de la taxe d'aménagement, en %, s'il est connu.","type":"number","minimum":0,"maximum":5}},"required":["type_travaux"],"additionalProperties":false}},"required":["date_depot"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"statut":{"description":"sans_suivi : la démarche du projet ne se suit pas après dépôt (aucune autorisation, ou faits manquants).","type":"string","enum":["echeances","sans_suivi"]},"motif":{"description":"Pourquoi il n'y a rien à suivre (statut sans_suivi).","anyOf":[{"type":"string"},{"type":"null"}]},"faits_manquants":{"description":"Projet : les faits sans lesquels la formalité ne peut pas être établie (voir demarche_urbanisme).","type":"array","items":{"type":"string"}},"date_depot":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"demarche":{"description":"La démarche suivie, telle qu'elle a servi au calcul.","anyOf":[{"type":"object","properties":{"type_travaux":{"type":"string","enum":["construction_nouvelle","travaux_existant","transformation_garage","piscine","cloture","mur","aspect_exterieur","pompe_a_chaleur","ravalement","changement_destination","division","demolition"]},"formalite":{"type":"string","enum":["declaration_prealable","permis_de_construire","permis_d_amenager","permis_de_demolir"]},"libelle":{"description":"Libellé court : formalité et nature des travaux.","type":"string"},"delai_base_mois":{"type":"number"},"delai_mois":{"type":"number"},"silence":{"type":"string","enum":["acceptation","refus"]},"avis_abf":{"type":"boolean"},"delai_a_confirmer":{"type":"boolean"},"taxe_estimee":{"anyOf":[{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]}},"required":["type_travaux","formalite","libelle","delai_base_mois","delai_mois","silence","avis_abf","delai_a_confirmer","taxe_estimee"],"additionalProperties":false},{"type":"null"}]},"echeances":{"description":"Les échéances datées par date croissante, puis celles relatives à l'achèvement.","type":"array","items":{"type":"object","properties":{"cle":{"description":"Identifiant stable de l'échéance.","type":"string","enum":["pieces","fin_instruction","fin_instruction_majoree","silence","affichage","recours_tiers","retrait","prorogation","validite","recours_refus","daact","declaration_taxe","paiement_taxe"]},"date":{"description":"AAAA-MM-JJ ; null pour une échéance relative à l'achèvement des travaux.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"quand":{"description":"Pour une échéance sans date : quand elle tombe, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"regle":{"description":"La règle qui fixe l'échéance, en clair.","type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"}},"required":["cle","date","quand","libelle","regle","sources","a_confirmer"],"additionalProperties":false}},"prochaine":{"description":"La prochaine échéance datée à partir d'aujourd'hui (heure de Paris), ou null.","anyOf":[{"type":"object","properties":{"cle":{"description":"Identifiant stable de l'échéance.","type":"string","enum":["pieces","fin_instruction","fin_instruction_majoree","silence","affichage","recours_tiers","retrait","prorogation","validite","recours_refus","daact","declaration_taxe","paiement_taxe"]},"date":{"description":"AAAA-MM-JJ ; null pour une échéance relative à l'achèvement des travaux.","anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"quand":{"description":"Pour une échéance sans date : quand elle tombe, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"libelle":{"type":"string"},"regle":{"description":"La règle qui fixe l'échéance, en clair.","type":"string"},"sources":{"type":"array","items":{"type":"string"}},"a_confirmer":{"type":"boolean"}},"required":["cle","date","quand","libelle","regle","sources","a_confirmer"],"additionalProperties":false},{"type":"null"}]},"regles_a_jour_le":{"description":"Date de vérification des règles du suivi.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["statut","motif","faits_manquants","date_depot","demarche","echeances","prochaine","regles_a_jour_le","limites","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"echeances_depot"}},"/urbanisme/rendus":{"post":{"operationId":"rendu_aerien","summary":"Rendu réaliste d'un projet sur la vue aérienne","description":"Une image réaliste du projet posé à l'échelle sur la photo aérienne de l'IGN : la photo est lue en direct, le dessin exact du projet y est composé, puis un modèle d'image rend le seul projet réaliste, sans rien ajouter ni déplacer. L'image est une illustration indicative : elle ne remplace pas le document graphique d'insertion du dossier. En REST, la réponse est l'image PNG ; en MCP, ses métadonnées, et l'image en ressource. Les rendus sont bornés par heure et par organisation, comme dans le Hub. Coût : 100 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emprise":{"description":"Emprise de la vue [ouest, sud, est, nord] en degrés, 1500 m de côté au plus (vues.aerienne du plan de situation de croquis_projet).","type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85},{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-85,"maximum":85}]},"projets":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"object","properties":{"nature":{"type":"string","enum":["extension","annexe","abri","garage","carport","piscine","terrasse","veranda","autre"]},"contour":{"description":"Les quatre coins [lon, lat] du projet (contour_wgs84 de croquis_projet).","minItems":4,"maxItems":4,"type":"array","items":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}]}},"largeur_m":{"type":"number","minimum":0.5,"maximum":200},"profondeur_m":{"type":"number","minimum":0.5,"maximum":200},"hauteur_m":{"type":"number","minimum":0,"maximum":50}},"required":["nature","contour","largeur_m","profondeur_m"],"additionalProperties":false}}},"required":["emprise","projets"],"additionalProperties":false}}}},"responses":{"200":{"description":"Le fichier, débité (sauf réponse identique déjà servie dans les 24 h). Les métadonnées sont dans x-pillr-metadonnees (structuredContent côté MCP).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"image/png":{"schema":{"type":"string","contentEncoding":"binary"}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":100,"x-pillr-unite":"appel","x-pillr-portee":"urbanisme","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"rendu_aerien","x-pillr-metadonnees":{"type":"object","properties":{"mime":{"type":"string","const":"image/png"},"modele":{"description":"Modèle d'image qui a produit le rendu.","type":"string"},"genere_le":{"type":"string"},"avertissement":{"description":"Ce que vaut l'image : une illustration indicative.","type":"string"},"fichier":{"type":"string"}},"required":["mime","modele","genere_le","avertissement","fichier"],"additionalProperties":false}}},"/communes/{insee}/agences":{"get":{"operationId":"agences_commune","summary":"Agences actives et parts de marché d'une commune","description":"Les agences actives dans une commune, mois par mois, d'après les annonces relevées par Pillr : enseigne, SIREN, mandats pris, mandats exclusifs, durée médiane en ligne, part des annonces baissées et part de marché de chaque agence, avec la part du leader et l'indice de concentration (HHI) de la commune. Par défaut le dernier mois calculé ; « mois » pour un mois donné, « depuis » pour tous les mois à partir d'un mois (24 mois au plus). Rien n'est masqué : un mois à peu de mandats est servi avec le drapeau peu_d_observations. Aucune agence relevée : 404 ressource_absente, rien n'est débité. Coût : 3 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"mois","in":"query","required":false,"schema":{"description":"Un mois donné (AAAA-MM).","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Tous les mois à partir de celui-ci (AAAA-MM), 24 au plus.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"par_mois":{"description":"Un bloc par mois, le plus récent d'abord.","type":"array","items":{"type":"object","properties":{"mois":{"description":"Mois (AAAA-MM).","type":"string"},"agences":{"description":"Les agences actives dans le mois, de la plus présente à la moins présente.","type":"array","items":{"type":"object","properties":{"enseigne":{"description":"Enseigne de l'agence telle que les annonces la publient.","type":"string"},"siren":{"description":"SIREN de l'agence, rapproché par Sirene ; null s'il n'a pas été trouvé.","anyOf":[{"type":"string"},{"type":"null"}]},"mandats":{"description":"Annonces entrées dans le mois (mandats pris).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusifs":{"description":"Dont mandats exclusifs.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"part_exclusifs_pct":{"description":"Part des mandats exclusifs, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"part_marche_pct":{"description":"Part des mandats de la commune dans le mois, en % (mandats de l'agence sur tous les mandats de la commune).","anyOf":[{"type":"number"},{"type":"null"}]},"duree_mediane_j":{"description":"Durée médiane en ligne des annonces de l'agence, en jours.","anyOf":[{"type":"number"},{"type":"null"}]},"part_baisses_pct":{"description":"Part des annonces de l'agence dont le prix a baissé, en %.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["enseigne","siren","mandats","exclusifs","part_exclusifs_pct","part_marche_pct","duree_mediane_j","part_baisses_pct"],"additionalProperties":false}},"n_agences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mandats_total":{"description":"Mandats pris dans la commune ce mois (signaux communaux) ; à défaut, la somme des mandats des agences.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"part_leader_pct":{"description":"Part de marché de l'agence la plus présente, en % (signaux communaux).","anyOf":[{"type":"number"},{"type":"null"}]},"hhi":{"description":"Indice de concentration de Herfindahl-Hirschman des mandats, de 0 (marché éclaté) à 1 (une seule agence).","anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["mois","agences","n_agences","mandats_total","part_leader_pct","hhi","qualite"],"additionalProperties":false}},"donnees_du":{"description":"Date du calcul des agrégats (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","par_mois","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"entreprises","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"agences_commune"}},"/agences":{"get":{"operationId":"agences","summary":"Agences et réseaux immobiliers","description":"La fiche d'une agence immobilière par son SIREN, ou les agences d'un lieu (commune, code postal, département), d'une enseigne ou d'un réseau. Pour chacune : dénomination, enseigne, sigle, catégorie juridique, APE, établissements Sirene (SIRET, adresse, effectif, création, siège), agences des portails rattachées au SIREN avec leur enseigne ou réseau, domaines web, coordonnées professionnelles avec leur origine, mandats du dernier mois par commune, annonces en ligne, et les 20 derniers avis BODACC. Seules les adresses électroniques publiées par l'agence sont servies, jamais une adresse construite par motif. Aucune agence : 404 ressource_absente, rien n'est débité. Coût : 2 crédits par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Agences dont un établissement est dans cette commune.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"cp","in":"query","required":false,"schema":{"description":"Agences dont un établissement a ce code postal.","type":"string","pattern":"^\\d{5}$"}},{"name":"departement","in":"query","required":false,"schema":{"description":"Agences dont un établissement est dans ce département.","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},{"name":"enseigne","in":"query","required":false,"schema":{"description":"Enseigne ou dénomination contenant ce texte (sans tenir compte de la casse).","type":"string","minLength":2,"maxLength":80}},{"name":"reseau","in":"query","required":false,"schema":{"description":"Réseau ou franchise contenant ce texte (Century 21, Laforêt...), lu sur les portails.","type":"string","minLength":2,"maxLength":80}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"description":"Les agences trouvées, par SIREN croissant.","type":"array","items":{"type":"object","properties":{"siren":{"type":"string"},"denomination":{"description":"Dénomination de l'unité légale (ou nom d'usage d'un entrepreneur individuel immatriculé).","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"description":"Catégorie juridique (code Insee).","anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"description":"Activité principale (code APE).","anyOf":[{"type":"string"},{"type":"null"}]},"entrepreneur_individuel":{"description":"Vrai pour un entrepreneur individuel immatriculé, servi comme professionnel.","anyOf":[{"type":"boolean"},{"type":"null"}]},"diffusion_partielle":{"description":"Vrai si l'unité est en diffusion partielle Sirene : son adresse n'est pas servie.","type":"boolean"},"etablissements":{"type":"array","items":{"type":"object","properties":{"siret":{"type":"string"},"siege":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"adresse":{"description":"Numéro et voie de l'établissement ; null pour une unité en diffusion partielle.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"tranche_effectif":{"description":"Tranche d'effectif salarié (code Sirene).","anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"description":"Faux pour un établissement fermé (état administratif F).","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["siret","siege","adresse","code_postal","commune","insee","tranche_effectif","cree_le","actif"],"additionalProperties":false}},"reseaux":{"description":"Agences des portails rattachées au SIREN, avec leur enseigne ou réseau.","type":"array","items":{"type":"object","properties":{"enseigne":{"description":"Enseigne ou réseau de franchise (Century 21, Laforêt...) ; null si l'agence n'en a pas.","anyOf":[{"type":"string"},{"type":"null"}]},"nom_commercial":{"description":"Nom commercial publié sur le portail.","anyOf":[{"type":"string"},{"type":"null"}]},"identifiant_portail":{"type":"string"},"commune_principale":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement_principal":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_annonces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rapprochement":{"description":"Comment l'agence du portail a été rapprochée de son SIREN.","anyOf":[{"type":"string"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enseigne","nom_commercial","identifiant_portail","commune_principale","departement_principal","nb_annonces","rapprochement","calcule_le"],"additionalProperties":false}},"domaines":{"type":"array","items":{"type":"object","properties":{"domaine":{"type":"string"},"genre":{"description":"propre : site de l'agence ; heberge : site hébergé en marque blanche par un éditeur (le sous-domaine est l'agence).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"observations":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["domaine","genre","source","observations"],"additionalProperties":false}},"contacts_pro":{"description":"Coordonnées professionnelles de l'agence ; null si aucune n'est connue.","anyOf":[{"description":"Coordonnées professionnelles, avec leur origine.","type":"object","properties":{"telephone":{"description":"Téléphone professionnel publié ; null s'il est inconnu ou retiré.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique PUBLIÉE par le professionnel (annonce, site, mentions légales) ; jamais une adresse construite par motif.","anyOf":[{"type":"string"},{"type":"null"}]},"site":{"description":"Site web (domaine) ; null s'il est inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"origine":{"description":"Où l'adresse électronique a été lue : published (publiée par le professionnel), desc_extracted (lue dans une annonce), site_legal (mentions légales du site).","anyOf":[{"type":"string"},{"type":"null"}]},"retirees":{"description":"Vrai si le professionnel s'est opposé à nos envois : aucune coordonnée n'est alors servie.","type":"boolean"}},"required":["telephone","email","site","origine","retirees"],"additionalProperties":false},{"type":"null"}]},"activite":{"type":"object","properties":{"mois":{"description":"Dernier mois calculé des mandats (AAAA-MM).","anyOf":[{"type":"string"},{"type":"null"}]},"mandats":{"description":"Mandats pris dans le mois, toutes communes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exclusifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"communes":{"description":"Les mandats du mois, par commune et par enseigne.","type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"enseigne":{"type":"string"},"mandats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusifs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_baisses_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["insee","enseigne","mandats","exclusifs","duree_mediane_j","part_baisses_pct"],"additionalProperties":false}},"annonces_actives":{"description":"Annonces en ligne rattachées au SIREN.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"annonces_par_commune":{"description":"Annonces en ligne par commune.","type":"array","items":{"type":"object","properties":{"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_annonces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["commune","code_postal","nb_annonces"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["mois","mandats","exclusifs","communes","annonces_actives","annonces_par_commune","qualite"],"additionalProperties":false},"avis_bodacc":{"description":"Les 20 derniers avis BODACC du SIREN au plus (tous : /entreprises/{siren}).","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'avis au BODACC.","type":"string"},"date":{"description":"Date de parution (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"description":"Famille d'avis (code de la source : creation, modification, radiation, collective, vente, dpc...).","anyOf":[{"type":"string"},{"type":"null"}]},"famille_libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type d'avis (avis initial, rectificatif, annulation).","anyOf":[{"type":"string"},{"type":"null"}]},"numero_annonce":{"anyOf":[{"type":"string"},{"type":"null"}]},"parution":{"description":"Numéro de parution du BODACC.","anyOf":[{"type":"string"},{"type":"null"}]},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"cp":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"denomination":{"description":"Dénomination de la personne morale visée par l'avis ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"sirens":{"description":"SIREN cités par l'avis ; vide pour une personne physique.","type":"array","items":{"type":"string"}},"porte_sur_personne_physique":{"description":"Vrai si l'avis porte sur une personne physique : son identité, son registre et ses textes ne sont pas servis.","anyOf":[{"type":"boolean"},{"type":"null"}]},"contenu":{"description":"Le contenu structuré de l'avis, tel que publié, en JSON.","type":"object","properties":{"personnes":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"etablissements":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"jugement":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"acte":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"modifications_generales":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"radiation_rcs":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"depot":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"divers":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_proprietaires":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_exploitants":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"avis_precedent":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."}},"required":["personnes","etablissements","jugement","acte","modifications_generales","radiation_rcs","depot","divers","precedents_proprietaires","precedents_exploitants","avis_precedent"],"additionalProperties":false},"lien":{"description":"Lien de l'avis sur bodacc.fr ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"charge_le":{"description":"Date de chargement de l'avis dans le lac de Pillr (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","famille","famille_libelle","type","numero_annonce","parution","tribunal","ville","cp","departement","denomination","sirens","porte_sur_personne_physique","contenu","lien","charge_le"],"additionalProperties":false}},"avis_bodacc_complets":{"description":"Faux si l'entreprise a plus d'avis que ceux servis ici.","type":"boolean"},"sirene_du":{"description":"Date de l'extrait Sirene lu (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["siren","denomination","enseigne","sigle","categorie_juridique","ape","entrepreneur_individuel","diffusion_partielle","etablissements","reseaux","domaines","contacts_pro","activite","avis_bodacc","avis_bodacc_complets","sirene_du"],"additionalProperties":false}},"mention":{"description":"Ce qui est servi des coordonnées, et ce qui ne l'est jamais.","type":"string"},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","mention","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"element","x-pillr-portee":"entreprises","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"agences"}},"/agences/{siren}":{"get":{"operationId":"agences_2","summary":"Agences et réseaux immobiliers","description":"La fiche d'une agence immobilière par son SIREN, ou les agences d'un lieu (commune, code postal, département), d'une enseigne ou d'un réseau. Pour chacune : dénomination, enseigne, sigle, catégorie juridique, APE, établissements Sirene (SIRET, adresse, effectif, création, siège), agences des portails rattachées au SIREN avec leur enseigne ou réseau, domaines web, coordonnées professionnelles avec leur origine, mandats du dernier mois par commune, annonces en ligne, et les 20 derniers avis BODACC. Seules les adresses électroniques publiées par l'agence sont servies, jamais une adresse construite par motif. Aucune agence : 404 ressource_absente, rien n'est débité. Coût : 2 crédits par élément rendu.","parameters":[{"name":"siren","in":"path","required":true,"schema":{"description":"Numéro SIREN de l'entreprise (9 chiffres, sans espace).","type":"string","pattern":"^\\d{9}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"description":"Les agences trouvées, par SIREN croissant.","type":"array","items":{"type":"object","properties":{"siren":{"type":"string"},"denomination":{"description":"Dénomination de l'unité légale (ou nom d'usage d'un entrepreneur individuel immatriculé).","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}]},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"description":"Catégorie juridique (code Insee).","anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"description":"Activité principale (code APE).","anyOf":[{"type":"string"},{"type":"null"}]},"entrepreneur_individuel":{"description":"Vrai pour un entrepreneur individuel immatriculé, servi comme professionnel.","anyOf":[{"type":"boolean"},{"type":"null"}]},"diffusion_partielle":{"description":"Vrai si l'unité est en diffusion partielle Sirene : son adresse n'est pas servie.","type":"boolean"},"etablissements":{"type":"array","items":{"type":"object","properties":{"siret":{"type":"string"},"siege":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"adresse":{"description":"Numéro et voie de l'établissement ; null pour une unité en diffusion partielle.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"tranche_effectif":{"description":"Tranche d'effectif salarié (code Sirene).","anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"description":"Faux pour un établissement fermé (état administratif F).","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["siret","siege","adresse","code_postal","commune","insee","tranche_effectif","cree_le","actif"],"additionalProperties":false}},"reseaux":{"description":"Agences des portails rattachées au SIREN, avec leur enseigne ou réseau.","type":"array","items":{"type":"object","properties":{"enseigne":{"description":"Enseigne ou réseau de franchise (Century 21, Laforêt...) ; null si l'agence n'en a pas.","anyOf":[{"type":"string"},{"type":"null"}]},"nom_commercial":{"description":"Nom commercial publié sur le portail.","anyOf":[{"type":"string"},{"type":"null"}]},"identifiant_portail":{"type":"string"},"commune_principale":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement_principal":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_annonces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rapprochement":{"description":"Comment l'agence du portail a été rapprochée de son SIREN.","anyOf":[{"type":"string"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enseigne","nom_commercial","identifiant_portail","commune_principale","departement_principal","nb_annonces","rapprochement","calcule_le"],"additionalProperties":false}},"domaines":{"type":"array","items":{"type":"object","properties":{"domaine":{"type":"string"},"genre":{"description":"propre : site de l'agence ; heberge : site hébergé en marque blanche par un éditeur (le sous-domaine est l'agence).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"observations":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["domaine","genre","source","observations"],"additionalProperties":false}},"contacts_pro":{"description":"Coordonnées professionnelles de l'agence ; null si aucune n'est connue.","anyOf":[{"description":"Coordonnées professionnelles, avec leur origine.","type":"object","properties":{"telephone":{"description":"Téléphone professionnel publié ; null s'il est inconnu ou retiré.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique PUBLIÉE par le professionnel (annonce, site, mentions légales) ; jamais une adresse construite par motif.","anyOf":[{"type":"string"},{"type":"null"}]},"site":{"description":"Site web (domaine) ; null s'il est inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"origine":{"description":"Où l'adresse électronique a été lue : published (publiée par le professionnel), desc_extracted (lue dans une annonce), site_legal (mentions légales du site).","anyOf":[{"type":"string"},{"type":"null"}]},"retirees":{"description":"Vrai si le professionnel s'est opposé à nos envois : aucune coordonnée n'est alors servie.","type":"boolean"}},"required":["telephone","email","site","origine","retirees"],"additionalProperties":false},{"type":"null"}]},"activite":{"type":"object","properties":{"mois":{"description":"Dernier mois calculé des mandats (AAAA-MM).","anyOf":[{"type":"string"},{"type":"null"}]},"mandats":{"description":"Mandats pris dans le mois, toutes communes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exclusifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"communes":{"description":"Les mandats du mois, par commune et par enseigne.","type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"enseigne":{"type":"string"},"mandats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusifs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_baisses_pct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["insee","enseigne","mandats","exclusifs","duree_mediane_j","part_baisses_pct"],"additionalProperties":false}},"annonces_actives":{"description":"Annonces en ligne rattachées au SIREN.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"annonces_par_commune":{"description":"Annonces en ligne par commune.","type":"array","items":{"type":"object","properties":{"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_annonces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["commune","code_postal","nb_annonces"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["mois","mandats","exclusifs","communes","annonces_actives","annonces_par_commune","qualite"],"additionalProperties":false},"avis_bodacc":{"description":"Les 20 derniers avis BODACC du SIREN au plus (tous : /entreprises/{siren}).","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'avis au BODACC.","type":"string"},"date":{"description":"Date de parution (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"description":"Famille d'avis (code de la source : creation, modification, radiation, collective, vente, dpc...).","anyOf":[{"type":"string"},{"type":"null"}]},"famille_libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type d'avis (avis initial, rectificatif, annulation).","anyOf":[{"type":"string"},{"type":"null"}]},"numero_annonce":{"anyOf":[{"type":"string"},{"type":"null"}]},"parution":{"description":"Numéro de parution du BODACC.","anyOf":[{"type":"string"},{"type":"null"}]},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"cp":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"denomination":{"description":"Dénomination de la personne morale visée par l'avis ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"sirens":{"description":"SIREN cités par l'avis ; vide pour une personne physique.","type":"array","items":{"type":"string"}},"porte_sur_personne_physique":{"description":"Vrai si l'avis porte sur une personne physique : son identité, son registre et ses textes ne sont pas servis.","anyOf":[{"type":"boolean"},{"type":"null"}]},"contenu":{"description":"Le contenu structuré de l'avis, tel que publié, en JSON.","type":"object","properties":{"personnes":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"etablissements":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"jugement":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"acte":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"modifications_generales":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"radiation_rcs":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"depot":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"divers":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_proprietaires":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_exploitants":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"avis_precedent":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."}},"required":["personnes","etablissements","jugement","acte","modifications_generales","radiation_rcs","depot","divers","precedents_proprietaires","precedents_exploitants","avis_precedent"],"additionalProperties":false},"lien":{"description":"Lien de l'avis sur bodacc.fr ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"charge_le":{"description":"Date de chargement de l'avis dans le lac de Pillr (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","famille","famille_libelle","type","numero_annonce","parution","tribunal","ville","cp","departement","denomination","sirens","porte_sur_personne_physique","contenu","lien","charge_le"],"additionalProperties":false}},"avis_bodacc_complets":{"description":"Faux si l'entreprise a plus d'avis que ceux servis ici.","type":"boolean"},"sirene_du":{"description":"Date de l'extrait Sirene lu (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["siren","denomination","enseigne","sigle","categorie_juridique","ape","entrepreneur_individuel","diffusion_partielle","etablissements","reseaux","domaines","contacts_pro","activite","avis_bodacc","avis_bodacc_complets","sirene_du"],"additionalProperties":false}},"mention":{"description":"Ce qui est servi des coordonnées, et ce qui ne l'est jamais.","type":"string"},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","mention","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"element","x-pillr-portee":"entreprises","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"agences"}},"/agents":{"get":{"operationId":"agents_immobiliers","summary":"Agents et mandataires","description":"Les agents et mandataires immobiliers vus sur les portails et dans les annuaires des réseaux, servis comme professionnels : nom d'exercice, réseau, SIREN, communes, nombre de biens, types et prix, et coordonnées professionnelles avec leur origine. Filtres : commune (code INSEE, rapprochée par le code postal et le nom de la commune principale), code postal, département, SIREN de l'agence ou réseau. Seules les adresses électroniques publiées par le professionnel sont servies, jamais une adresse construite par motif ; un professionnel qui s'est opposé à nos envois n'a plus aucune coordonnée servie. Aucun agent : 404 ressource_absente, rien n'est débité. Coût : 1 crédit par élément rendu.","parameters":[{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal principal du professionnel.","type":"string","pattern":"^\\d{5}$"}},{"name":"departement","in":"query","required":false,"schema":{"description":"Département principal du professionnel.","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},{"name":"siren","in":"query","required":false,"schema":{"description":"SIREN de l'agence ou du réseau.","type":"string","pattern":"^\\d{9}$"}},{"name":"reseau","in":"query","required":false,"schema":{"description":"Réseau contenant ce texte (iad, SAFTI...), sans tenir compte de la casse.","type":"string","minLength":2,"maxLength":80}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"description":"Les professionnels trouvés, du plus actif au moins actif.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant stable du professionnel dans la base de Pillr.","type":"string"},"type_vendeur":{"description":"mandataire : agent ou mandataire en nom propre ; agence : boîte commune d'une agence ; professionnel : statut non précisé.","type":"string","enum":["mandataire","agence","professionnel"]},"nom_exercice":{"description":"Nom d'exercice du professionnel, tel que publié.","anyOf":[{"type":"string"},{"type":"null"}]},"individuel":{"description":"Vrai pour un agent ou mandataire en nom propre, faux pour une agence.","anyOf":[{"type":"boolean"},{"type":"null"}]},"reseau":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune_principale":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal_principal":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement_principal":{"anyOf":[{"type":"string"},{"type":"null"}]},"communes":{"description":"Communes où le professionnel a des biens en vente.","type":"array","items":{"type":"string"}},"biens":{"description":"Biens en vente relevés.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"types":{"description":"Types de biens.","type":"array","items":{"type":"string"}},"prix_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"portails":{"type":"array","items":{"type":"string"}},"sources":{"description":"Sources du rapprochement (annonces, annuaires de réseaux, sites).","type":"array","items":{"type":"string"}},"rapprochement":{"description":"Méthode de rapprochement des sources (nom normalisé, contraint par le département).","anyOf":[{"type":"string"},{"type":"null"}]},"contacts_pro":{"description":"Coordonnées professionnelles, avec leur origine.","type":"object","properties":{"telephone":{"description":"Téléphone professionnel publié ; null s'il est inconnu ou retiré.","anyOf":[{"type":"string"},{"type":"null"}]},"email":{"description":"Adresse électronique PUBLIÉE par le professionnel (annonce, site, mentions légales) ; jamais une adresse construite par motif.","anyOf":[{"type":"string"},{"type":"null"}]},"site":{"description":"Site web (domaine) ; null s'il est inconnu.","anyOf":[{"type":"string"},{"type":"null"}]},"origine":{"description":"Où l'adresse électronique a été lue : published (publiée par le professionnel), desc_extracted (lue dans une annonce), site_legal (mentions légales du site).","anyOf":[{"type":"string"},{"type":"null"}]},"retirees":{"description":"Vrai si le professionnel s'est opposé à nos envois : aucune coordonnée n'est alors servie.","type":"boolean"}},"required":["telephone","email","site","origine","retirees"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","type_vendeur","nom_exercice","individuel","reseau","siren","commune_principale","code_postal_principal","departement_principal","communes","biens","types","prix_min","prix_median","prix_max","portails","sources","rapprochement","contacts_pro","qualite"],"additionalProperties":false}},"mention":{"description":"Ce qui est servi des coordonnées, et ce qui ne l'est jamais.","type":"string"},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","mention","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"entreprises","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"agents_immobiliers"}},"/adresses/{cle_ban}/societes-civiles":{"get":{"operationId":"societes_civiles_adresse","summary":"Sociétés civiles domiciliées à une adresse","description":"Les sociétés civiles (immobilières, de moyens...) domiciliées à une adresse de la Base Adresse Nationale, par sa clé : dénomination, SIREN, forme, avis BODACC (création, modification, radiation, procédure, cession) avec leur date, et présence d'une société avant le dernier DPE. Les avis sont ceux que la gold de Pillr rattache à l'adresse ; le SIREN est rapproché par la dénomination et le code postal. Les gérants et associés ne sont jamais nommés. Adresse inconnue : 404 adresse_introuvable, rien n'est débité ; une adresse sans société civile rend n = 0. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"n":{"description":"Sociétés civiles domiciliées à l'adresse.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_avis":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"societes":{"type":"array","items":{"type":"object","properties":{"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN rapproché par la dénomination et le code postal dans le BODACC ; null s'il n'a pas été trouvé.","anyOf":[{"type":"string"},{"type":"null"}]},"siren_rapprochement":{"description":"Comment le SIREN a été trouvé : par la dénomination et le code postal de l'adresse (pas par le registre de l'avis).","anyOf":[{"type":"string","enum":["denomination_code_postal"]},{"type":"null"}]},"forme":{"description":"Forme juridique (société civile immobilière, de moyens...).","anyOf":[{"type":"string"},{"type":"null"}]},"avis":{"description":"Avis BODACC de la société domiciliée à l'adresse, le plus récent d'abord.","type":"array","items":{"type":"object","properties":{"date":{"description":"Date de l'avis (AAAA-MM-JJ).","type":"string"},"famille":{"description":"Famille de l'avis (codes du BODACC ; autre pour un libellé inconnu).","type":"string","enum":["creation","immatriculation","modification","radiation","collective","conciliation","retablissement_professionnel","vente","dpc","autre"]},"type":{"description":"Libellé de l'avis tel que publié (Créations, Modifications diverses, Radiations...).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","famille","type"],"additionalProperties":false}},"creation_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"radiation_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"procedure_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"cession_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["denomination","siren","siren_rapprochement","forme","avis","creation_le","radiation_le","procedure_le","cession_le","dernier_avis_le"],"additionalProperties":false}},"derniere_denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_avis_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"connue_au_dpe":{"description":"Vrai si une société civile était déjà domiciliée à l'adresse avant le dernier DPE ; null sans DPE ou sans société.","anyOf":[{"type":"boolean"},{"type":"null"}]},"donnees_du":{"description":"Date du calcul de la gold à l'adresse (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"limites":{"description":"Ce que la réponse ne couvre pas, en clair.","type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","insee","code_postal","n","n_avis","societes","derniere_denomination","dernier_avis","dernier_avis_le","connue_au_dpe","donnees_du","qualite","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"societes_civiles"}},"/entreprises/{siren}":{"get":{"operationId":"entreprise","summary":"Entreprise : avis BODACC et autorisations","description":"Une entreprise par son SIREN : tous ses avis BODACC depuis 2009 (création, modifications, radiation, ventes et cessions, procédures collectives, dépôts des comptes), avec leur contenu structuré (établissements, jugements, actes), ses établissements Sirene de l'immobilier, ses autorisations d'urbanisme (Sitadel) et, si c'est une agence, ses enseignes et ses mandats par commune. Les personnes physiques d'un avis (gérants, associés) ne gardent que leur qualité ; un avis qui porte sur une personne physique ne sert ni son identité ni ses textes. Filtres : familles d'avis et date de début. SIREN inconnu de toutes les sources : 404 ressource_absente, rien n'est débité. Coût : 3 crédits par appel réussi.","parameters":[{"name":"siren","in":"path","required":true,"schema":{"description":"Numéro SIREN de l'entreprise (9 chiffres, sans espace).","type":"string","pattern":"^\\d{9}$"}},{"name":"familles","in":"query","required":false,"schema":{"description":"Ne garder que ces familles d'avis (une ou plusieurs).","anyOf":[{"description":"Famille d'avis du BODACC : creation, immatriculation, modification, radiation, collective (procédure collective), conciliation, retablissement_professionnel, vente (vente et cession), dpc (dépôt des comptes).","type":"string","enum":["creation","immatriculation","modification","radiation","collective","conciliation","retablissement_professionnel","vente","dpc"]},{"minItems":1,"maxItems":9,"type":"array","items":{"description":"Famille d'avis du BODACC : creation, immatriculation, modification, radiation, collective (procédure collective), conciliation, retablissement_professionnel, vente (vente et cession), dpc (dépôt des comptes).","type":"string","enum":["creation","immatriculation","modification","radiation","collective","conciliation","retablissement_professionnel","vente","dpc"]}}]}},{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne garder que les avis parus à partir de cette date (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"siren":{"type":"string"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}]},"forme":{"description":"Forme juridique (lue au BODACC) ou catégorie juridique (Sirene).","anyOf":[{"type":"string"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"type":"string"},{"type":"null"}]},"ape":{"anyOf":[{"type":"string"},{"type":"null"}]},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}]},"entrepreneur_individuel":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"adresse_siege":{"description":"Adresse du siège : établissement siège Sirene, ou siège déclaré au dernier avis BODACC."},"identite_lue":{"description":"D'où viennent la dénomination et la forme.","type":"string","enum":["sirene","bodacc","aucune"]},"etablissements":{"description":"Établissements Sirene de l'immobilier rattachés au SIREN.","type":"array","items":{"type":"object","properties":{"siret":{"type":"string"},"siege":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"adresse":{"description":"Numéro et voie de l'établissement ; null pour une unité en diffusion partielle.","anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"tranche_effectif":{"description":"Tranche d'effectif salarié (code Sirene).","anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"description":"Faux pour un établissement fermé (état administratif F).","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["siret","siege","adresse","code_postal","commune","insee","tranche_effectif","cree_le","actif"],"additionalProperties":false}},"n_avis":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avis":{"description":"Avis BODACC depuis 2009, le plus récent d'abord, filtrés par familles et date si demandé.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'avis au BODACC.","type":"string"},"date":{"description":"Date de parution (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"famille":{"description":"Famille d'avis (code de la source : creation, modification, radiation, collective, vente, dpc...).","anyOf":[{"type":"string"},{"type":"null"}]},"famille_libelle":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Type d'avis (avis initial, rectificatif, annulation).","anyOf":[{"type":"string"},{"type":"null"}]},"numero_annonce":{"anyOf":[{"type":"string"},{"type":"null"}]},"parution":{"description":"Numéro de parution du BODACC.","anyOf":[{"type":"string"},{"type":"null"}]},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"cp":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"denomination":{"description":"Dénomination de la personne morale visée par l'avis ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"sirens":{"description":"SIREN cités par l'avis ; vide pour une personne physique.","type":"array","items":{"type":"string"}},"porte_sur_personne_physique":{"description":"Vrai si l'avis porte sur une personne physique : son identité, son registre et ses textes ne sont pas servis.","anyOf":[{"type":"boolean"},{"type":"null"}]},"contenu":{"description":"Le contenu structuré de l'avis, tel que publié, en JSON.","type":"object","properties":{"personnes":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"etablissements":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"jugement":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"acte":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"modifications_generales":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"radiation_rcs":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"depot":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"divers":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_proprietaires":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"precedents_exploitants":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."},"avis_precedent":{"description":"Contenu de l'avis tel que publié au BODACC, en JSON, personnes physiques réduites à leur qualité."}},"required":["personnes","etablissements","jugement","acte","modifications_generales","radiation_rcs","depot","divers","precedents_proprietaires","precedents_exploitants","avis_precedent"],"additionalProperties":false},"lien":{"description":"Lien de l'avis sur bodacc.fr ; null pour un avis qui porte sur une personne physique.","anyOf":[{"type":"string"},{"type":"null"}]},"charge_le":{"description":"Date de chargement de l'avis dans le lac de Pillr (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","famille","famille_libelle","type","numero_annonce","parution","tribunal","ville","cp","departement","denomination","sirens","porte_sur_personne_physique","contenu","lien","charge_le"],"additionalProperties":false}},"avis_tronques":{"description":"Vrai si l'entreprise a plus de 1000 avis : les plus anciens ne sont pas servis.","type":"boolean"},"permis":{"description":"Autorisations d'urbanisme déposées par l'entreprise (Sitadel).","type":"array","items":{"type":"object","properties":{"source":{"description":"logements, locaux, demolir ou amenager (fichiers Sitadel).","type":"string"},"numero":{"anyOf":[{"type":"string"},{"type":"null"}]},"date":{"description":"Date de l'autorisation (AAAA-MM-JJ).","anyOf":[{"type":"string"},{"type":"null"}]},"ligne":{"description":"La ligne Sitadel complète de l'autorisation, en JSON."}},"required":["source","numero","date","ligne"],"additionalProperties":false}},"agence":{"description":"Si l'entreprise est une agence vue sur les portails : ses enseignes et ses mandats par commune ; null sinon.","anyOf":[{"type":"object","properties":{"reseaux":{"type":"array","items":{"type":"object","properties":{"enseigne":{"description":"Enseigne ou réseau de franchise (Century 21, Laforêt...) ; null si l'agence n'en a pas.","anyOf":[{"type":"string"},{"type":"null"}]},"nom_commercial":{"description":"Nom commercial publié sur le portail.","anyOf":[{"type":"string"},{"type":"null"}]},"identifiant_portail":{"type":"string"},"commune_principale":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement_principal":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_annonces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"rapprochement":{"description":"Comment l'agence du portail a été rapprochée de son SIREN.","anyOf":[{"type":"string"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["enseigne","nom_commercial","identifiant_portail","commune_principale","departement_principal","nb_annonces","rapprochement","calcule_le"],"additionalProperties":false}},"mandats_par_commune":{"type":"array","items":{"type":"object","properties":{"insee":{"type":"string"},"enseigne":{"type":"string"},"mandats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exclusifs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duree_mediane_j":{"anyOf":[{"type":"number"},{"type":"null"}]},"part_baisses_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"mois":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["insee","enseigne","mandats","exclusifs","duree_mediane_j","part_baisses_pct","mois"],"additionalProperties":false}}},"required":["reseaux","mandats_par_commune"],"additionalProperties":false},{"type":"null"}]},"donnees_du":{"description":"Date du plus récent avis servi.","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"limites":{"type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["siren","denomination","forme","categorie_juridique","ape","sigle","entrepreneur_individuel","adresse_siege","identite_lue","etablissements","n_avis","avis","avis_tronques","permis","agence","donnees_du","qualite","limites","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"entreprises","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"entreprise"}},"/annonces/{id}/immeuble":{"get":{"operationId":"analyse_immeuble","summary":"Dossier d'un immeuble de rapport","description":"Le dossier d'un immeuble de rapport, en cinq blocs, celui de l'outil analyse_immeuble du Hub : 1. les lots établis par les DPE de l'adresse (candidats dans un rayon de 250 m, confiance par concordance de surface et nombre de logements annoncé, désaccord) ; 2. l'état locatif lot par lot au loyer de la Carte des loyers selon la taille de chaque lot, et une découpe en lots de 40 ou 30 m² ; 3. le prix face à la prime de division DVF de la commune (repli départemental), servie quel que soit le nombre de ventes ; 4. les seuils fiscaux propres à l'immeuble ; 5. les risques datés, dont le calendrier énergétique par étiquette. Le vendeur n'est jamais nommé. Pour une annonce d'immeuble du catalogue Pillr, par son identifiant. Coût : 10 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"annonce":{"description":"L'annonce de l'immeuble ; le vendeur n'y est jamais nommé.","type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce analysée ; null pour un immeuble du lac pas encore analysé.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]}},"required":["id","source","lien","titre","commune","code_postal","insee","prix","surface_m2","pieces","dpe","lat","lon","type_vendeur"],"additionalProperties":false},"bloc_1_lots":{"type":"object","properties":{"disponible":{"type":"boolean"},"confiance":{"description":"mesure : lots énumérés dont la surface cumulée concorde à 20 % près avec la surface annoncée ; indice : lots énumérés sans concordance ; inconnu : aucun DPE exploitable.","type":"string","enum":["mesure","indice","inconnu"]},"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_lots_annonce":{"description":"Nombre de logements que le titre ou la description annonce.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"adresse":{"description":"Adresse BAN des DPE retenus.","anyOf":[{"type":"string"},{"type":"null"}]},"surface_cumulee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_annoncee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_surface_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots":{"type":"array","items":{"type":"object","properties":{"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe_etabli_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["surface_m2","etiquette_dpe","dpe_etabli_le"],"additionalProperties":false}},"desaccord":{"anyOf":[{"type":"string"},{"type":"null"}]},"autres_candidats":{"type":"array","items":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_cumulee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["adresse","nb_lots","surface_cumulee_m2"],"additionalProperties":false}},"methode":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["disponible","confiance","nb_lots","nb_lots_annonce","adresse","surface_cumulee_m2","surface_annoncee_m2","ecart_surface_pct","lots","desaccord","autres_candidats","methode","qualite"],"additionalProperties":false},"bloc_2_etat_locatif":{"type":"object","properties":{"loyer_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_annuel_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"detail_lots":{"type":"array","items":{"type":"object","properties":{"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel_eur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["surface_m2","etiquette_dpe","loyer_mensuel_eur"],"additionalProperties":false}},"methode":{"type":"string"},"decoupe":{"type":"object","properties":{"disponible":{"type":"boolean"},"en_lots_de_40_m2":{"anyOf":[{"type":"object","properties":{"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_par_lot_m2":{"type":"number"},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart au loyer de la configuration actuelle, en %.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_lots","surface_par_lot_m2","loyer_mensuel","ecart_pct"],"additionalProperties":false},{"type":"null"}]},"en_lots_de_30_m2":{"anyOf":[{"type":"object","properties":{"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_par_lot_m2":{"type":"number"},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart au loyer de la configuration actuelle, en %.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_lots","surface_par_lot_m2","loyer_mensuel","ecart_pct"],"additionalProperties":false},{"type":"null"}]},"loyer_m2_t1_t2":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_m2_t3plus":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"avertissement":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["disponible","en_lots_de_40_m2","en_lots_de_30_m2","loyer_m2_t1_t2","loyer_m2_t3plus","source","avertissement"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["loyer_m2_commune","loyer_source","loyer_mensuel_estime","loyer_annuel_estime","rendement_brut_pct","detail_lots","methode","decoupe","qualite"],"additionalProperties":false},"bloc_3_prix":{"type":"object","properties":{"disponible":{"type":"boolean"},"maille":{"anyOf":[{"type":"string","enum":["commune","departement"]},{"type":"null"}]},"prix_m2_unite":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bloc":{"anyOf":[{"type":"number"},{"type":"null"}]},"rapport":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_unite":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_bloc":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"description":"Le prix au m² de l'annonce situé entre le prix en bloc et le prix à l'unité.","anyOf":[{"type":"string"},{"type":"null"}]},"avertissement":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["disponible","maille","prix_m2_unite","prix_m2_bloc","rapport","n_unite","n_bloc","position","avertissement","qualite"],"additionalProperties":false},"bloc_4_fiscalite":{"type":"object","properties":{"seuil_micro_bic_par_lot_eur":{"type":"number"},"seuil_micro_foncier_eur":{"type":"number"},"seuil_cotisations_sociales_lcd_eur":{"type":"number"},"particularites":{"type":"array","items":{"type":"string"}}},"required":["seuil_micro_bic_par_lot_eur","seuil_micro_foncier_eur","seuil_cotisations_sociales_lcd_eur","particularites"],"additionalProperties":false},"bloc_5_risques":{"type":"object","properties":{"calendrier_energetique":{"anyOf":[{"type":"string"},{"type":"null"}]},"concentration":{"type":"string"},"lots_sous_contrainte":{"description":"Lots en F ou G parmi les lots établis.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"a_verifier":{"type":"array","items":{"type":"string"}}},"required":["calendrier_energetique","concentration","lots_sous_contrainte","a_verifier"],"additionalProperties":false},"ordre":{"type":"string"},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["annonce","bloc_1_lots","bloc_2_etat_locatif","bloc_3_prix","bloc_4_fiscalite","bloc_5_risques","ordre","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"analyse_immeuble"}},"/immeubles/analyses":{"post":{"operationId":"analyse_immeuble_calculer","summary":"Dossier d'un immeuble pas encore analysé","description":"Le dossier d'un immeuble de rapport, en cinq blocs, celui de l'outil analyse_immeuble du Hub : 1. les lots établis par les DPE de l'adresse (candidats dans un rayon de 250 m, confiance par concordance de surface et nombre de logements annoncé, désaccord) ; 2. l'état locatif lot par lot au loyer de la Carte des loyers selon la taille de chaque lot, et une découpe en lots de 40 ou 30 m² ; 3. le prix face à la prime de division DVF de la commune (repli départemental), servie quel que soit le nombre de ventes ; 4. les seuils fiscaux propres à l'immeuble ; 5. les risques datés, dont le calendrier énergétique par étiquette. Le vendeur n'est jamais nommé. Pour un immeuble collecté par Pillr que la file d'analyse n'a pas encore atteint, par le lien de son annonce (source_url). Coût : 10 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source_url":{"description":"Lien de l'annonce de l'immeuble sur son portail d'origine.","type":"string","maxLength":500,"format":"uri"}},"required":["source_url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"annonce":{"description":"L'annonce de l'immeuble ; le vendeur n'y est jamais nommé.","type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce analysée ; null pour un immeuble du lac pas encore analysé.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]}},"required":["id","source","lien","titre","commune","code_postal","insee","prix","surface_m2","pieces","dpe","lat","lon","type_vendeur"],"additionalProperties":false},"bloc_1_lots":{"type":"object","properties":{"disponible":{"type":"boolean"},"confiance":{"description":"mesure : lots énumérés dont la surface cumulée concorde à 20 % près avec la surface annoncée ; indice : lots énumérés sans concordance ; inconnu : aucun DPE exploitable.","type":"string","enum":["mesure","indice","inconnu"]},"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nb_lots_annonce":{"description":"Nombre de logements que le titre ou la description annonce.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"adresse":{"description":"Adresse BAN des DPE retenus.","anyOf":[{"type":"string"},{"type":"null"}]},"surface_cumulee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_annoncee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_surface_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lots":{"type":"array","items":{"type":"object","properties":{"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe_etabli_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["surface_m2","etiquette_dpe","dpe_etabli_le"],"additionalProperties":false}},"desaccord":{"anyOf":[{"type":"string"},{"type":"null"}]},"autres_candidats":{"type":"array","items":{"type":"object","properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_cumulee_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["adresse","nb_lots","surface_cumulee_m2"],"additionalProperties":false}},"methode":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["disponible","confiance","nb_lots","nb_lots_annonce","adresse","surface_cumulee_m2","surface_annoncee_m2","ecart_surface_pct","lots","desaccord","autres_candidats","methode","qualite"],"additionalProperties":false},"bloc_2_etat_locatif":{"type":"object","properties":{"loyer_m2_commune":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_annuel_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"detail_lots":{"type":"array","items":{"type":"object","properties":{"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel_eur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["surface_m2","etiquette_dpe","loyer_mensuel_eur"],"additionalProperties":false}},"methode":{"type":"string"},"decoupe":{"type":"object","properties":{"disponible":{"type":"boolean"},"en_lots_de_40_m2":{"anyOf":[{"type":"object","properties":{"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_par_lot_m2":{"type":"number"},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart au loyer de la configuration actuelle, en %.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_lots","surface_par_lot_m2","loyer_mensuel","ecart_pct"],"additionalProperties":false},{"type":"null"}]},"en_lots_de_30_m2":{"anyOf":[{"type":"object","properties":{"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"surface_par_lot_m2":{"type":"number"},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart au loyer de la configuration actuelle, en %.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_lots","surface_par_lot_m2","loyer_mensuel","ecart_pct"],"additionalProperties":false},{"type":"null"}]},"loyer_m2_t1_t2":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_m2_t3plus":{"anyOf":[{"type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"avertissement":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["disponible","en_lots_de_40_m2","en_lots_de_30_m2","loyer_m2_t1_t2","loyer_m2_t3plus","source","avertissement"],"additionalProperties":false},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["loyer_m2_commune","loyer_source","loyer_mensuel_estime","loyer_annuel_estime","rendement_brut_pct","detail_lots","methode","decoupe","qualite"],"additionalProperties":false},"bloc_3_prix":{"type":"object","properties":{"disponible":{"type":"boolean"},"maille":{"anyOf":[{"type":"string","enum":["commune","departement"]},{"type":"null"}]},"prix_m2_unite":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bloc":{"anyOf":[{"type":"number"},{"type":"null"}]},"rapport":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_unite":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_bloc":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"position":{"description":"Le prix au m² de l'annonce situé entre le prix en bloc et le prix à l'unité.","anyOf":[{"type":"string"},{"type":"null"}]},"avertissement":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["disponible","maille","prix_m2_unite","prix_m2_bloc","rapport","n_unite","n_bloc","position","avertissement","qualite"],"additionalProperties":false},"bloc_4_fiscalite":{"type":"object","properties":{"seuil_micro_bic_par_lot_eur":{"type":"number"},"seuil_micro_foncier_eur":{"type":"number"},"seuil_cotisations_sociales_lcd_eur":{"type":"number"},"particularites":{"type":"array","items":{"type":"string"}}},"required":["seuil_micro_bic_par_lot_eur","seuil_micro_foncier_eur","seuil_cotisations_sociales_lcd_eur","particularites"],"additionalProperties":false},"bloc_5_risques":{"type":"object","properties":{"calendrier_energetique":{"anyOf":[{"type":"string"},{"type":"null"}]},"concentration":{"type":"string"},"lots_sous_contrainte":{"description":"Lots en F ou G parmi les lots établis.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"a_verifier":{"type":"array","items":{"type":"string"}}},"required":["calendrier_energetique","concentration","lots_sous_contrainte","a_verifier"],"additionalProperties":false},"ordre":{"type":"string"},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["annonce","bloc_1_lots","bloc_2_etat_locatif","bloc_3_prix","bloc_4_fiscalite","bloc_5_risques","ordre","calcule_le","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":10,"x-pillr-unite":"appel","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"analyse_immeuble_calculer"}},"/adresses/{cle_ban}/lots":{"get":{"operationId":"lots_adresse","summary":"Lots d'un immeuble établis par ses DPE","description":"Les lots d'un immeuble à une adresse (clé BAN), établis par les DPE de ses logements (ADEME) : un lot par DPE d'appartement de moins de 10 ans, surface, étiquette, étage, numéros de DPE ; un DPE remplacé rejoint le lot de son remplaçant. Deux DPE du même étage à la même surface sans lien de remplacement sont signalés comme doublon possible, jamais fusionnés. Le compte est confronté au registre des copropriétés et au DPE de l'immeuble ; chaque écart est dit dans desaccords. Coût : 3 crédits par appel réussi.","parameters":[{"name":"cle_ban","in":"path","required":true,"schema":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"cle_ban":{"type":"string"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"type":"string"},"nb_lots":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lots":{"type":"array","items":{"type":"object","properties":{"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"etage":{"description":"Étage porté par le DPE, 0 pour le rez-de-chaussée ; null s'il ne le dit pas.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"dpe":{"description":"Le DPE en vigueur d'abord, puis ceux qu'il remplace.","type":"array","items":{"type":"object","properties":{"numero_dpe":{"type":"string"},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"etiquette_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["numero_dpe","date","etiquette_dpe","surface_m2"],"additionalProperties":false}},"confiance":{"description":"doublon_possible : un autre lot du même étage, à la même surface à 1 m² près, porte un DPE d'une autre date sans dire qu'il le remplace.","type":"string","enum":["distinct","doublon_possible"]}},"required":["surface_m2","etiquette_dpe","etage","dpe","confiance"],"additionalProperties":false}},"nb_dpe_ecartes":{"description":"DPE de l'adresse non retenus : hors appartement, de plus de 10 ans, trop petits, ou remplacés.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"registre":{"description":"Ce que disent le registre des copropriétés et le DPE de l'immeuble, pour contrôler le compte des lots.","type":"object","properties":{"lots_habitation":{"description":"Lots d'habitation déclarés au registre national des copropriétés.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"immatriculation":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements_dpe_immeuble":{"description":"Nombre d'appartements que le DPE le plus récent attribue à l'immeuble, quand il en décrit plusieurs.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["lots_habitation","immatriculation","logements_dpe_immeuble"],"additionalProperties":false},"desaccords":{"type":"array","items":{"type":"string"}},"methode":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["cle_ban","adresse","insee","nb_lots","lots","nb_dpe_ecartes","registre","desaccords","methode","qualite","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":3,"x-pillr-unite":"appel","x-pillr-portee":"adresse","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"lots_adresse"}},"/communes/{insee}/prime-division":{"get":{"operationId":"prime_division","summary":"Prime de division d'une commune","description":"Prime de division mesurée sur DVF dans une commune : prix au m² médian des mutations d'un seul logement face aux mutations de 4 logements ou plus (ventes en bloc), sur les 3 dernières années, avec le nombre de mutations de chaque côté, la période couverte et la qualité de la mesure. Les médianes sont servies quel que soit le nombre de ventes, avec le drapeau peu_d_observations sous les seuils du dossier immeuble ; sous ces seuils, la mesure du département est servie à côté. Paris, Lyon et Marseille se mesurent sur leurs arrondissements. Le rapport est un plafond, pas un profit. Coût : 2 crédits par appel réussi.","parameters":[{"name":"insee","in":"path","required":true,"schema":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"insee":{"type":"string"},"commune_nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"type":"object","properties":{"maille":{"type":"string","enum":["commune","departement"]},"code":{"description":"Code INSEE de la commune, ou code du département.","type":"string"},"prix_m2_unite":{"description":"Prix au m² médian des mutations d'un seul logement (un lot revendu à l'unité), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bloc":{"description":"Prix au m² médian des mutations de 4 logements ou plus (vente en bloc), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"rapport":{"description":"prix_m2_unite divisé par prix_m2_bloc.","anyOf":[{"type":"number"},{"type":"null"}]},"prime_pct":{"description":"Écart du prix à l'unité au prix en bloc, en % du prix en bloc.","anyOf":[{"type":"number"},{"type":"null"}]},"n_unite":{"description":"Mutations d'un seul logement retenues.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_bloc":{"description":"Mutations de 4 logements ou plus retenues.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periode":{"description":"Première et dernière mutation retenues.","type":"object","properties":{"du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"au":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["du","au"],"additionalProperties":false},"millesimes":{"description":"Années couvertes par les mutations retenues.","type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["maille","code","prix_m2_unite","prix_m2_bloc","rapport","prime_pct","n_unite","n_bloc","periode","millesimes","qualite"],"additionalProperties":false},"departement":{"description":"Repli départemental, mesuré seulement quand la commune n'atteint pas les seuils du dossier immeuble (ventes à l'unité ou en bloc) ; null sinon.","anyOf":[{"type":"object","properties":{"maille":{"type":"string","enum":["commune","departement"]},"code":{"description":"Code INSEE de la commune, ou code du département.","type":"string"},"prix_m2_unite":{"description":"Prix au m² médian des mutations d'un seul logement (un lot revendu à l'unité), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bloc":{"description":"Prix au m² médian des mutations de 4 logements ou plus (vente en bloc), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"rapport":{"description":"prix_m2_unite divisé par prix_m2_bloc.","anyOf":[{"type":"number"},{"type":"null"}]},"prime_pct":{"description":"Écart du prix à l'unité au prix en bloc, en % du prix en bloc.","anyOf":[{"type":"number"},{"type":"null"}]},"n_unite":{"description":"Mutations d'un seul logement retenues.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_bloc":{"description":"Mutations de 4 logements ou plus retenues.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"periode":{"description":"Première et dernière mutation retenues.","type":"object","properties":{"du":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]},"au":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},{"type":"null"}]}},"required":["du","au"],"additionalProperties":false},"millesimes":{"description":"Années couvertes par les mutations retenues.","type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["maille","code","prix_m2_unite","prix_m2_bloc","rapport","prime_pct","n_unite","n_bloc","periode","millesimes","qualite"],"additionalProperties":false},{"type":"null"}]},"avertissement":{"type":"string"},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["insee","commune_nom","commune","departement","avertissement","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"prime_division"}},"/travaux/{maille}":{"get":{"operationId":"indice_travaux","summary":"Indice Travaux et état du parc en vente","description":"Pour un code postal ou une commune, un mois d'entrée au catalogue et un type de bien : biens lus (une fiche par bien), état visuel médian lu sur les photos, part des biens à rénover, coût médian des travaux et au m², avec l'incertitude mesurée du chiffrage. Le coût vient du barème déterministe d'artisans appliqué aux postes vus sur les photos, jamais d'un montant écrit par le modèle ; les annonces aux photos de catalogue sont écartées et comptées. Par défaut le dernier mois calculé et tous les types. Rien n'est masqué : une maille à peu de biens est servie avec le drapeau peu_d_observations. Maille inconnue : 404 ressource_absente, rien n'est débité. Coût : 2 crédits par appel réussi.","parameters":[{"name":"maille","in":"path","required":true,"schema":{"description":"Code postal ou code INSEE de la commune.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},{"name":"type_maille","in":"query","required":false,"schema":{"description":"code_postal ou insee ; sans lui, le code est lu comme un code postal s'il en est un, sinon comme un code INSEE.","type":"string","enum":["code_postal","insee"]}},{"name":"mois","in":"query","required":false,"schema":{"description":"Mois d'entrée des annonces au catalogue (AAAA-MM) ; par défaut le dernier calculé.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"}},{"name":"type","in":"query","required":false,"schema":{"description":"appartement ou maison ; par défaut, les deux et leur ensemble.","type":"string","enum":["appartement","maison"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"maille":{"type":"object","properties":{"type":{"type":"string","enum":["code_postal","insee"]},"code":{"type":"string"}},"required":["type","code"],"additionalProperties":false},"mois":{"description":"Mois d'entrée des annonces au catalogue (AAAA-MM).","type":"string"},"segments":{"type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string","enum":["appartement","maison","tous"]},"n":{"description":"Biens distincts lus (une fiche par bien, empreinte de diffusion).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_annonces":{"description":"Annonces analysées avant le dédoublonnage.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"etat_median":{"description":"État visuel médian lu sur les photos, de 0 (à reprendre) à 100 (neuf).","anyOf":[{"type":"number"},{"type":"null"}]},"part_a_renover_pct":{"description":"Part des biens à rénover d'après leurs photos, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_median":{"description":"Coût médian des travaux (milieu de la fourchette du barème), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_min_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"cout_max_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"cout_median_m2":{"description":"Coût médian des travaux rapporté à la surface, en euros par m².","anyOf":[{"type":"number"},{"type":"null"}]},"incertitude_pct":{"description":"Écart médian mesuré entre deux analyses d'un même bien sur le chiffrage, en % : l'incertitude du coût.","type":"object","properties":{"bas":{"type":"number"},"haut":{"type":"number"},"mesuree_le":{"type":"string"}},"required":["bas","haut","mesuree_le"],"additionalProperties":false},"photos_catalogue_exclues":{"description":"Annonces écartées parce que leurs photos sont des photos de catalogue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["type_bien","n","n_annonces","etat_median","part_a_renover_pct","cout_median","cout_min_median","cout_max_median","cout_median_m2","incertitude_pct","photos_catalogue_exclues","qualite"],"additionalProperties":false}},"methode":{"type":"string"},"donnees_du":{"description":"Date du calcul de l'indice (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["maille","mois","segments","methode","donnees_du","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"analyses_photo","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"travaux_zone"}},"/travaux/lot":{"post":{"operationId":"indice_travaux_lot","summary":"Indice Travaux et état du parc en vente, en lot","description":"Indice Travaux et état du parc en vente pour 100 éléments au plus en un appel : chaque élément est servi ou refusé seul, avec son code d'erreur, et seuls les éléments servis sont débités. Pour un code postal ou une commune, un mois d'entrée au catalogue et un type de bien : biens lus (une fiche par bien), état visuel médian lu sur les photos, part des biens à rénover, coût médian des travaux et au m², avec l'incertitude mesurée du chiffrage. Le coût vient du barème déterministe d'artisans appliqué aux postes vus sur les photos, jamais d'un montant écrit par le modèle ; les annonces aux photos de catalogue sont écartées et comptées. Par défaut le dernier mois calculé et tous les types. Rien n'est masqué : une maille à peu de biens est servie avec le drapeau peu_d_observations. Maille inconnue : 404 ressource_absente, rien n'est débité. Coût : 2 crédits par élément rendu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"elements":{"description":"Les entrées de l'opération unitaire, 100 au plus.","minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"maille":{"description":"Code postal ou code INSEE de la commune.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"type_maille":{"description":"code_postal ou insee ; sans lui, le code est lu comme un code postal s'il en est un, sinon comme un code INSEE.","type":"string","enum":["code_postal","insee"]},"mois":{"description":"Mois d'entrée des annonces au catalogue (AAAA-MM) ; par défaut le dernier calculé.","type":"string","pattern":"^\\d{4}-(?:0[1-9]|1[0-2])$"},"type":{"description":"appartement ou maison ; par défaut, les deux et leur ensemble.","type":"string","enum":["appartement","maison"]}},"required":["maille"],"additionalProperties":false}}},"required":["elements"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Un résultat par élément, dans l'ordre de l'entrée : la sortie de l'opération, ou l'erreur de cet élément.","type":"array","items":{"anyOf":[{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":true},"donnees":{"type":"object","properties":{"maille":{"type":"object","properties":{"type":{"type":"string","enum":["code_postal","insee"]},"code":{"type":"string"}},"required":["type","code"],"additionalProperties":false},"mois":{"description":"Mois d'entrée des annonces au catalogue (AAAA-MM).","type":"string"},"segments":{"type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string","enum":["appartement","maison","tous"]},"n":{"description":"Biens distincts lus (une fiche par bien, empreinte de diffusion).","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"n_annonces":{"description":"Annonces analysées avant le dédoublonnage.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"etat_median":{"description":"État visuel médian lu sur les photos, de 0 (à reprendre) à 100 (neuf).","anyOf":[{"type":"number"},{"type":"null"}]},"part_a_renover_pct":{"description":"Part des biens à rénover d'après leurs photos, en %.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_median":{"description":"Coût médian des travaux (milieu de la fourchette du barème), en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"cout_min_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"cout_max_median":{"anyOf":[{"type":"number"},{"type":"null"}]},"cout_median_m2":{"description":"Coût médian des travaux rapporté à la surface, en euros par m².","anyOf":[{"type":"number"},{"type":"null"}]},"incertitude_pct":{"description":"Écart médian mesuré entre deux analyses d'un même bien sur le chiffrage, en % : l'incertitude du coût.","type":"object","properties":{"bas":{"type":"number"},"haut":{"type":"number"},"mesuree_le":{"type":"string"}},"required":["bas","haut","mesuree_le"],"additionalProperties":false},"photos_catalogue_exclues":{"description":"Annonces écartées parce que leurs photos sont des photos de catalogue.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["type_bien","n","n_annonces","etat_median","part_a_renover_pct","cout_median","cout_min_median","cout_max_median","cout_median_m2","incertitude_pct","photos_catalogue_exclues","qualite"],"additionalProperties":false}},"methode":{"type":"string"},"donnees_du":{"description":"Date du calcul de l'indice (horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["maille","mois","segments","methode","donnees_du"],"additionalProperties":false}},"required":["index","ok","donnees"],"additionalProperties":false},{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":false},"erreur":{"type":"object","properties":{"code":{"description":"Code stable de l'erreur (lib/api/v1/erreurs.ts).","type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false}},"required":["index","ok","erreur"],"additionalProperties":false}]}},"n_ok":{"type":"integer","minimum":0,"maximum":9007199254740991},"n_erreurs":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","n_ok","n_erreurs","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"element","x-pillr-portee":"analyses_photo","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"travaux_zone_lot","x-pillr-lot-de":"indice_travaux"}},"/barometre/{edition}":{"get":{"operationId":"barometre","summary":"Baromètre","description":"L'édition figée du baromètre de Pillr pour la France, un département ou une commune : chaque mesure du registre (prix de référence, ventes, loyer, rendement, annonces, baisses de prix, biens à rénover, budget travaux, écart au prix de référence, part des DPE F et G, résidences secondaires, vacance, revenu), avec son effectif, son intervalle quand il existe, et son seuil de publication. Rien n'est masqué : une valeur sous le seuil de publication du site est servie avec publiee = faux et son motif. edition vaut AAAA-MM ou courante. Édition ou territoire inconnus : 404, rien n'est débité. Coût : 1 crédit par appel réussi.","parameters":[{"name":"edition","in":"path","required":true,"schema":{"description":"Édition (AAAA-MM), ou courante.","type":"string","pattern":"^(?:\\d{4}-(?:0[1-9]|1[0-2])|courante)$"}},{"name":"echelle","in":"query","required":false,"schema":{"description":"france (défaut), departement ou commune.","default":"france","type":"string","enum":["france","departement","commune"]}},{"name":"cle","in":"query","required":false,"schema":{"description":"Code du département (echelle departement) ou code INSEE (echelle commune).","type":"string","pattern":"^(?:\\d{2,3}|2[AB]|\\d{5}|2[AB]\\d{3})$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"edition":{"type":"string"},"donnees_au":{"description":"Date d'arrêt des données de l'édition (AAAA-MM-JJ).","type":"string"},"methode":{"description":"Version de la méthode.","type":"string"},"revision":{"type":"string"},"echelle":{"type":"string","enum":["france","departement","commune"]},"cle":{"description":"FR, code du département ou code INSEE.","type":"string"},"nom":{"type":"string"},"mesures":{"type":"array","items":{"type":"object","properties":{"cle":{"description":"Identifiant de la mesure dans le registre (fg, baisse, prixA...).","type":"string"},"libelle":{"type":"string"},"nature":{"description":"annonce, vente, diag, recens ou loyer.","type":"string"},"unite":{"type":"string"},"valeur":{"description":"La valeur de l'édition, servie même sous le seuil de publication du site ; null si elle n'existe pas à cette échelle.","anyOf":[{"type":"number"},{"type":"null"}]},"n":{"description":"Effectif derrière la valeur, quand la mesure en a un.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_publication":{"description":"Effectif minimal pour que le site publie la valeur.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_classement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"publiee":{"description":"Vrai si le site publie la valeur (effectif suffisant, prix de référence assez précis).","type":"boolean"},"motif":{"description":"Pourquoi le site ne publie pas la valeur ; null si elle est publiée.","anyOf":[{"type":"string","enum":["non_disponible","sous_seuil"]},{"type":"null"}]},"intervalle":{"description":"Intervalle de confiance à 95 %, quand la mesure en a un.","anyOf":[{"type":"object","properties":{"bas":{"type":"number"},"haut":{"type":"number"}},"required":["bas","haut"],"additionalProperties":false},{"type":"null"}]},"date":{"description":"Date de la mesure dans cette édition.","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["cle","libelle","nature","unite","valeur","n","seuil_publication","seuil_classement","publiee","motif","intervalle","date","qualite"],"additionalProperties":false}},"registre":{"description":"Le registre des mesures du baromètre, seuils de publication compris.","type":"array","items":{"type":"object","properties":{"cle":{"type":"string"},"libelle":{"type":"string"},"nature":{"type":"string"},"unite":{"type":"string"},"echelles":{"type":"array","items":{"type":"string","enum":["commune","departement"]}},"source":{"type":"string"},"calcul":{"type":"string"},"seuil":{"type":"string"},"limite":{"type":"string"},"seuil_publication":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_classement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["cle","libelle","nature","unite","echelles","source","calcul","seuil","limite","seuil_publication","seuil_classement"],"additionalProperties":false}},"calcule_le":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["edition","donnees_au","methode","revision","echelle","cle","nom","mesures","registre","calcule_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"barometre"}},"/barometre/lot":{"post":{"operationId":"barometre_lot","summary":"Baromètre, en lot","description":"Baromètre pour 100 éléments au plus en un appel : chaque élément est servi ou refusé seul, avec son code d'erreur, et seuls les éléments servis sont débités. L'édition figée du baromètre de Pillr pour la France, un département ou une commune : chaque mesure du registre (prix de référence, ventes, loyer, rendement, annonces, baisses de prix, biens à rénover, budget travaux, écart au prix de référence, part des DPE F et G, résidences secondaires, vacance, revenu), avec son effectif, son intervalle quand il existe, et son seuil de publication. Rien n'est masqué : une valeur sous le seuil de publication du site est servie avec publiee = faux et son motif. edition vaut AAAA-MM ou courante. Édition ou territoire inconnus : 404, rien n'est débité. Coût : 1 crédit par élément rendu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"elements":{"description":"Les entrées de l'opération unitaire, 100 au plus.","minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"edition":{"description":"Édition (AAAA-MM), ou courante.","type":"string","pattern":"^(?:\\d{4}-(?:0[1-9]|1[0-2])|courante)$"},"echelle":{"description":"france (défaut), departement ou commune.","default":"france","type":"string","enum":["france","departement","commune"]},"cle":{"description":"Code du département (echelle departement) ou code INSEE (echelle commune).","type":"string","pattern":"^(?:\\d{2,3}|2[AB]|\\d{5}|2[AB]\\d{3})$"}},"required":["edition"],"additionalProperties":false}}},"required":["elements"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Un résultat par élément, dans l'ordre de l'entrée : la sortie de l'opération, ou l'erreur de cet élément.","type":"array","items":{"anyOf":[{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":true},"donnees":{"type":"object","properties":{"edition":{"type":"string"},"donnees_au":{"description":"Date d'arrêt des données de l'édition (AAAA-MM-JJ).","type":"string"},"methode":{"description":"Version de la méthode.","type":"string"},"revision":{"type":"string"},"echelle":{"type":"string","enum":["france","departement","commune"]},"cle":{"description":"FR, code du département ou code INSEE.","type":"string"},"nom":{"type":"string"},"mesures":{"type":"array","items":{"type":"object","properties":{"cle":{"description":"Identifiant de la mesure dans le registre (fg, baisse, prixA...).","type":"string"},"libelle":{"type":"string"},"nature":{"description":"annonce, vente, diag, recens ou loyer.","type":"string"},"unite":{"type":"string"},"valeur":{"description":"La valeur de l'édition, servie même sous le seuil de publication du site ; null si elle n'existe pas à cette échelle.","anyOf":[{"type":"number"},{"type":"null"}]},"n":{"description":"Effectif derrière la valeur, quand la mesure en a un.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_publication":{"description":"Effectif minimal pour que le site publie la valeur.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_classement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"publiee":{"description":"Vrai si le site publie la valeur (effectif suffisant, prix de référence assez précis).","type":"boolean"},"motif":{"description":"Pourquoi le site ne publie pas la valeur ; null si elle est publiée.","anyOf":[{"type":"string","enum":["non_disponible","sous_seuil"]},{"type":"null"}]},"intervalle":{"description":"Intervalle de confiance à 95 %, quand la mesure en a un.","anyOf":[{"type":"object","properties":{"bas":{"type":"number"},"haut":{"type":"number"}},"required":["bas","haut"],"additionalProperties":false},{"type":"null"}]},"date":{"description":"Date de la mesure dans cette édition.","type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["cle","libelle","nature","unite","valeur","n","seuil_publication","seuil_classement","publiee","motif","intervalle","date","qualite"],"additionalProperties":false}},"registre":{"description":"Le registre des mesures du baromètre, seuils de publication compris.","type":"array","items":{"type":"object","properties":{"cle":{"type":"string"},"libelle":{"type":"string"},"nature":{"type":"string"},"unite":{"type":"string"},"echelles":{"type":"array","items":{"type":"string","enum":["commune","departement"]}},"source":{"type":"string"},"calcul":{"type":"string"},"seuil":{"type":"string"},"limite":{"type":"string"},"seuil_publication":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"seuil_classement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["cle","libelle","nature","unite","echelles","source","calcul","seuil","limite","seuil_publication","seuil_classement"],"additionalProperties":false}},"calcule_le":{"type":"string"}},"required":["edition","donnees_au","methode","revision","echelle","cle","nom","mesures","registre","calcule_le"],"additionalProperties":false}},"required":["index","ok","donnees"],"additionalProperties":false},{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"ok":{"type":"boolean","const":false},"erreur":{"type":"object","properties":{"code":{"description":"Code stable de l'erreur (lib/api/v1/erreurs.ts).","type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false}},"required":["index","ok","erreur"],"additionalProperties":false}]}},"n_ok":{"type":"integer","minimum":0,"maximum":9007199254740991},"n_erreurs":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","n_ok","n_erreurs","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"barometre_lot","x-pillr-lot-de":"barometre"}},"/barometre/dossiers":{"post":{"operationId":"dossier_barometre","summary":"Dossier du baromètre sur demande","description":"Un dossier du baromètre composé à partir d'une demande libre : le modèle propose un plan (classements, comparaisons, croisements, répartitions) sur le registre des mesures, sans voir aucun chiffre ; les sections sont calculées de façon déterministe sur l'édition ; la lecture rédigée par le modèle passe par un vérificateur qui retire toute phrase dont un chiffre n'est pas dans les faits calculés. Rend le plan, chaque section (faits, lecture vérifiée, lecture déterministe, graphique, tableau) et un lien signé vers le dossier sur pillr.fr. Les classements suivent les seuils de classement de l'édition. Demande hors du périmètre du baromètre : 400 parametres_invalides, rien n'est débité ; modèle indisponible : 503, crédits rendus. Coût : 20 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"description":"La demande, en langage libre (ex. les passoires énergétiques en Bretagne).","type":"string","minLength":3,"maxLength":600}},"required":["question"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"edition":{"type":"string"},"titre":{"type":"string"},"chapo":{"type":"string"},"sections":{"type":"array","items":{"type":"object","properties":{"type":{"description":"classement, comparaison, croisement, repartition, agregat ou chiffre_cle.","type":"string"},"titre":{"type":"string"},"echelle":{"type":"string","enum":["commune","departement"]},"selection":{"description":"La sélection, en clair.","type":"string"},"mesures":{"type":"array","items":{"type":"string"}},"faits":{"description":"Les faits calculés sur l'édition, seule matière de la lecture.","type":"array","items":{"type":"string"}},"lecture":{"description":"Les phrases de la lecture rédigée par le modèle que le vérificateur a gardées.","type":"array","items":{"type":"string"}},"phrases_retirees":{"description":"Phrases de la lecture retirées par le vérificateur : un chiffre absent des faits.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"phrases":{"description":"La lecture déterministe, calculée sans modèle.","type":"array","items":{"type":"string"}},"graphique":{"description":"Les points du graphique de la section (barres, nuage, histogramme ou chiffre)."},"tableau":{"description":"Les lignes du tableau de la section."},"vide":{"type":"boolean"}},"required":["type","titre","echelle","selection","mesures","faits","lecture","phrases_retirees","phrases","graphique","tableau","vide"],"additionalProperties":false}},"lien_signe":{"description":"Lien signé du dossier sur pillr.fr ; null si la signature n'a pas pu être faite.","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["edition","titre","chapo","sections","lien_signe","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"dossier_barometre"}},"/modeles":{"get":{"operationId":"modeles","summary":"Fiches de mesure des modèles","description":"La fiche de mesure de chaque modèle de Pillr, avec la date et l'échantillon de chaque mesure : erreur de l'estimation sur des ventes DVF (avec et sans adresse) et couverture de sa fourchette ; reproductibilité du chiffrage des travaux et de l'état visuel ; calibration du pré-marché par bande et par type de bien (taux de vente DVF à 12 mois), coefficients, coefficients ajustés et AUC, décroissance par âge du DPE, précision des cohortes ; méthode et limites du barème de prix au m² et du loyer de marché. Sans modèle, toutes les fiches. Une mesure absente se dit dans les limites, jamais par un chiffre de remplacement. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"modeles":{"type":"array","items":{"type":"object","properties":{"modele":{"type":"string","enum":["estimation","pre_marche","travaux","bareme_prix","loyer"]},"titre":{"type":"string"},"methode":{"type":"string"},"source":{"type":"string"},"mesures":{"type":"array","items":{"type":"object","properties":{"indicateur":{"type":"string"},"libelle":{"type":"string"},"valeur":{"type":"number"},"unite":{"type":"string"},"mesure_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"echantillon":{"description":"Nombre d'observations de la mesure.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perimetre":{"description":"Sur quoi porte la mesure (avec adresse, sans adresse, type de bien...).","anyOf":[{"type":"string"},{"type":"null"}]},"hors_echantillon":{"description":"Vrai si la mesure a été faite sur des données que le modèle n'a pas vues ; null si sans objet.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["indicateur","libelle","valeur","unite","mesure_le","echantillon","perimetre","hors_echantillon"],"additionalProperties":false}},"calibration":{"description":"Pré-marché : taux de vente DVF à 12 mois mesuré par bande d'indice.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"bande":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"indice_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"indice_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_vente_12m_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","bande","indice_min","indice_max","n","taux_vente_12m_pct","calcule_le"],"additionalProperties":false}},"coefficients":{"description":"Pré-marché : coefficient mesuré de chaque signal.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"signal":{"type":"string"},"groupe":{"anyOf":[{"type":"string"},{"type":"null"}]},"n_dvf":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_dvf_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_dvf":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_mise_en_vente":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_mise_en_vente_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_mise_en_vente":{"anyOf":[{"type":"number"},{"type":"null"}]},"stable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retenu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","signal","groupe","n_dvf","taux_dvf_pct","lift_dvf","n_mise_en_vente","taux_mise_en_vente_pct","lift_mise_en_vente","stable","retenu","coefficient","calcule_le"],"additionalProperties":false}},"coefficients_ajustes":{"description":"Pré-marché : coefficients ajustés (rapports de cotes) et AUC du modèle.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"verite":{"description":"La vérité mesurée (vente DVF, mise en vente).","type":"string"},"signal":{"type":"string"},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prevalence_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"odds_ratio":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"auc":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","verite","signal","n","prevalence_pct","odds_ratio","taux_base_pct","auc","calcule_le"],"additionalProperties":false}},"decroissance":{"description":"Pré-marché : multiplicateur de l'âge du DPE (pack DPE et audit, ou DPE seul).","type":"array","items":{"type":"object","properties":{"pack":{"type":"boolean"},"age_min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"age_max":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"multiplicateur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["pack","age_min","age_max","multiplicateur"],"additionalProperties":false}},"cohortes":{"description":"Pré-marché : précision hebdomadaire des cohortes suivies.","type":"array","items":{"type":"object","properties":{"semaine":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"cohorte":{"anyOf":[{"type":"string"},{"type":"null"}]},"seuil_score":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_haut":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mise_en_vente_haut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"mise_en_vente_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_mise_en_vente":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_haut_dvf":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vendu_haut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"vendu_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_vendu":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["semaine","type_bien","cohorte","seuil_score","n_haut","mise_en_vente_haut_pct","mise_en_vente_base_pct","lift_mise_en_vente","n_haut_dvf","vendu_haut_pct","vendu_base_pct","lift_vendu","calcule_le"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["modele","titre","methode","source","mesures","calibration","coefficients","coefficients_ajustes","decroissance","cohortes","limites","qualite"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["modeles","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"references","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"modeles"}},"/modeles/{modele}":{"get":{"operationId":"modeles_2","summary":"Fiches de mesure des modèles","description":"La fiche de mesure de chaque modèle de Pillr, avec la date et l'échantillon de chaque mesure : erreur de l'estimation sur des ventes DVF (avec et sans adresse) et couverture de sa fourchette ; reproductibilité du chiffrage des travaux et de l'état visuel ; calibration du pré-marché par bande et par type de bien (taux de vente DVF à 12 mois), coefficients, coefficients ajustés et AUC, décroissance par âge du DPE, précision des cohortes ; méthode et limites du barème de prix au m² et du loyer de marché. Sans modèle, toutes les fiches. Une mesure absente se dit dans les limites, jamais par un chiffre de remplacement. Coût : 0 crédit par appel réussi.","parameters":[{"name":"modele","in":"path","required":true,"schema":{"description":"estimation, pre_marche, travaux, bareme_prix ou loyer ; sans lui, toutes les fiches.","type":"string","enum":["estimation","pre_marche","travaux","bareme_prix","loyer"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"modeles":{"type":"array","items":{"type":"object","properties":{"modele":{"type":"string","enum":["estimation","pre_marche","travaux","bareme_prix","loyer"]},"titre":{"type":"string"},"methode":{"type":"string"},"source":{"type":"string"},"mesures":{"type":"array","items":{"type":"object","properties":{"indicateur":{"type":"string"},"libelle":{"type":"string"},"valeur":{"type":"number"},"unite":{"type":"string"},"mesure_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"echantillon":{"description":"Nombre d'observations de la mesure.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"perimetre":{"description":"Sur quoi porte la mesure (avec adresse, sans adresse, type de bien...).","anyOf":[{"type":"string"},{"type":"null"}]},"hors_echantillon":{"description":"Vrai si la mesure a été faite sur des données que le modèle n'a pas vues ; null si sans objet.","anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["indicateur","libelle","valeur","unite","mesure_le","echantillon","perimetre","hors_echantillon"],"additionalProperties":false}},"calibration":{"description":"Pré-marché : taux de vente DVF à 12 mois mesuré par bande d'indice.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"bande":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"indice_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"indice_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_vente_12m_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","bande","indice_min","indice_max","n","taux_vente_12m_pct","calcule_le"],"additionalProperties":false}},"coefficients":{"description":"Pré-marché : coefficient mesuré de chaque signal.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"signal":{"type":"string"},"groupe":{"anyOf":[{"type":"string"},{"type":"null"}]},"n_dvf":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_dvf_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_dvf":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_mise_en_vente":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taux_mise_en_vente_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_mise_en_vente":{"anyOf":[{"type":"number"},{"type":"null"}]},"stable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"retenu":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","signal","groupe","n_dvf","taux_dvf_pct","lift_dvf","n_mise_en_vente","taux_mise_en_vente_pct","lift_mise_en_vente","stable","retenu","coefficient","calcule_le"],"additionalProperties":false}},"coefficients_ajustes":{"description":"Pré-marché : coefficients ajustés (rapports de cotes) et AUC du modèle.","type":"array","items":{"type":"object","properties":{"type_bien":{"type":"string"},"verite":{"description":"La vérité mesurée (vente DVF, mise en vente).","type":"string"},"signal":{"type":"string"},"n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prevalence_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"odds_ratio":{"anyOf":[{"type":"number"},{"type":"null"}]},"taux_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"auc":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_bien","verite","signal","n","prevalence_pct","odds_ratio","taux_base_pct","auc","calcule_le"],"additionalProperties":false}},"decroissance":{"description":"Pré-marché : multiplicateur de l'âge du DPE (pack DPE et audit, ou DPE seul).","type":"array","items":{"type":"object","properties":{"pack":{"type":"boolean"},"age_min":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"age_max":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"multiplicateur":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["pack","age_min","age_max","multiplicateur"],"additionalProperties":false}},"cohortes":{"description":"Pré-marché : précision hebdomadaire des cohortes suivies.","type":"array","items":{"type":"object","properties":{"semaine":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_bien":{"anyOf":[{"type":"string"},{"type":"null"}]},"cohorte":{"anyOf":[{"type":"string"},{"type":"null"}]},"seuil_score":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_haut":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"mise_en_vente_haut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"mise_en_vente_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_mise_en_vente":{"anyOf":[{"type":"number"},{"type":"null"}]},"n_haut_dvf":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"vendu_haut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"vendu_base_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"lift_vendu":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcule_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["semaine","type_bien","cohorte","seuil_score","n_haut","mise_en_vente_haut_pct","mise_en_vente_base_pct","lift_mise_en_vente","n_haut_dvf","vendu_haut_pct","vendu_base_pct","lift_vendu","calcule_le"],"additionalProperties":false}},"limites":{"type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["modele","titre","methode","source","mesures","calibration","coefficients","coefficients_ajustes","decroissance","cohortes","limites","qualite"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["modeles","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"references","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"modeles"}},"/referentiels/constantes":{"get":{"operationId":"constantes_reference","summary":"Constantes réglementaires et fiscales de référence","description":"Les seuils et taux que les moteurs de Pillr appliquent, par thème : urbanisme (seuils de la déclaration préalable, architecte, piscines), fiscalité (TVA des travaux, Malraux, Pinel, déficit et micro-foncier, régimes micro, prélèvements sociaux, impôt sur les sociétés, amortissement du bailleur privé), pré-marché (fenêtre de mandat, pack de pré-vente) et location (calendrier d'interdiction de louer les passoires énergétiques). Chacune porte sa valeur, son unité, son objet, sa source officielle ou sa mesure, et la date de la version lue. Le registre dit qu'un seuil est le bon seuil, pas qu'il s'applique à un cas donné. Coût : 0 crédit par appel réussi.","parameters":[{"name":"contexte","in":"query","required":false,"schema":{"description":"urbanisme, fiscalite, pre_marche ou location ; sans lui, toutes.","type":"string","enum":["urbanisme","fiscalite","pre_marche","location"]}},{"name":"cle","in":"query","required":false,"schema":{"description":"Une seule constante, par sa clé.","type":"string","minLength":3,"maxLength":80}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"relu_le":{"description":"Date de la dernière relecture du registre des constantes citées par le Hub.","type":"string"},"contexte":{"anyOf":[{"type":"string","enum":["urbanisme","fiscalite","pre_marche","location"]},{"type":"null"}]},"constantes":{"type":"array","items":{"type":"object","properties":{"cle":{"description":"Identifiant stable : <groupe>.<unité>.<valeur>.","type":"string"},"valeur":{"description":"Valeur telle que les moteurs l'appliquent (5,5 pour 5,5 %), ou date AAAA-MM-JJ pour une échéance.","anyOf":[{"type":"number"},{"type":"string"}]},"unite":{"description":"pct, m2, m, an, jour, eur ou date.","type":"string"},"objet":{"type":"string"},"contexte":{"type":"string","enum":["urbanisme","fiscalite","pre_marche","location"]},"groupe":{"description":"Le dispositif ou la règle (urbanisme, piscine, tva, malraux, pinel, deficit_foncier, micro_foncier...).","type":"string"},"nature":{"type":"string","enum":["reglementaire","mesure_pillr","parametre_moteur"]},"source":{"type":"object","properties":{"texte":{"type":"string"},"lien":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["texte","lien"],"additionalProperties":false},"version_le":{"description":"Date de la version lue du texte, ou de la mesure (AAAA-MM-JJ) ; null si le code ne la date pas.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cle","valeur","unite","objet","contexte","groupe","nature","source","version_le"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["relu_le","contexte","constantes","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"territoire","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"constantes_reference"}},"/flux/annonces":{"get":{"operationId":"flux_annonces","summary":"Flux d'évènements des annonces","description":"Les évènements datés du catalogue des annonces de vente, dans l'ordre où ils ont été écrits : nouvelle annonce, analyse publiée ou refaite, baisse et hausse de prix, retrait, réactivation, passage à plusieurs agences. Chaque évènement porte l'état avant et après, et l'annonce au format liste. Filtres : depuis (date), genres, communes, codes postaux, départements. Le curseur_suivant est rendu même sur la dernière page : repassez-le plus tard, avec les mêmes filtres, pour ne lire que la suite ; a_jour dit qu'il n'y a plus rien à lire pour l'instant. Les baisses de prix sont dédoublonnées au jour et au nouveau prix. Coût : 1 crédit par évènement livré.","parameters":[{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne lire que les évènements écrits depuis cette date (AAAA-MM-JJ ou horodatage ISO 8601).","type":"string","maxLength":40,"pattern":"^\\d{4}-\\d{2}-\\d{2}(?:$|[T ])"}},{"name":"genres","in":"query","required":false,"schema":{"description":"Genre, ou liste de genres (paramètre répété) ; tous si absent.","anyOf":[{"description":"nouvelle (annonce entrée au catalogue), analyse (première analyse publiée), reanalyse (analyse refaite), baisse_prix, hausse_prix, retrait (annonce retirée du portail), reactivation, multi_agences (le bien passe à deux agences ou plus).","type":"string","enum":["nouvelle","analyse","reanalyse","baisse_prix","hausse_prix","retrait","reactivation","multi_agences"]},{"minItems":1,"maxItems":8,"type":"array","items":{"description":"nouvelle (annonce entrée au catalogue), analyse (première analyse publiée), reanalyse (analyse refaite), baisse_prix, hausse_prix, retrait (annonce retirée du portail), reactivation, multi_agences (le bien passe à deux agences ou plus).","type":"string","enum":["nouvelle","analyse","reanalyse","baisse_prix","hausse_prix","retrait","reactivation","multi_agences"]}}]}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE, ou liste de 20 codes au plus (paramètre répété).","anyOf":[{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},{"minItems":1,"maxItems":20,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}]}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal, ou liste de 20 codes au plus.","anyOf":[{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},{"minItems":1,"maxItems":20,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}]}},{"name":"departement","in":"query","required":false,"schema":{"description":"Code de département, ou liste de 10 codes au plus.","anyOf":[{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"},{"minItems":1,"maxItems":10,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (1000 au plus).","default":100,"type":"integer","minimum":1,"maximum":1000}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"evenements":{"description":"Les évènements, dans l'ordre du flux.","type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"genre":{"description":"nouvelle (annonce entrée au catalogue), analyse (première analyse publiée), reanalyse (analyse refaite), baisse_prix, hausse_prix, retrait (annonce retirée du portail), reactivation, multi_agences (le bien passe à deux agences ou plus).","type":"string","enum":["nouvelle","analyse","reanalyse","baisse_prix","hausse_prix","retrait","reactivation","multi_agences"]},"le":{"description":"Horodatage de l'évènement (ISO 8601).","type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce.","type":"string"},"avant":{"anyOf":[{"description":"État de l'annonce avant ou après l'évènement.","type":"object","properties":{"prix":{"description":"Prix, en euros (baisse_prix, hausse_prix, nouvelle).","anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart du prix, en % (baisse_prix, hausse_prix).","anyOf":[{"type":"number"},{"type":"null"}]},"detecte_le":{"description":"Date de détection du changement de prix.","anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"description":"Annonce en ligne (retrait, reactivation, nouvelle).","anyOf":[{"type":"boolean"},{"type":"null"}]},"analyse_le":{"description":"Date de l'analyse (analyse, reanalyse).","anyOf":[{"type":"string"},{"type":"null"}]},"score":{"description":"Score Pillr de l'analyse (analyse, reanalyse).","anyOf":[{"type":"number"},{"type":"null"}]},"nb_agences":{"description":"Agences qui publient le bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"nb_portails":{"description":"Portails qui publient le bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_min":{"description":"Prix le plus bas entre les annonces du bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"description":"Prix le plus haut entre les annonces du bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix","ecart_pct","detecte_le","actif","analyse_le","score","nb_agences","nb_portails","prix_min","prix_max"],"additionalProperties":false},{"type":"null"}]},"apres":{"anyOf":[{"description":"État de l'annonce avant ou après l'évènement.","type":"object","properties":{"prix":{"description":"Prix, en euros (baisse_prix, hausse_prix, nouvelle).","anyOf":[{"type":"number"},{"type":"null"}]},"ecart_pct":{"description":"Écart du prix, en % (baisse_prix, hausse_prix).","anyOf":[{"type":"number"},{"type":"null"}]},"detecte_le":{"description":"Date de détection du changement de prix.","anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"description":"Annonce en ligne (retrait, reactivation, nouvelle).","anyOf":[{"type":"boolean"},{"type":"null"}]},"analyse_le":{"description":"Date de l'analyse (analyse, reanalyse).","anyOf":[{"type":"string"},{"type":"null"}]},"score":{"description":"Score Pillr de l'analyse (analyse, reanalyse).","anyOf":[{"type":"number"},{"type":"null"}]},"nb_agences":{"description":"Agences qui publient le bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"nb_portails":{"description":"Portails qui publient le bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_min":{"description":"Prix le plus bas entre les annonces du bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]},"prix_max":{"description":"Prix le plus haut entre les annonces du bien (multi_agences).","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix","ecart_pct","detecte_le","actif","analyse_le","score","nb_agences","nb_portails","prix_min","prix_max"],"additionalProperties":false},{"type":"null"}]},"annonce":{"description":"L'annonce au format liste ; null si elle n'est plus servie (doublon d'un autre portail, sortie du catalogue).","anyOf":[{"description":"L'annonce au format liste, telle que la base servie la publie au moment de la lecture.","type":"object","properties":{"id":{"description":"Identifiant Pillr de l'annonce (à repasser à /annonces/{id}).","type":"string"},"id_portail":{"description":"Identifiant chez le portail, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi avec la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Portail d'origine : lbc, bienici ou seloger.","anyOf":[{"type":"string"},{"type":"null"}]},"statut":{"description":"actif, retire ou masque.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"appartement, maison ou immeuble.","anyOf":[{"type":"string"},{"type":"null"}]},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"departement":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}]},"precision_coordonnees":{"description":"adresse, approchee, centre_commune ou inconnue.","anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"description":"Prix divisé par la surface (jamais la valeur du portail).","anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"description":"Score Pillr sur 100 ; null tant que l'annonce n'est pas analysée.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"description":"Rendement brut en %, recalculé depuis le loyer estimé et le prix.","anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"description":"Rendement net en %, recalculé sur le budget total.","anyOf":[{"type":"number"},{"type":"null"}]},"etat_visuel":{"description":"État visuel lu sur les photos, sur 100.","anyOf":[{"type":"number"},{"type":"null"}]},"premiere_parution":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"annonceur":{"description":"Le vendeur : un professionnel est nommé, un particulier jamais.","type":"object","properties":{"type_vendeur":{"description":"Statut du vendeur déclaré par le portail : pro (agence, réseau, promoteur), particulier, ou inconnu.","type":"string","enum":["pro","particulier","inconnu"]},"nom":{"description":"Nom de l'agence ou du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"enseigne":{"description":"Enseigne ou réseau du professionnel ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]},"siren":{"description":"SIREN du professionnel quand le portail le publie ; null pour un particulier.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type_vendeur","nom","enseigne","siren"],"additionalProperties":false},"drapeaux":{"description":"Ce qui doit faire lire l'annonce avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}}},"required":["id","id_portail","lien","source","statut","type","commune","code_postal","insee","departement","lat","lon","precision_coordonnees","prix","surface","pieces","prix_m2","dpe","score","rendement_brut","rendement_net","etat_visuel","premiere_parution","type_vendeur","annonceur","drapeaux"],"additionalProperties":false},{"type":"null"}]}},"required":["id","genre","le","annonce_id","avant","apres","annonce"],"additionalProperties":false}},"a_jour":{"description":"Vrai quand le flux n'a plus rien à lire pour l'instant : repassez curseur_suivant plus tard pour reprendre.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["evenements","a_jour","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"flux_annonces"}},"/flux/adresses":{"get":{"operationId":"flux_adresses","summary":"Flux de nouveautés à l'adresse","description":"Les nouveautés datées à l'adresse, lues dans le journal tenu chaque nuit après la reconstruction de la donnée à l'adresse : nouveau DPE, nouvel audit énergétique, nouvelle autorisation d'urbanisme, nouvel avis d'une société civile au siège, nouvelle vente DVF. Chaque évènement porte la clé BAN, la date à la source, le détail et la source publique. Filtres : depuis (date d'entrée au journal), genres, communes, codes postaux. Le curseur_suivant est rendu même sur la dernière page : repassez-le plus tard, avec les mêmes filtres, pour ne lire que la suite. Coût : 1 crédit par évènement livré.","parameters":[{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne lire que les évènements entrés au journal depuis cette date.","type":"string","maxLength":40,"pattern":"^\\d{4}-\\d{2}-\\d{2}(?:$|[T ])"}},{"name":"genres","in":"query","required":false,"schema":{"description":"Genre, ou liste de genres ; tous si absent.","anyOf":[{"description":"dpe (nouveau DPE), audit (nouvel audit énergétique), permis (nouvelle autorisation d'urbanisme), societe_civile (nouvel avis d'une société civile au siège), vente (nouvelle vente DVF).","type":"string","enum":["dpe","audit","permis","societe_civile","vente"]},{"minItems":1,"maxItems":5,"type":"array","items":{"description":"dpe (nouveau DPE), audit (nouvel audit énergétique), permis (nouvelle autorisation d'urbanisme), societe_civile (nouvel avis d'une société civile au siège), vente (nouvelle vente DVF).","type":"string","enum":["dpe","audit","permis","societe_civile","vente"]}}]}},{"name":"insee","in":"query","required":false,"schema":{"description":"Code INSEE, ou liste de 20 codes au plus (paramètre répété).","anyOf":[{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},{"minItems":1,"maxItems":20,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}}]}},{"name":"cp","in":"query","required":false,"schema":{"description":"Code postal, ou liste de 20 codes au plus.","anyOf":[{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},{"minItems":1,"maxItems":20,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (1000 au plus).","default":100,"type":"integer","minimum":1,"maximum":1000}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"evenements":{"description":"Les évènements, dans l'ordre du journal.","type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"le":{"description":"Date de l'évènement à la source (AAAA-MM-JJ).","type":"string"},"journalise_le":{"description":"Horodatage de l'entrée au journal (ISO 8601).","type":"string"},"cle_ban":{"description":"Clé BAN de l'adresse.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique, en clair.","type":"string"},"genre":{"type":"string","const":"dpe"},"detail":{"type":"object","properties":{"etiquette":{"anyOf":[{"type":"string"},{"type":"null"}]},"ges":{"anyOf":[{"type":"string"},{"type":"null"}]},"conso_kwh_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"numero_dpe":{"anyOf":[{"type":"string"},{"type":"null"}]},"type_batiment":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["etiquette","ges","conso_kwh_m2","numero_dpe","type_batiment"],"additionalProperties":false}},"required":["id","le","journalise_le","cle_ban","insee","code_postal","source","genre","detail"],"additionalProperties":false},{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"le":{"description":"Date de l'évènement à la source (AAAA-MM-JJ).","type":"string"},"journalise_le":{"description":"Horodatage de l'entrée au journal (ISO 8601).","type":"string"},"cle_ban":{"description":"Clé BAN de l'adresse.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique, en clair.","type":"string"},"genre":{"type":"string","const":"audit"},"detail":{"type":"object","properties":{"classe_visee":{"anyOf":[{"type":"string"},{"type":"null"}]},"cout_travaux_max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["classe_visee","cout_travaux_max"],"additionalProperties":false}},"required":["id","le","journalise_le","cle_ban","insee","code_postal","source","genre","detail"],"additionalProperties":false},{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"le":{"description":"Date de l'évènement à la source (AAAA-MM-JJ).","type":"string"},"journalise_le":{"description":"Horodatage de l'entrée au journal (ISO 8601).","type":"string"},"cle_ban":{"description":"Clé BAN de l'adresse.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique, en clair.","type":"string"},"genre":{"type":"string","const":"permis"},"detail":{"type":"object","properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"nature":{"anyOf":[{"type":"string"},{"type":"null"}]},"logements_crees_7a":{"description":"Logements créés à l'adresse sur 7 ans.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["type","nature","logements_crees_7a"],"additionalProperties":false}},"required":["id","le","journalise_le","cle_ban","insee","code_postal","source","genre","detail"],"additionalProperties":false},{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"le":{"description":"Date de l'évènement à la source (AAAA-MM-JJ).","type":"string"},"journalise_le":{"description":"Horodatage de l'entrée au journal (ISO 8601).","type":"string"},"cle_ban":{"description":"Clé BAN de l'adresse.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique, en clair.","type":"string"},"genre":{"type":"string","const":"societe_civile"},"detail":{"type":"object","properties":{"avis":{"description":"Nature du dernier avis publié.","anyOf":[{"type":"string"},{"type":"null"}]},"denomination":{"description":"Dénomination de la société civile.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avis","denomination"],"additionalProperties":false}},"required":["id","le","journalise_le","cle_ban","insee","code_postal","source","genre","detail"],"additionalProperties":false},{"type":"object","properties":{"id":{"description":"Identifiant de l'évènement, croissant dans l'ordre du flux.","type":"string"},"le":{"description":"Date de l'évènement à la source (AAAA-MM-JJ).","type":"string"},"journalise_le":{"description":"Horodatage de l'entrée au journal (ISO 8601).","type":"string"},"cle_ban":{"description":"Clé BAN de l'adresse.","type":"string"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique, en clair.","type":"string"},"genre":{"type":"string","const":"vente"},"detail":{"type":"object","properties":{"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["prix","type","surface","prix_m2"],"additionalProperties":false}},"required":["id","le","journalise_le","cle_ban","insee","code_postal","source","genre","detail"],"additionalProperties":false}]}},"a_jour":{"description":"Vrai quand le journal n'a plus rien à lire pour l'instant : repassez curseur_suivant plus tard pour reprendre.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["evenements","a_jour","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"flux_adresses"}},"/webhooks":{"post":{"operationId":"webhooks_creer","summary":"Créer un abonnement webhook","description":"Abonne une URL https aux évènements du flux des annonces (genres et filtres au choix), à la fin des opérations asynchrones de l'organisation, et aux résultats des veilles et des alertes que l'organisation a créées par l'API (livrés 15 minutes au moins après leur remontée, au format de resultats_veilles). Chaque livraison est un POST JSON signé par l'en-tête Pillr-Signature (t=horodatage, v1=HMAC-SHA256 du texte « horodatage.corps » avec le secret de l'abonnement), reprise à 1 min, 5 min, 30 min, 2 h et 12 h en cas d'échec ; l'abonnement est coupé après 50 échecs consécutifs. Le secret n'est affiché qu'à la création. Chaque évènement d'annonce et chaque résultat livré est débité au barème evenement (1 crédit). Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"URL https publique qui recevra les livraisons.","type":"string","maxLength":500},"genres":{"description":"Les genres suivis.","minItems":1,"maxItems":10,"type":"array","items":{"description":"Un genre du flux des annonces, la fin d'une opération asynchrone (tache.terminee, tache.echouee), ou un résultat d'une veille ou d'une alerte créée par l'API pour l'organisation (veille.resultat, alerte.resultat).","type":"string","enum":["nouvelle","analyse","reanalyse","baisse_prix","hausse_prix","retrait","reactivation","multi_agences","tache.terminee","tache.echouee","veille.resultat","alerte.resultat"]}},"filtres":{"description":"Filtres des évènements d'annonces ; tous facultatifs, combinés en ET.","type":"object","properties":{"insee":{"description":"Codes INSEE (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},"cp":{"description":"Codes postaux (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},"departement":{"description":"Départements (20 au plus).","maxItems":20,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},"type_bien":{"description":"Types de bien du catalogue.","maxItems":3,"type":"array","items":{"type":"string","enum":["apartment","house","immeuble"]}},"prix_min":{"type":"integer","minimum":0,"maximum":9007199254740991},"prix_max":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"required":["url","genres"],"additionalProperties":false}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"genres":{"type":"array","items":{"type":"string"}},"filtres":{"description":"Filtres des évènements d'annonces ; tous facultatifs, combinés en ET.","type":"object","properties":{"insee":{"description":"Codes INSEE (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},"cp":{"description":"Codes postaux (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},"departement":{"description":"Départements (20 au plus).","maxItems":20,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},"type_bien":{"description":"Types de bien du catalogue.","maxItems":3,"type":"array","items":{"type":"string","enum":["apartment","house","immeuble"]}},"prix_min":{"type":"integer","minimum":0,"maximum":9007199254740991},"prix_max":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"actif":{"type":"boolean"},"echecs_consecutifs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coupe_le":{"description":"Date de la coupure automatique, après trop d'échecs consécutifs.","anyOf":[{"type":"string"},{"type":"null"}]},"motif_coupure":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"type":"string"},"dernieres_livraisons":{"description":"Les dernières livraisons, les plus récentes d'abord.","type":"array","items":{"type":"object","properties":{"le":{"type":"string"},"genre":{"type":"string"},"statut":{"type":"string","enum":["a_livrer","en_cours","livree","echec","epuisee"]},"tentatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reponse":{"description":"Dernier code HTTP reçu de votre serveur.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["le","genre","statut","tentatives","reponse"],"additionalProperties":false}}},"required":["id","url","genres","filtres","actif","echecs_consecutifs","coupe_le","motif_coupure","cree_le","dernieres_livraisons"],"additionalProperties":false},"secret":{"description":"Secret de signature de cet abonnement, affiché cette seule fois : gardez-le pour vérifier l'en-tête Pillr-Signature.","type":"string"},"signature":{"description":"Comment vérifier une livraison, en clair.","type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["webhook","secret","signature","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"webhooks","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"webhooks_creer","x-pillr-ecriture":true},"get":{"operationId":"webhooks_lister","summary":"Abonnements webhook de l'organisation","description":"Les abonnements webhook de l'organisation, sans leur secret, avec leur état (actif ou coupé, échecs consécutifs) et leurs dernières livraisons. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"webhooks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"genres":{"type":"array","items":{"type":"string"}},"filtres":{"description":"Filtres des évènements d'annonces ; tous facultatifs, combinés en ET.","type":"object","properties":{"insee":{"description":"Codes INSEE (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},"cp":{"description":"Codes postaux (50 au plus).","maxItems":50,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},"departement":{"description":"Départements (20 au plus).","maxItems":20,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},"type_bien":{"description":"Types de bien du catalogue.","maxItems":3,"type":"array","items":{"type":"string","enum":["apartment","house","immeuble"]}},"prix_min":{"type":"integer","minimum":0,"maximum":9007199254740991},"prix_max":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"actif":{"type":"boolean"},"echecs_consecutifs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coupe_le":{"description":"Date de la coupure automatique, après trop d'échecs consécutifs.","anyOf":[{"type":"string"},{"type":"null"}]},"motif_coupure":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"type":"string"},"dernieres_livraisons":{"description":"Les dernières livraisons, les plus récentes d'abord.","type":"array","items":{"type":"object","properties":{"le":{"type":"string"},"genre":{"type":"string"},"statut":{"type":"string","enum":["a_livrer","en_cours","livree","echec","epuisee"]},"tentatives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reponse":{"description":"Dernier code HTTP reçu de votre serveur.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["le","genre","statut","tentatives","reponse"],"additionalProperties":false}}},"required":["id","url","genres","filtres","actif","echecs_consecutifs","coupe_le","motif_coupure","cree_le","dernieres_livraisons"],"additionalProperties":false}},"max":{"description":"Abonnements permis par le plan de l'organisation.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["webhooks","max","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"webhooks","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"webhooks"}},"/webhooks/{id}":{"delete":{"operationId":"webhooks_supprimer","summary":"Supprimer un abonnement webhook","description":"Supprime un abonnement webhook de l'organisation et ses livraisons en attente. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'abonnement.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"supprime":{"type":"boolean","const":true},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","supprime","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"webhooks","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"webhooks_supprimer","x-pillr-ecriture":true}},"/webhooks/{id}/test":{"post":{"operationId":"webhooks_tester","summary":"Tester un abonnement webhook","description":"Envoie tout de suite à l'URL de l'abonnement une livraison d'essai signée (genre test), sans reprise, et rend le code HTTP reçu. Un essai réussi réactive un abonnement coupé. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'abonnement.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"reussi":{"description":"Vrai si votre serveur a répondu par un code 2xx.","type":"boolean"},"statut_http":{"description":"Code HTTP reçu ; null si votre serveur n'a pas répondu.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"duree_ms":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"erreur":{"description":"Pourquoi la livraison n'a pas abouti ; null si elle a abouti.","anyOf":[{"type":"string"},{"type":"null"}]},"reactive":{"description":"Vrai si l'abonnement était coupé et a été réactivé par ce test réussi.","type":"boolean"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","reussi","statut_http","duree_ms","erreur","reactive","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"webhooks","x-pillr-palier-minimal":"data","x-pillr-outil-mcp":"webhooks_tester","x-pillr-ecriture":true}},"/veilles":{"post":{"operationId":"veilles_creer","summary":"Créer un agent de veille","description":"Crée un agent de veille sur les annonces, rattaché au compte de la clé : à partir d'une mission en langage naturel, traduite en pré-filtre par un modèle de langage, ou de critères exacts (recherche), sans modèle. L'agent remonte chaque jour les nouvelles annonces qui collent, jugées contre la mission par le juge IA ; ses résultats se lisent par resultats_veilles. Le compte garde un plafond d'agents actifs. Un agent créé par l'API est rattaché à l'organisation de la clé et débité, tant qu'il est actif, de 1 crédit par jour (barème veille_jour). Exige une clé rattachée à un compte Pillr. Coût : 20 crédits par appel réussi ; 0 crédit par appel réussi avec des critères exacts (recherche).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mission":{"description":"Ce que l'agent surveille, en une phrase.","type":"string","minLength":3,"maxLength":500},"recherche":{"description":"Critères exacts, sans interprétation par un modèle.","type":"object","properties":{"communes":{"description":"Noms de communes (le moteur des veilles suit les communes par leur nom).","maxItems":60,"type":"array","items":{"type":"string","minLength":2,"maxLength":80}},"cp":{"maxItems":60,"type":"array","items":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"}},"departement":{"maxItems":20,"type":"array","items":{"description":"Code du département (01 à 95, 2A, 2B, 971 à 976).","type":"string","pattern":"^(?:\\d{2}|2[AB]|97\\d)$"}},"autour":{"description":"Un cercle autour d'un point ; il remplace les communes.","type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"rayon_km":{"type":"number","minimum":0.5,"maximum":100}},"required":["lat","lon","rayon_km"],"additionalProperties":false},"type":{"type":"string","enum":["appartement","maison","immeuble"]},"prix_min":{"type":"number","minimum":0},"prix_max":{"type":"number","minimum":0},"surface_min":{"type":"number","minimum":0},"surface_max":{"type":"number","minimum":0},"pieces_min":{"type":"integer","minimum":0,"maximum":50},"pieces_max":{"type":"integer","minimum":0,"maximum":50},"prix_m2_min":{"type":"number","minimum":0},"prix_m2_max":{"type":"number","minimum":0},"terrain_min":{"type":"number","minimum":0},"terrain_max":{"type":"number","minimum":0},"travaux_min":{"type":"number","minimum":0},"travaux_max":{"type":"number","minimum":0},"rendement_min":{"description":"Rendement brut minimal, en %.","type":"number","minimum":0,"maximum":100},"rendement_net_min":{"type":"number","minimum":0,"maximum":100},"score_min":{"type":"number","minimum":0,"maximum":100},"dpe_max":{"description":"Pire DPE accepté.","type":"string","enum":["A","B","C","D","E","F","G"]},"exclure_residences_gerees":{"type":"boolean"}},"additionalProperties":false},"nom":{"type":"string","minLength":1,"maxLength":120},"frequence":{"description":"immediate, daily (défaut) ou weekly : cadence des notifications du compte.","type":"string","enum":["immediate","daily","weekly"]},"signaux":{"description":"Les signaux suivis par l'agent.","type":"object","properties":{"nouvelles":{"description":"Nouvelles annonces qui correspondent (vrai par défaut).","type":"boolean"},"baisses":{"description":"Baisses de prix des annonces qui correspondent (faux par défaut).","type":"boolean"},"negociation":{"description":"Annonces dont la décote par rapport à la cible de négociation est forte (faux par défaut).","type":"boolean"}},"additionalProperties":false},"actif":{"description":"Faux : l'agent est créé en pause (vrai par défaut).","type":"boolean"}},"additionalProperties":false,"required":[]}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"veille":{"type":"object","properties":{"id":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"mission":{"description":"Intention en langage naturel, lue chaque jour par le juge IA.","anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"type":"boolean"},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"criteres":{"description":"Les critères enregistrés, en clair, relus sur la ligne enregistrée.","type":"array","items":{"type":"string"}},"dernier_jugement_ia":{"anyOf":[{"type":"string"},{"type":"null"}]},"biens_7j":{"description":"Biens remontés par l'agent sur les 7 derniers jours.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","nom","mission","actif","frequence","criteres","dernier_jugement_ia","biens_7j","cree_le"],"additionalProperties":false},"non_repris":{"description":"Ce que le moteur des veilles ne filtre pas et que seul le juge IA lit dans la mission.","type":"array","items":{"type":"string"}},"vivier":{"description":"Annonces analysées qui collent déjà au pré-filtre ; null s'il n'a pas pu être compté.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["veille","non_repris","vivier","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":20,"x-pillr-unite":"appel","x-pillr-tarifs":[{"credits":0,"unite":"appel","quand":"avec des critères exacts (recherche)"}],"x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"veilles_creer","x-pillr-compte":true,"x-pillr-ecriture":true},"get":{"operationId":"veilles_lister","summary":"Agents de veille du compte","description":"Les agents de veille du compte de la clé, actifs d'abord : mission, critères enregistrés, date du dernier jugement IA et biens remontés sur 7 jours. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"veilles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"mission":{"description":"Intention en langage naturel, lue chaque jour par le juge IA.","anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"type":"boolean"},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"criteres":{"description":"Les critères enregistrés, en clair, relus sur la ligne enregistrée.","type":"array","items":{"type":"string"}},"dernier_jugement_ia":{"anyOf":[{"type":"string"},{"type":"null"}]},"biens_7j":{"description":"Biens remontés par l'agent sur les 7 derniers jours.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","nom","mission","actif","frequence","criteres","dernier_jugement_ia","biens_7j","cree_le"],"additionalProperties":false}},"actives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_actives":{"description":"Agents actifs permis au compte.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["veilles","actives","max_actives","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"veilles","x-pillr-compte":true}},"/veilles/{id}":{"patch":{"operationId":"veilles_modifier","summary":"Modifier un agent de veille","description":"Met un agent de veille en pause ou le réactive, le renomme, change sa mission ou sa fréquence. Une réactivation respecte le plafond d'agents actifs du compte. Le même appel répété laisse le même état. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'agent.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actif":{"type":"boolean"},"nom":{"type":"string","minLength":1,"maxLength":120},"mission":{"type":"string","minLength":3,"maxLength":500},"frequence":{"type":"string","enum":["immediate","daily","weekly"]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"veille":{"type":"object","properties":{"id":{"type":"string"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"mission":{"description":"Intention en langage naturel, lue chaque jour par le juge IA.","anyOf":[{"type":"string"},{"type":"null"}]},"actif":{"type":"boolean"},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"criteres":{"description":"Les critères enregistrés, en clair, relus sur la ligne enregistrée.","type":"array","items":{"type":"string"}},"dernier_jugement_ia":{"anyOf":[{"type":"string"},{"type":"null"}]},"biens_7j":{"description":"Biens remontés par l'agent sur les 7 derniers jours.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","nom","mission","actif","frequence","criteres","dernier_jugement_ia","biens_7j","cree_le"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["veille","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"veilles_modifier","x-pillr-compte":true,"x-pillr-ecriture":true}},"/alertes/zones":{"post":{"operationId":"alertes_zone_creer","summary":"Créer un suivi de zone","description":"Crée un suivi de zone rattaché au compte de la clé : une commune, un code INSEE, un code postal, un disque autour d'un point, une liste de communes ou une intercommunalité (une alerte par commune). Trois volets, actifs par défaut : le pré-marché (adresses dont la priorité dépasse le seuil), les annonces de particuliers qui stagnent, baissent ou republient, et les signaux marché (baisses de la veille, passages en multi-mandat). Passage chaque nuit, quotidien ou hebdomadaire ; le premier a lieu le lendemain matin. Rien n'est créé si le secteur dépasse les places libres sous le plafond des suivis actifs du compte. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commune":{"description":"Nom de la commune suivie.","type":"string","minLength":1,"maxLength":80},"insee":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"cp":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},"autour":{"description":"Un disque autour d'un point : le seul moyen d'enregistrer un rayon.","type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"rayon_km":{"description":"Rayon en km (borné par le moteur des alertes).","type":"number","exclusiveMinimum":0}},"required":["lat","lon"],"additionalProperties":false},"type_bien":{"type":"string","enum":["maison","appartement","tous"]},"nom":{"type":"string","minLength":1,"maxLength":120},"communes":{"description":"Plusieurs communes, noms ou codes INSEE : une alerte chacune.","minItems":1,"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"intercommunalite":{"description":"Nom ou SIREN d'une intercommunalité : une alerte par commune membre.","type":"string","minLength":2,"maxLength":120},"pre_marche":{"type":"boolean"},"seuil_priorite_pct":{"description":"Seuil de priorité du volet pré-marché, en %.","type":"integer","minimum":5,"maximum":90},"particuliers":{"type":"boolean"},"jours_min":{"description":"Ancienneté à partir de laquelle une annonce de particulier stagne, en jours.","type":"integer","minimum":15,"maximum":180},"marche":{"type":"boolean"},"baisses":{"type":"boolean"},"multi_mandat":{"type":"boolean"},"frequence":{"type":"string","enum":["quotidien","hebdomadaire"]}},"additionalProperties":false,"required":[]}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"alertes":{"description":"Les alertes créées : une par commune pour une liste de communes ou une intercommunalité.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"formule":{"type":"string","enum":["suivi_de_zone","pre_marche_seul"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"secteur":{"description":"Le secteur en une ligne (« Gex · tous biens »).","anyOf":[{"type":"string"},{"type":"null"}]},"volets":{"description":"Ce que l'alerte surveille, en clair, une phrase par volet actif.","type":"array","items":{"type":"string"}},"seuil_priorite_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"jours_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"active":{"type":"boolean"},"par_courriel":{"description":"Vrai si les résultats partent aussi dans le courriel du matin du compte.","type":"boolean"},"dernier_passage":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","formule","nom","secteur","volets","seuil_priorite_pct","jours_min","frequence","active","par_courriel","dernier_passage","cree_le"],"additionalProperties":false}},"perimetre_enregistre":{"description":"Ce que la ou les alertes surveillent réellement, relu sur ce qui a été enregistré.","type":"object","properties":{"communes":{"type":"array","items":{"type":"object","properties":{"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","insee"],"additionalProperties":false}},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"rayon":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"rayon_km":{"type":"number"}},"required":["lat","lon","rayon_km"],"additionalProperties":false},{"type":"null"}]},"type_bien":{"type":"string"},"phrase":{"description":"Le périmètre enregistré, en clair.","type":"string"}},"required":["communes","code_postal","rayon","type_bien","phrase"],"additionalProperties":false},"deja_suivies":{"description":"Communes déjà suivies par une alerte active, non recréées.","type":"array","items":{"type":"string"}},"introuvables":{"type":"array","items":{"type":"string"}},"non_creees":{"type":"array","items":{"type":"object","properties":{"commune":{"type":"string"},"raison":{"type":"string"}},"required":["commune","raison"],"additionalProperties":false}},"doublon_possible":{"description":"Nom d'une alerte active qui couvre déjà ce secteur ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["alertes","perimetre_enregistre","deja_suivies","introuvables","non_creees","doublon_possible","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"alertes_zone_creer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/alertes/pre-marche":{"post":{"operationId":"alertes_pre_marche_creer","summary":"Créer une veille pré-marché","description":"Crée une veille pré-marché rattachée au compte de la clé, sur un secteur (commune, code INSEE, code postal ou disque autour d'un point) : chaque nuit, les nouvelles adresses dont la priorité dépasse le seuil. Le compte garde un plafond de veilles pré-marché actives. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commune":{"description":"Nom de la commune suivie.","type":"string","minLength":1,"maxLength":80},"insee":{"description":"Code INSEE de la commune ou de l'arrondissement (5 caractères, 2A ou 2B pour la Corse).","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"cp":{"description":"Code postal.","type":"string","pattern":"^\\d{5}$"},"autour":{"description":"Un disque autour d'un point : le seul moyen d'enregistrer un rayon.","type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"rayon_km":{"description":"Rayon en km (borné par le moteur des alertes).","type":"number","exclusiveMinimum":0}},"required":["lat","lon"],"additionalProperties":false},"type_bien":{"type":"string","enum":["maison","appartement","tous"]},"nom":{"type":"string","minLength":1,"maxLength":120},"seuil_priorite_pct":{"description":"Seuil de priorité, en %.","type":"integer","minimum":5,"maximum":90}},"additionalProperties":false,"required":[]}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"alertes":{"description":"Les alertes créées : une par commune pour une liste de communes ou une intercommunalité.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"formule":{"type":"string","enum":["suivi_de_zone","pre_marche_seul"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"secteur":{"description":"Le secteur en une ligne (« Gex · tous biens »).","anyOf":[{"type":"string"},{"type":"null"}]},"volets":{"description":"Ce que l'alerte surveille, en clair, une phrase par volet actif.","type":"array","items":{"type":"string"}},"seuil_priorite_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"jours_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"active":{"type":"boolean"},"par_courriel":{"description":"Vrai si les résultats partent aussi dans le courriel du matin du compte.","type":"boolean"},"dernier_passage":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","formule","nom","secteur","volets","seuil_priorite_pct","jours_min","frequence","active","par_courriel","dernier_passage","cree_le"],"additionalProperties":false}},"perimetre_enregistre":{"description":"Ce que la ou les alertes surveillent réellement, relu sur ce qui a été enregistré.","type":"object","properties":{"communes":{"type":"array","items":{"type":"object","properties":{"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"insee":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["commune","insee"],"additionalProperties":false}},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"rayon":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"rayon_km":{"type":"number"}},"required":["lat","lon","rayon_km"],"additionalProperties":false},{"type":"null"}]},"type_bien":{"type":"string"},"phrase":{"description":"Le périmètre enregistré, en clair.","type":"string"}},"required":["communes","code_postal","rayon","type_bien","phrase"],"additionalProperties":false},"deja_suivies":{"description":"Communes déjà suivies par une alerte active, non recréées.","type":"array","items":{"type":"string"}},"introuvables":{"type":"array","items":{"type":"string"}},"non_creees":{"type":"array","items":{"type":"object","properties":{"commune":{"type":"string"},"raison":{"type":"string"}},"required":["commune","raison"],"additionalProperties":false}},"doublon_possible":{"description":"Nom d'une alerte active qui couvre déjà ce secteur ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["alertes","perimetre_enregistre","deja_suivies","introuvables","non_creees","doublon_possible","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"alertes_pre_marche_creer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/alertes":{"get":{"operationId":"alertes_lister","summary":"Alertes du compte","description":"Les suivis de zone et les veilles pré-marché du compte de la clé, actives d'abord : secteur, volets suivis, seuils, fréquence et dernier passage. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"alertes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"formule":{"type":"string","enum":["suivi_de_zone","pre_marche_seul"]},"nom":{"anyOf":[{"type":"string"},{"type":"null"}]},"secteur":{"description":"Le secteur en une ligne (« Gex · tous biens »).","anyOf":[{"type":"string"},{"type":"null"}]},"volets":{"description":"Ce que l'alerte surveille, en clair, une phrase par volet actif.","type":"array","items":{"type":"string"}},"seuil_priorite_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"jours_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"active":{"type":"boolean"},"par_courriel":{"description":"Vrai si les résultats partent aussi dans le courriel du matin du compte.","type":"boolean"},"dernier_passage":{"anyOf":[{"type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","formule","nom","secteur","volets","seuil_priorite_pct","jours_min","frequence","active","par_courriel","dernier_passage","cree_le"],"additionalProperties":false}},"actives_zone":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_zone":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"actives_pre_marche":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max_pre_marche":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["alertes","actives_zone","max_zone","actives_pre_marche","max_pre_marche","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"alertes","x-pillr-compte":true}},"/alertes/{id}":{"delete":{"operationId":"alertes_supprimer","summary":"Supprimer une alerte","description":"Supprime un suivi de zone ou une veille pré-marché du compte de la clé, avec ses résultats. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de l'alerte.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"formule":{"type":"string","enum":["suivi_de_zone","pre_marche_seul"]},"supprimee":{"type":"boolean","const":true},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","formule","supprimee","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"pre_marche","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"alertes_supprimer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/resultats":{"get":{"operationId":"resultats_veilles","summary":"Résultats des veilles et des alertes","description":"Ce que les veilles et les alertes du compte de la clé ont remonté, du plus ancien au plus récent : pour un agent de veille, les annonces retenues avec le signal et la raison du juge IA ; pour un suivi de zone, les signaux par volet avec leur clé, leur score et leur instantané ; pour une veille pré-marché, les adresses avec leur priorité et leur probabilité. Chaque résultat dit s'il est déjà parti dans une notification du compte. Un crédit par résultat rendu, sauf un résultat déjà livré et débité par un abonnement webhook. Exige une clé rattachée à un compte Pillr. Coût : 1 crédit par évènement livré.","parameters":[{"name":"depuis","in":"query","required":false,"schema":{"description":"Ne lire que les résultats remontés depuis cette date.","type":"string","maxLength":40,"pattern":"^\\d{4}-\\d{2}-\\d{2}(?:$|[T ])"}},{"name":"genre","in":"query","required":false,"schema":{"type":"string","enum":["annonce","signal_zone","adresse_pre_marche"]}},{"name":"volet","in":"query","required":false,"schema":{"description":"Volet d'un suivi de zone.","type":"string","enum":["pre_marche","particuliers","marche"]}},{"name":"non_notifies","in":"query","required":false,"schema":{"description":"Vrai : seulement les résultats pas encore notifiés.","anyOf":[{"type":"boolean"},{"type":"string"}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Les résultats, du plus ancien au plus récent.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"alerte_id":{"description":"Identifiant de la veille ou de l'alerte qui a remonté ce résultat.","type":"string"},"genre":{"description":"annonce (agent de veille), signal_zone (suivi de zone) ou adresse_pre_marche (veille pré-marché).","type":"string","enum":["annonce","signal_zone","adresse_pre_marche"]},"annonce_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"volet":{"description":"Volet d'un suivi de zone : pre_marche, particuliers ou marche.","anyOf":[{"type":"string"},{"type":"null"}]},"signal":{"description":"Le signal : new, price_drop, nego, multi_agency, ai (veilles) ; pre_marche, stagne, baisse_pap, republie, baisse, multi_mandat (zones).","anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"description":"Le contexte du signal (ancien et nouveau prix, décote, raison du juge IA).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"score":{"description":"Ordre d'affichage dans le volet d'un suivi de zone.","anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"description":"Priorité d'une adresse du pré-marché (probabilité de mise en vente multipliée par la fenêtre de mandat).","anyOf":[{"type":"number"},{"type":"null"}]},"p_mise_en_vente_6m":{"description":"Probabilité de mise en vente sous 6 mois d'une adresse du pré-marché.","anyOf":[{"type":"number"},{"type":"null"}]},"instantane":{"description":"L'annonce ou l'adresse telle qu'elle était au moment du signal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"le":{"description":"Date du résultat.","type":"string"},"notifie":{"description":"Vrai si ce résultat est déjà parti dans une notification du compte.","type":"boolean"},"livre_par_webhook":{"description":"Vrai si ce résultat a déjà été livré et débité par un abonnement webhook : il n'est pas débité de nouveau.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","alerte_id","genre","annonce_id","cle_ban","volet","signal","detail","score","priorite","p_mise_en_vente_6m","instantane","le","notifie","livre_par_webhook","qualite"],"additionalProperties":false}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resultats_veilles","x-pillr-compte":true}},"/veilles/{veille}/resultats":{"get":{"operationId":"resultats_veilles_2","summary":"Résultats des veilles et des alertes","description":"Ce que les veilles et les alertes du compte de la clé ont remonté, du plus ancien au plus récent : pour un agent de veille, les annonces retenues avec le signal et la raison du juge IA ; pour un suivi de zone, les signaux par volet avec leur clé, leur score et leur instantané ; pour une veille pré-marché, les adresses avec leur priorité et leur probabilité. Chaque résultat dit s'il est déjà parti dans une notification du compte. Un crédit par résultat rendu, sauf un résultat déjà livré et débité par un abonnement webhook. Exige une clé rattachée à un compte Pillr. Coût : 1 crédit par évènement livré.","parameters":[{"name":"veille","in":"path","required":true,"schema":{"description":"Identifiant d'un agent de veille.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Les résultats, du plus ancien au plus récent.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"alerte_id":{"description":"Identifiant de la veille ou de l'alerte qui a remonté ce résultat.","type":"string"},"genre":{"description":"annonce (agent de veille), signal_zone (suivi de zone) ou adresse_pre_marche (veille pré-marché).","type":"string","enum":["annonce","signal_zone","adresse_pre_marche"]},"annonce_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"volet":{"description":"Volet d'un suivi de zone : pre_marche, particuliers ou marche.","anyOf":[{"type":"string"},{"type":"null"}]},"signal":{"description":"Le signal : new, price_drop, nego, multi_agency, ai (veilles) ; pre_marche, stagne, baisse_pap, republie, baisse, multi_mandat (zones).","anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"description":"Le contexte du signal (ancien et nouveau prix, décote, raison du juge IA).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"score":{"description":"Ordre d'affichage dans le volet d'un suivi de zone.","anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"description":"Priorité d'une adresse du pré-marché (probabilité de mise en vente multipliée par la fenêtre de mandat).","anyOf":[{"type":"number"},{"type":"null"}]},"p_mise_en_vente_6m":{"description":"Probabilité de mise en vente sous 6 mois d'une adresse du pré-marché.","anyOf":[{"type":"number"},{"type":"null"}]},"instantane":{"description":"L'annonce ou l'adresse telle qu'elle était au moment du signal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"le":{"description":"Date du résultat.","type":"string"},"notifie":{"description":"Vrai si ce résultat est déjà parti dans une notification du compte.","type":"boolean"},"livre_par_webhook":{"description":"Vrai si ce résultat a déjà été livré et débité par un abonnement webhook : il n'est pas débité de nouveau.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","alerte_id","genre","annonce_id","cle_ban","volet","signal","detail","score","priorite","p_mise_en_vente_6m","instantane","le","notifie","livre_par_webhook","qualite"],"additionalProperties":false}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resultats_veilles","x-pillr-compte":true}},"/alertes/{alerte}/resultats":{"get":{"operationId":"resultats_veilles_3","summary":"Résultats des veilles et des alertes","description":"Ce que les veilles et les alertes du compte de la clé ont remonté, du plus ancien au plus récent : pour un agent de veille, les annonces retenues avec le signal et la raison du juge IA ; pour un suivi de zone, les signaux par volet avec leur clé, leur score et leur instantané ; pour une veille pré-marché, les adresses avec leur priorité et leur probabilité. Chaque résultat dit s'il est déjà parti dans une notification du compte. Un crédit par résultat rendu, sauf un résultat déjà livré et débité par un abonnement webhook. Exige une clé rattachée à un compte Pillr. Coût : 1 crédit par évènement livré.","parameters":[{"name":"alerte","in":"path","required":true,"schema":{"description":"Identifiant d'un suivi de zone ou d'une veille pré-marché.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"resultats":{"description":"Les résultats, du plus ancien au plus récent.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"alerte_id":{"description":"Identifiant de la veille ou de l'alerte qui a remonté ce résultat.","type":"string"},"genre":{"description":"annonce (agent de veille), signal_zone (suivi de zone) ou adresse_pre_marche (veille pré-marché).","type":"string","enum":["annonce","signal_zone","adresse_pre_marche"]},"annonce_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"cle_ban":{"anyOf":[{"type":"string"},{"type":"null"}]},"volet":{"description":"Volet d'un suivi de zone : pre_marche, particuliers ou marche.","anyOf":[{"type":"string"},{"type":"null"}]},"signal":{"description":"Le signal : new, price_drop, nego, multi_agency, ai (veilles) ; pre_marche, stagne, baisse_pap, republie, baisse, multi_mandat (zones).","anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"description":"Le contexte du signal (ancien et nouveau prix, décote, raison du juge IA).","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"score":{"description":"Ordre d'affichage dans le volet d'un suivi de zone.","anyOf":[{"type":"number"},{"type":"null"}]},"priorite":{"description":"Priorité d'une adresse du pré-marché (probabilité de mise en vente multipliée par la fenêtre de mandat).","anyOf":[{"type":"number"},{"type":"null"}]},"p_mise_en_vente_6m":{"description":"Probabilité de mise en vente sous 6 mois d'une adresse du pré-marché.","anyOf":[{"type":"number"},{"type":"null"}]},"instantane":{"description":"L'annonce ou l'adresse telle qu'elle était au moment du signal.","anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"le":{"description":"Date du résultat.","type":"string"},"notifie":{"description":"Vrai si ce résultat est déjà parti dans une notification du compte.","type":"boolean"},"livre_par_webhook":{"description":"Vrai si ce résultat a déjà été livré et débité par un abonnement webhook : il n'est pas débité de nouveau.","type":"boolean"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","alerte_id","genre","annonce_id","cle_ban","volet","signal","detail","score","priorite","p_mise_en_vente_6m","instantane","le","notifie","livre_par_webhook","qualite"],"additionalProperties":false}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["resultats","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"resultats_veilles","x-pillr-compte":true}},"/hub/questions":{"post":{"operationId":"question_hub","summary":"Question à l'agent du Hub","description":"Une question libre posée à l'agent du Hub, qui raisonne avec Gemini 4 Argon pour les analyses et les dossiers, et Gemini 3.8 Flash, plus rapide, pour les recherches et les questions simples (deux modèles de Google, choisis à chaque question). L'agent enchaîne les opérations de lecture de ce catalogue servies à la clé (portée et palier vérifiés comme pour un appel direct), puis rédige sa réponse ; il rend aussi chaque appel avec son résultat structuré et ses crédits. Chaque opération appelée est facturée à son barème, en plus du prix de la question, dans la limite de plafond_credits : au-delà, l'agent conclut avec ce qu'il a. Avec une clé personnelle, le profil investisseur, la mémoire du compte et le projet désigné entrent dans son contexte. Coût : 120 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":4000},"contexte":{"type":"object","properties":{"projet_id":{"description":"Projet du compte dont le contexte est repris (clé personnelle).","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"annonce":{"description":"Annonce dont parle la question.","type":"string","minLength":3,"maxLength":200},"cle_ban":{"description":"Adresse dont parle la question.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"},"insee":{"description":"Commune dont parle la question.","type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"}},"additionalProperties":false},"memoire":{"description":"Faux : ni profil investisseur ni mémoire du compte dans le contexte.","default":true,"type":"boolean"},"outils_autorises":{"description":"Outils MCP que l'agent peut appeler (noms du catalogue) ; absent : toutes les opérations de lecture servies à cette clé.","minItems":1,"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{1,63}$"}},"plafond_credits":{"description":"Crédits au plus pour la question : son prix plus celui des opérations que l'agent appelle. Au-delà, l'agent conclut avec ce qu'il a.","type":"integer","minimum":120,"maximum":1200}},"required":["question"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"reponse":{"description":"La réponse rédigée par l'agent, en Markdown.","type":"string"},"appels":{"type":"array","items":{"type":"object","properties":{"outil":{"description":"Nom de l'outil MCP (et de l'opération) appelé.","type":"string"},"entree":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"resultat":{"description":"La sortie de l'opération, telle qu'un appel direct la rendrait ; null en cas d'erreur."},"erreur":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"description":"Crédits de cet appel, compris dans le débit de la question.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["outil","entree","resultat","erreur","credits"],"additionalProperties":false}},"sources":{"description":"Les sources des résultats utilisés, lues dans leurs blocs qualite.","type":"array","items":{"type":"string"}},"questions":{"description":"Les faits que les opérations ont demandés pour aller plus loin ; vide si rien ne manque.","type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["reponse","appels","sources","questions","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":120,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"question_hub"}},"/documents":{"post":{"operationId":"generer_document","summary":"Document mis en forme (PDF ou Word)","description":"Met en forme un document à partir des sections fournies (titres, paragraphes, puces, tableaux, sources) et le rend en PDF ou en Word : rapport, lettre, compte rendu, check-list, note ou comparatif. Aucun modèle de langage : le contenu vient de l'appelant. Le texte entre doubles astérisques est mis en gras dans le Word. La réponse JSON (et le contenu structuré du MCP) décrit le fichier, dont le texte brut sans coordonnées ; le fichier, lui, garde le contenu fourni. Coût : 2 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["rapport","lettre","compte_rendu","checklist","note","comparatif"]},"titre":{"type":"string","minLength":1,"maxLength":4000},"sous_titre":{"type":"string","maxLength":4000},"destinataire":{"type":"string","maxLength":4000},"date":{"type":"string","maxLength":200},"sections":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"titre":{"type":"string","maxLength":4000},"paragraphes":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":4000}},"puces":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":4000}},"tableau":{"type":"object","properties":{"colonnes":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","maxLength":500}},"lignes":{"maxItems":200,"type":"array","items":{"maxItems":12,"type":"array","items":{"type":"string","maxLength":500}}}},"required":["colonnes","lignes"],"additionalProperties":false}},"additionalProperties":false}},"sources":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":4000}},"format":{"default":"pdf","type":"string","enum":["pdf","docx"]}},"required":["type","titre","sections"],"additionalProperties":false}}}},"responses":{"200":{"description":"Le fichier, débité (sauf réponse identique déjà servie dans les 24 h). Les métadonnées sont dans x-pillr-metadonnees (structuredContent côté MCP).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/pdf":{"schema":{"type":"string","contentEncoding":"binary"}},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"schema":{"type":"string","contentEncoding":"binary"}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":2,"x-pillr-unite":"appel","x-pillr-portee":"documents","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"generer_document","x-pillr-metadonnees":{"type":"object","properties":{"type":{"type":"string"},"titre":{"type":"string"},"format":{"type":"string","enum":["pdf","docx"]},"type_fichier":{"type":"string"},"nom_fichier":{"type":"string"},"taille_octets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sections":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"a_completer":{"description":"Mentions « à compléter » laissées dans le document.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"texte":{"description":"Le document en texte brut, coordonnées remplacées par une mention.","type":"string"}},"required":["type","titre","format","type_fichier","nom_fichier","taille_octets","sections","a_completer","texte"],"additionalProperties":false}}},"/documents/lectures":{"post":{"operationId":"lire_document","summary":"Lecture de documents par le modèle","description":"Fait lire par le modèle (Gemini) des documents du client, PDF ou images (diagnostics, procès-verbaux d'assemblée générale, offres, baux, plans), pour répondre à une question : la réponse, les faits relevés avec leur page et une citation, les références datées (échéances, votes). Les fichiers sont reconnus par leurs octets, bornés en taille, transmis à l'API Fichiers de Gemini le temps de la lecture puis effacés (à défaut, Google les efface sous 48 h) ; Pillr n'en garde rien. Le contenu des documents est traité comme une donnée, jamais comme une instruction. Les téléphones, emails et noms précédés d'une civilité sont remplacés par une mention dans la réponse. Coût : 30 crédits par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fichiers":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"nom":{"description":"Nom du fichier, pour le citer.","type":"string","maxLength":200},"url":{"description":"Lien https public du fichier (PDF ou image), téléchargé par Pillr.","type":"string","maxLength":2000,"format":"uri"},"contenu_base64":{"description":"Contenu du fichier en base64, dans la limite de taille du corps d'une requête.","type":"string","maxLength":60000}},"additionalProperties":false}},"question":{"type":"string","minLength":3,"maxLength":2000}},"required":["fichiers","question"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"reponse":{"type":"string"},"faits":{"type":"array","items":{"type":"object","properties":{"fait":{"type":"string"},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"page":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"citation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["fait","document","page","citation"],"additionalProperties":false}},"references":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"type":{"type":"string"},"echeance":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["nom","type","echeance"],"additionalProperties":false}},"documents":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"type":{"type":"string","enum":["pdf","image"]},"pages":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"taille_octets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["nom","type","pages","taille_octets"],"additionalProperties":false}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["reponse","faits","references","documents","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":30,"x-pillr-unite":"appel","x-pillr-portee":"documents","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"lire_document"}},"/portefeuilles/audit":{"post":{"operationId":"audit_portefeuille","summary":"Audit d'une liste de biens face au marché","description":"Audite une liste d'annonces suivies, ou les favoris du compte de la clé : prix au m² du bien contre celui du secteur (même type de bien), baisse depuis l'ajout, échéance de la loi Climat, loyer estimé contre loyer de marché, score et rendement, avec des alertes d'arbitrage. Mêmes calculs que l'outil d'audit du Hub. Un crédit par bien audité. Coût : 1 crédit par élément rendu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"biens":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200},"prix_ajout":{"description":"Prix au moment où le bien a été suivi, en euros.","type":"number","minimum":0},"ajoute_le":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},"required":["id"],"additionalProperties":false}},"favoris":{"description":"Vrai : audite les favoris du compte de la clé (clé personnelle).","type":"boolean","const":true}},"additionalProperties":false,"required":[]}}}},"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"nb_biens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"biens":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant demandé (lbc:<n>...) ou identifiant de l'annonce du favori.","type":"string"},"annonce_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_ajout":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_bien":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2_marche":{"anyOf":[{"type":"number"},{"type":"null"}]},"ecart_prix_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_marche_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"actif":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"alertes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"texte":{"type":"string"}},"required":["code","texte"],"additionalProperties":false}},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","annonce_id","titre","ville","code_postal","surface","dpe","score","prix","prix_ajout","prix_m2_bien","prix_m2_marche","ecart_prix_pct","rendement_brut_pct","loyer_estime","loyer_marche_estime","actif","alertes","type_vendeur","qualite"],"additionalProperties":false}},"non_trouves":{"description":"Identifiants absents du catalogue : non audités, non débités.","type":"array","items":{"type":"string"}},"hors_perimetre":{"description":"Identifiants hors du périmètre du contrat de la clé : non audités, non débités.","type":"array","items":{"type":"string"}},"tronque":{"description":"Vrai si le compte a plus de favoris que l'audit n'en lit.","type":"boolean"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["nb_biens","biens","non_trouves","hors_perimetre","tronque","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"audit_portefeuille"}},"/compte/memoire":{"get":{"operationId":"memoire","summary":"Mémoire du compte","description":"Les faits durables retenus sur l'utilisateur de la clé (TMI, apport, stratégie, secteurs, métier), que le Hub et question_hub reprennent dans leur contexte, les plus récents d'abord, avec la TMI et l'apport rangés dans le profil. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"faits":{"description":"Les faits retenus, les plus récents d'abord.","type":"array","items":{"type":"object","properties":{"fait":{"type":"string"},"date":{"type":"string"}},"required":["fait","date"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plafond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tmi_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["faits","total","plafond","tmi_pct","apport_eur","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"memoire","x-pillr-compte":true},"post":{"operationId":"memoire_ajouter","summary":"Ajouter des faits à la mémoire","description":"Ajoute des faits durables à la mémoire du compte, avec les règles du Hub : dédoublonnage, plafond (le plus ancien sort), refus des données sensibles, d'un contact ou de la donnée d'un tiers nommé, avec leur motif. Une TMI ou un apport reconnus renseignent aussi le profil investisseur. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faits":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":240}}},"required":["faits"],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"faits":{"description":"Les faits retenus, les plus récents d'abord.","type":"array","items":{"type":"object","properties":{"fait":{"type":"string"},"date":{"type":"string"}},"required":["fait","date"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plafond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tmi_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"retenus":{"type":"array","items":{"type":"string"}},"deja_connu":{"type":"array","items":{"type":"string"}},"refus":{"type":"array","items":{"type":"object","properties":{"fait":{"type":"string"},"motif":{"type":"string"}},"required":["fait","motif"],"additionalProperties":false}},"oublies":{"description":"Faits sortis parce que le plafond était atteint.","type":"array","items":{"type":"string"}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["faits","total","plafond","tmi_pct","apport_eur","retenus","deja_connu","refus","oublies","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"memoire_ajouter","x-pillr-compte":true,"x-pillr-ecriture":true}},"/hub/conversations":{"get":{"operationId":"conversations_hub","summary":"Conversations du Hub","description":"Les conversations du Hub de l'utilisateur de la clé, les plus récemment modifiées d'abord, avec leur projet et leur annonce suivie. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"projet_id","in":"query","required":false,"schema":{"description":"Les conversations d'un projet.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"epinglees","in":"query","required":false,"schema":{"description":"Vrai : les épinglées seulement ; faux : les autres.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"conversations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonce_id":{"description":"Annonce suivie par la conversation, si elle a été ouverte depuis une fiche.","anyOf":[{"type":"string"},{"type":"null"}]},"projet_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"epinglee":{"type":"boolean"},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","titre","annonce_id","projet_id","epinglee","cree_le","maj_le"],"additionalProperties":false}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["conversations","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"conversations_hub","x-pillr-compte":true}},"/hub/conversations/{id}":{"get":{"operationId":"conversations_hub_lire","summary":"Une conversation du Hub","description":"Une conversation du Hub et ses messages dans l'ordre (les 200 derniers au plus), avec les outils appelés et leurs résultats. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de la conversation.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"conversation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonce_id":{"description":"Annonce suivie par la conversation, si elle a été ouverte depuis une fiche.","anyOf":[{"type":"string"},{"type":"null"}]},"projet_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"epinglee":{"type":"boolean"},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","titre","annonce_id","projet_id","epinglee","cree_le","maj_le"],"additionalProperties":false},"messages":{"type":"array","items":{"type":"object","properties":{"rang":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"role":{"description":"user ou assistant.","type":"string"},"contenu":{"type":"string"},"outils":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"entree":{},"resultat":{}},"required":["nom","entree","resultat"],"additionalProperties":false}}},"required":["rang","role","contenu","outils"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["conversation","messages","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"conversations_hub_lire","x-pillr-compte":true},"post":{"operationId":"conversations_hub_modifier","summary":"Renommer, épingler ou rattacher une conversation","description":"Renomme une conversation du Hub, l'épingle ou la désépingle, la rattache à un projet du compte ou l'en détache. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de la conversation.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titre":{"type":"string","minLength":1,"maxLength":200},"epinglee":{"type":"boolean"},"projet_id":{"description":"Projet du compte ; null détache.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"conversation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"annonce_id":{"description":"Annonce suivie par la conversation, si elle a été ouverte depuis une fiche.","anyOf":[{"type":"string"},{"type":"null"}]},"projet_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"epinglee":{"type":"boolean"},"cree_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","titre","annonce_id","projet_id","epinglee","cree_le","maj_le"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["conversation","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"conversations_hub_modifier","x-pillr-compte":true,"x-pillr-ecriture":true}},"/hub/conversations/{id}/questions":{"post":{"operationId":"conversations_hub_question","summary":"Poursuivre une conversation du Hub","description":"Pose une question qui poursuit une conversation du Hub : l'agent reprend le fil (derniers messages), l'annonce suivie et le projet rattaché, et l'échange est enregistré dans la conversation, lisible sur le site. L'agent enchaîne les opérations de lecture de ce catalogue servies à la clé (portée et palier vérifiés comme pour un appel direct), puis rédige sa réponse ; il rend aussi chaque appel avec son résultat structuré et ses crédits. Chaque opération appelée est facturée à son barème, en plus du prix de la question, dans la limite de plafond_credits : au-delà, l'agent conclut avec ce qu'il a. Exige une clé rattachée à un compte Pillr. Coût : 120 crédits par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de la conversation.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":4000},"outils_autorises":{"description":"Outils MCP que l'agent peut appeler (noms du catalogue) ; absent : toutes les opérations de lecture servies à cette clé.","minItems":1,"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_]{1,63}$"}},"plafond_credits":{"description":"Crédits au plus pour la question : son prix plus celui des opérations que l'agent appelle. Au-delà, l'agent conclut avec ce qu'il a.","type":"integer","minimum":120,"maximum":1200}},"required":["question"],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"conversation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reponse":{"description":"La réponse rédigée par l'agent, en Markdown.","type":"string"},"appels":{"type":"array","items":{"type":"object","properties":{"outil":{"description":"Nom de l'outil MCP (et de l'opération) appelé.","type":"string"},"entree":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"resultat":{"description":"La sortie de l'opération, telle qu'un appel direct la rendrait ; null en cas d'erreur."},"erreur":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"additionalProperties":false},{"type":"null"}]},"credits":{"description":"Crédits de cet appel, compris dans le débit de la question.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["outil","entree","resultat","erreur","credits"],"additionalProperties":false}},"sources":{"description":"Les sources des résultats utilisés, lues dans leurs blocs qualite.","type":"array","items":{"type":"string"}},"questions":{"description":"Les faits que les opérations ont demandés pour aller plus loin ; vide si rien ne manque.","type":"array","items":{"type":"string"}},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["conversation_id","reponse","appels","sources","questions","qualite","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":120,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"conversations_hub_question","x-pillr-compte":true,"x-pillr-ecriture":true}},"/jeux":{"get":{"operationId":"jeux","summary":"Catalogue des jeux de données","description":"Le catalogue des jeux que lisent lire_jeu et agreger_jeu, tel que chaque base le déclare (liste blanche des colonnes, relue sur la vue du jeu) : pour chaque jeu, sa description, sa base, sa nature (calculé par Pillr ou public brut), sa maille, sa source et sa licence d'origine, son volume estimé, sa clé de tri, son coût par ligne, la date de ses données quand un journal de chargement la donne, et ses colonnes avec leur type, leur définition, leurs opérateurs de filtre et si elles sont indexées, groupables ou mesurables. GET /jeux/{jeu}/schema rend un seul jeu. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"jeux":{"type":"array","items":{"type":"object","properties":{"jeu":{"type":"string"},"titre":{"type":"string"},"description":{"type":"string"},"base":{"description":"servie : la base du site ; lac : le lac de données.","type":"string","enum":["servie","lac"]},"nature":{"description":"calcule_pillr : jeu calculé par Pillr ; public_brut : jeu public, tel que publié par sa source.","type":"string","enum":["calcule_pillr","public_brut"]},"maille":{"description":"Ce qu'est une ligne du jeu.","type":"string"},"source":{"description":"Source d'origine, en clair.","type":"string"},"licence":{"description":"Licence d'origine des données.","type":"string"},"volume":{"description":"Nombre de lignes du jeu, estimé par les statistiques de la base à la déclaration du jeu.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"cle_tri":{"description":"Colonnes de la clé de tri : les lignes sont rendues dans cet ordre, et le curseur s'y lit.","type":"array","items":{"type":"string"}},"limite_max":{"description":"Lignes par page au plus.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filtre_indexe_requis":{"description":"Vrai : une lecture exige au moins un filtre sur une colonne indexée.","type":"boolean"},"creneau_lourd":{"description":"Vrai : le jeu n'est pas lu de 20h30 à minuit (heure de Paris).","type":"boolean"},"cout":{"type":"object","properties":{"bareme":{"description":"Ligne du barème.","type":"string","enum":["element_public","ligne_brute"]},"credits":{"description":"Crédits par unité.","type":"integer","minimum":0,"maximum":9007199254740991},"unite":{"description":"element : par ligne rendue ; tranche : par tranche entamée de lignes rendues.","type":"string","enum":["element","tranche"]},"lignes_par_unite":{"type":"integer","minimum":1,"maximum":9007199254740991},"libelle":{"type":"string"}},"required":["bareme","credits","unite","lignes_par_unite","libelle"],"additionalProperties":false},"fraicheur":{"type":"object","properties":{"donnees_du":{"description":"Date des données du jeu, quand elle se lit dans un journal de chargement ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Ce que date donnees_du.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["donnees_du","mesure"],"additionalProperties":false},"declare_le":{"description":"Date de la dernière déclaration du jeu (liste blanche relue sur la vue).","anyOf":[{"type":"string"},{"type":"null"}]},"colonnes":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"type":{"description":"Type Postgres de la colonne.","type":"string"},"definition":{"type":"string"},"filtrable":{"type":"boolean"},"indexee":{"description":"Vrai : un filtre sur cette colonne compte comme filtre indexé.","type":"boolean"},"operateurs":{"type":"array","items":{"type":"string","enum":["eq","in","lt","lte","gt","gte","entre","prefixe","nul"]}},"groupable":{"type":"boolean"},"mesurable":{"type":"boolean"}},"required":["nom","type","definition","filtrable","indexee","operateurs","groupable","mesurable"],"additionalProperties":false}}},"required":["jeu","titre","description","base","nature","maille","source","licence","volume","cle_tri","limite_max","filtre_indexe_requis","creneau_lourd","cout","fraicheur","declare_le","colonnes"],"additionalProperties":false}},"retrait_particuliers":{"description":"La règle appliquée à toute ligne servie.","type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["jeux","retrait_particuliers","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"references","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"jeux"}},"/jeux/{jeu}/schema":{"get":{"operationId":"jeux_2","summary":"Catalogue des jeux de données","description":"Le catalogue des jeux que lisent lire_jeu et agreger_jeu, tel que chaque base le déclare (liste blanche des colonnes, relue sur la vue du jeu) : pour chaque jeu, sa description, sa base, sa nature (calculé par Pillr ou public brut), sa maille, sa source et sa licence d'origine, son volume estimé, sa clé de tri, son coût par ligne, la date de ses données quand un journal de chargement la donne, et ses colonnes avec leur type, leur définition, leurs opérateurs de filtre et si elles sont indexées, groupables ou mesurables. GET /jeux/{jeu}/schema rend un seul jeu. Coût : 0 crédit par appel réussi.","parameters":[{"name":"jeu","in":"path","required":true,"schema":{"description":"Nom du jeu, tel que GET /jeux le liste.","type":"string","enum":["annonces","evenements_prix","diffusions","communes","prix_iris","loyers","mutations","indice_travaux","adresses","dvf","dvf_ancien","ban","dpe_existant","dpe_neuf","dpe_tertiaire","dpe_ancien","audits","coproprietes","permis_logements","permis_locaux","permis_demolir","permis_amenager","bodacc","lovac","plu","signaux_communes","marche_commune","agences_commune","sirene_immobilier","annonces_archives","biens"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"jeux":{"type":"array","items":{"type":"object","properties":{"jeu":{"type":"string"},"titre":{"type":"string"},"description":{"type":"string"},"base":{"description":"servie : la base du site ; lac : le lac de données.","type":"string","enum":["servie","lac"]},"nature":{"description":"calcule_pillr : jeu calculé par Pillr ; public_brut : jeu public, tel que publié par sa source.","type":"string","enum":["calcule_pillr","public_brut"]},"maille":{"description":"Ce qu'est une ligne du jeu.","type":"string"},"source":{"description":"Source d'origine, en clair.","type":"string"},"licence":{"description":"Licence d'origine des données.","type":"string"},"volume":{"description":"Nombre de lignes du jeu, estimé par les statistiques de la base à la déclaration du jeu.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"cle_tri":{"description":"Colonnes de la clé de tri : les lignes sont rendues dans cet ordre, et le curseur s'y lit.","type":"array","items":{"type":"string"}},"limite_max":{"description":"Lignes par page au plus.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"filtre_indexe_requis":{"description":"Vrai : une lecture exige au moins un filtre sur une colonne indexée.","type":"boolean"},"creneau_lourd":{"description":"Vrai : le jeu n'est pas lu de 20h30 à minuit (heure de Paris).","type":"boolean"},"cout":{"type":"object","properties":{"bareme":{"description":"Ligne du barème.","type":"string","enum":["element_public","ligne_brute"]},"credits":{"description":"Crédits par unité.","type":"integer","minimum":0,"maximum":9007199254740991},"unite":{"description":"element : par ligne rendue ; tranche : par tranche entamée de lignes rendues.","type":"string","enum":["element","tranche"]},"lignes_par_unite":{"type":"integer","minimum":1,"maximum":9007199254740991},"libelle":{"type":"string"}},"required":["bareme","credits","unite","lignes_par_unite","libelle"],"additionalProperties":false},"fraicheur":{"type":"object","properties":{"donnees_du":{"description":"Date des données du jeu, quand elle se lit dans un journal de chargement ; null sinon.","anyOf":[{"type":"string"},{"type":"null"}]},"mesure":{"description":"Ce que date donnees_du.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["donnees_du","mesure"],"additionalProperties":false},"declare_le":{"description":"Date de la dernière déclaration du jeu (liste blanche relue sur la vue).","anyOf":[{"type":"string"},{"type":"null"}]},"colonnes":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"type":{"description":"Type Postgres de la colonne.","type":"string"},"definition":{"type":"string"},"filtrable":{"type":"boolean"},"indexee":{"description":"Vrai : un filtre sur cette colonne compte comme filtre indexé.","type":"boolean"},"operateurs":{"type":"array","items":{"type":"string","enum":["eq","in","lt","lte","gt","gte","entre","prefixe","nul"]}},"groupable":{"type":"boolean"},"mesurable":{"type":"boolean"}},"required":["nom","type","definition","filtrable","indexee","operateurs","groupable","mesurable"],"additionalProperties":false}}},"required":["jeu","titre","description","base","nature","maille","source","licence","volume","cle_tri","limite_max","filtre_indexe_requis","creneau_lourd","cout","fraicheur","declare_le","colonnes"],"additionalProperties":false}},"retrait_particuliers":{"description":"La règle appliquée à toute ligne servie.","type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["jeux","retrait_particuliers","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"references","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"jeux"}},"/jeux/{jeu}":{"get":{"operationId":"lire_jeu","summary":"Lecture structurée d'un jeu de données","description":"Les lignes d'un jeu de données, sans SQL : filtre[colonne][operateur]=valeur sur les colonnes filtrables du jeu (eq, in, lt, lte, gt, gte, entre, prefixe, nul ; combinés par « et »), colonnes choisies par champs, pagination par curseur. Un jeu volumineux exige au moins un filtre sur une colonne indexée (schéma du jeu : GET /jeux/{jeu}/schema). Les lignes sont triées par la clé de tri du jeu, en ordre croissant ; aucun autre tri n'est offert. Toute ligne passe le retrait des particuliers : les professionnels sont nommés, un particulier jamais. Un jeu marqué creneau_lourd n'est pas lu de 20h30 à minuit (heure de Paris) ; une lecture trop large pour le délai de la base répond 503 : resserrez les filtres. Coût : 1 crédit par tranche de 10 lignes rendues ; 1 crédit par élément rendu pour un jeu calculé par Pillr.","parameters":[{"name":"jeu","in":"path","required":true,"schema":{"description":"Nom du jeu, tel que GET /jeux le liste.","type":"string","enum":["annonces","evenements_prix","diffusions","communes","prix_iris","loyers","mutations","indice_travaux","adresses","dvf","dvf_ancien","ban","dpe_existant","dpe_neuf","dpe_tertiaire","dpe_ancien","audits","coproprietes","permis_logements","permis_locaux","permis_demolir","permis_amenager","bodacc","lovac","plu","signaux_communes","marche_commune","agences_commune","sirene_immobilier","annonces_archives","biens"]}},{"name":"filtre","in":"query","required":false,"schema":{"description":"Filtres : filtre[colonne][operateur]=valeur, 12 au plus, combinés par « et ». Opérateurs : eq, in, lt, lte, gt, gte, entre, prefixe, nul. Les colonnes filtrables et leurs opérateurs sont dans le schéma du jeu ; un jeu volumineux exige au moins un filtre sur une colonne indexée.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,62}$"},"additionalProperties":{"description":"Conditions sur une colonne, par opérateur.","type":"object","properties":{"eq":{"description":"Égal à la valeur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"in":{"description":"Dans la liste : valeurs séparées par des virgules, ou répétées (1000 au plus).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"lt":{"description":"Strictement inférieur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"lte":{"description":"Inférieur ou égal.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"gt":{"description":"Strictement supérieur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"gte":{"description":"Supérieur ou égal.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"entre":{"description":"Entre deux bornes comprises, séparées par une virgule (« 2025-01-01,2025-03-31 »).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"prefixe":{"description":"Commence par la valeur (texte).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"nul":{"description":"true : la colonne est vide ; false : elle est remplie.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]}},"additionalProperties":false}},"style":"deepObject","explode":true},{"name":"champs","in":"query","required":false,"schema":{"description":"Colonnes rendues, séparées par des virgules ; toutes si absent. Les colonnes de la clé de tri sont toujours rendues (elles portent le curseur).","anyOf":[{"type":"string","maxLength":4000},{"maxItems":300,"type":"array","items":{"type":"string","maxLength":200}}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (1000 au plus).","default":100,"type":"integer","minimum":1,"maximum":1000}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"jeu":{"type":"string"},"titre":{"type":"string"},"base":{"type":"string","enum":["servie","lac"]},"nature":{"type":"string","enum":["calcule_pillr","public_brut"]},"colonnes":{"description":"Les colonnes rendues, dans l'ordre du schéma du jeu, avec leur type Postgres.","type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"type":{"type":"string"}},"required":["nom","type"],"additionalProperties":false}},"cle_tri":{"type":"array","items":{"type":"string"}},"lignes":{"description":"Les lignes, triées par la clé du jeu, en ordre croissant (une valeur vide en dernier).","type":"array","items":{"description":"Une ligne du jeu : les colonnes demandées, sous leur nom du schéma du jeu.","type":"object","properties":{"vendeur_nom":{},"vendeur_enseigne":{},"vendeur_siren":{},"vendeur_telephone":{},"vendeur_email":{},"vendeur_identifiant_portail":{},"publisher_type":{},"annonce_publisher":{},"annonce_empreinte_publisher":{},"prenom":{},"titre":{},"title":{},"description":{}},"additionalProperties":{}}},"n":{"description":"Lignes rendues dans cette page.","type":"integer","minimum":0,"maximum":9007199254740991},"volume_jeu":{"description":"Nombre de lignes du jeu entier, estimé à sa déclaration ; ce n'est pas le nombre de lignes filtrées.","anyOf":[{"type":"number"},{"type":"null"}]},"donnees_du":{"description":"Date des données : dernier chargement de la source publique, ou date la plus récente des lignes servies ; null si inconnue.","anyOf":[{"type":"string"},{"type":"null"}]},"retrait_particuliers":{"type":"string"},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["jeu","titre","base","nature","colonnes","cle_tri","lignes","n","volume_jeu","donnees_du","retrait_particuliers","qualite","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"tranche","x-pillr-tranche":10,"x-pillr-tarifs":[{"credits":1,"unite":"element","quand":"pour un jeu calculé par Pillr"}],"x-pillr-portee":"jeux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"lire_jeu"}},"/jeux/{jeu}/agregats":{"get":{"operationId":"agreger_jeu","summary":"Agrégats sur un jeu de données","description":"Des agrégats sur un jeu, avec les filtres de lire_jeu : le nombre de lignes de chaque groupe (n, toujours rendu) et des mesures sur les colonnes mesurables (nombre, somme, moyenne, médiane, quantile, minimum, maximum ; médiane et quantiles continus), groupées par 3 colonnes groupables au plus. Les groupes les plus nombreux d'abord, 1000 au plus. Aucun seuil ne masque un groupe : un petit groupe est servi avec son n et le drapeau peu_d_observations. Servi depuis la mémoire seulement de 20h30 à minuit (heure de Paris). Coût : 5 crédits par appel réussi.","parameters":[{"name":"jeu","in":"path","required":true,"schema":{"description":"Nom du jeu, tel que GET /jeux le liste.","type":"string","enum":["annonces","evenements_prix","diffusions","communes","prix_iris","loyers","mutations","indice_travaux","adresses","dvf","dvf_ancien","ban","dpe_existant","dpe_neuf","dpe_tertiaire","dpe_ancien","audits","coproprietes","permis_logements","permis_locaux","permis_demolir","permis_amenager","bodacc","lovac","plu","signaux_communes","marche_commune","agences_commune","sirene_immobilier","annonces_archives","biens"]}},{"name":"grouper","in":"query","required":false,"schema":{"description":"Colonnes de groupe, séparées par des virgules (3 au plus, colonnes groupables du jeu).","anyOf":[{"type":"string","maxLength":4000},{"maxItems":3,"type":"array","items":{"type":"string","maxLength":200}}]}},{"name":"mesures","in":"query","required":false,"schema":{"description":"Mesures, séparées par des virgules, chacune « fonction:colonne » (10 au plus) : nombre, somme, moyenne, mediane, quantile, min, max (alias count, sum, avg, median) ; « quantile:colonne:0.9 » pour un quantile. Le nombre de lignes de chaque groupe (n) est toujours rendu.","anyOf":[{"type":"string","maxLength":4000},{"maxItems":10,"type":"array","items":{"type":"string","maxLength":200}}]}},{"name":"filtre","in":"query","required":false,"schema":{"description":"Filtres : filtre[colonne][operateur]=valeur, 12 au plus, combinés par « et ». Opérateurs : eq, in, lt, lte, gt, gte, entre, prefixe, nul. Les colonnes filtrables et leurs opérateurs sont dans le schéma du jeu ; un jeu volumineux exige au moins un filtre sur une colonne indexée.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,62}$"},"additionalProperties":{"description":"Conditions sur une colonne, par opérateur.","type":"object","properties":{"eq":{"description":"Égal à la valeur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"in":{"description":"Dans la liste : valeurs séparées par des virgules, ou répétées (1000 au plus).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"lt":{"description":"Strictement inférieur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"lte":{"description":"Inférieur ou égal.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"gt":{"description":"Strictement supérieur.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"gte":{"description":"Supérieur ou égal.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"entre":{"description":"Entre deux bornes comprises, séparées par une virgule (« 2025-01-01,2025-03-31 »).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"prefixe":{"description":"Commence par la valeur (texte).","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]},"nul":{"description":"true : la colonne est vide ; false : elle est remplie.","anyOf":[{"anyOf":[{"type":"string","maxLength":200},{"type":"number"},{"type":"boolean"}]},{"maxItems":1000,"type":"array","items":{"anyOf":[{"type":"string","maxLength":200},{"type":"number"}]}}]}},"additionalProperties":false}},"style":"deepObject","explode":true},{"name":"limite_groupes","in":"query","required":false,"schema":{"description":"Groupes rendus au plus, les plus nombreux d'abord (100 par défaut, 1000 au plus).","type":"integer","minimum":1,"maximum":1000}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"jeu":{"type":"string"},"titre":{"type":"string"},"base":{"type":"string","enum":["servie","lac"]},"nature":{"type":"string","enum":["calcule_pillr","public_brut"]},"grouper":{"type":"array","items":{"type":"string"}},"mesures":{"description":"Les mesures demandées.","type":"array","items":{"type":"object","properties":{"nom":{"description":"Nom de la mesure dans chaque groupe.","type":"string"},"fonction":{"type":"string"},"colonne":{"type":"string"},"q":{"description":"Ordre du quantile ; null pour les autres fonctions.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nom","fonction","colonne","q"],"additionalProperties":false}},"groupes":{"description":"Les groupes, les plus nombreux d'abord.","type":"array","items":{"type":"object","properties":{"cles":{"description":"Valeurs des colonnes de groupe.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"n":{"description":"Nombre de lignes du groupe.","type":"integer","minimum":0,"maximum":9007199254740991},"mesures":{"description":"Mesures du groupe, sous leur nom (fonction_colonne).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]}},"drapeaux":{"description":"peu_d_observations : moins de 5 lignes dans le groupe.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}}},"required":["cles","n","mesures","drapeaux"],"additionalProperties":false}},"n_groupes":{"type":"integer","minimum":0,"maximum":9007199254740991},"tronque":{"description":"Vrai : la limite de groupes est atteinte, d'autres groupes existent peut-être.","type":"boolean"},"donnees_du":{"anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["jeu","titre","base","nature","grouper","mesures","groupes","n_groupes","tronque","donnees_du","qualite","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible ; Opération coupée sur ce créneau","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":5,"x-pillr-unite":"appel","x-pillr-portee":"jeux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"agreger_jeu"}},"/sources":{"get":{"operationId":"sources","summary":"État des sources","description":"L'état des données de Pillr, source par source, lu dans les journaux de chargement : sources publiques rafraîchies par le site (dernier succès, prochaine mise à jour, échecs consécutifs), miroirs des jeux publics au lac (dernier chargement réussi, tranches chargées, en échec et en cours, lignes, période couverte quand les tranches sont datées), balayages des portails sur 7 jours (dernier balayage fini, annonces vues et insérées), collectes des signaux communaux (lignes captées, total de la source et écart) et étages de la chaîne quotidienne ; plus les compteurs de la table des adresses. Chaque source dit ses anomalies constatées (échec, retard au-delà de 36 heures, tranche en échec, écart à la source au-delà de 5 %) ; aucun message d'erreur interne n'est servi. Coût : 0 crédit par appel réussi.","parameters":[{"name":"source","in":"query","required":false,"schema":{"description":"Ne rendre que cette source (son nom, tel que la liste le donne).","type":"string","pattern":"^[A-Za-z0-9_.:-]{1,80}$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"famille":{"description":"source_publique : source rafraîchie par le site ; miroir_public : copie d'un jeu public au lac ; balayage_portail : balayage d'un portail d'annonces ; collecte_signaux : collecte d'un signal communal ; chaine_quotidienne : étage de la chaîne quotidienne.","type":"string","enum":["source_publique","miroir_public","balayage_portail","collecte_signaux","chaine_quotidienne"]},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"dernier_chargement":{"description":"Dernier chargement réussi (ou dernier balayage fini).","anyOf":[{"type":"string"},{"type":"null"}]},"couverture":{"description":"Période couverte, lue sur les tranches datées d'un miroir (années, mois) ; null sinon.","anyOf":[{"type":"object","properties":{"debut":{"anyOf":[{"type":"string"},{"type":"null"}]},"fin":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["debut","fin"],"additionalProperties":false},{"type":"null"}]},"volume":{"description":"Volume du dernier état : lignes chargées, annonces vues, lignes captées.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"unite_volume":{"anyOf":[{"type":"string"},{"type":"null"}]},"prochaine_maj":{"description":"Prochaine mise à jour prévue, quand la source la déclare.","anyOf":[{"type":"string"},{"type":"null"}]},"anomalies":{"description":"Anomalies constatées ; vide si rien.","type":"array","items":{"type":"string","enum":["en_echec","en_retard","tranches_en_echec","aucun_balayage_fini","ecart_a_la_source"]}},"detail":{"type":"object","properties":{"categorie":{"anyOf":[{"type":"string"},{"type":"null"}]},"millesime":{"anyOf":[{"type":"string"},{"type":"null"}]},"frequence":{"anyOf":[{"type":"string"},{"type":"null"}]},"echecs_consecutifs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tranches":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tranches_en_echec":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"tranches_en_cours":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"balayages":{"description":"Balayages lancés sur 7 jours.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"balayages_finis":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"insertions":{"description":"Annonces insérées sur 7 jours.","anyOf":[{"type":"number"},{"type":"null"}]},"total_source":{"description":"Total annoncé par la source à la dernière collecte.","anyOf":[{"type":"number"},{"type":"null"}]},"ecart_source_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"verdict":{"description":"Verdict du dernier passage d'un étage de la chaîne quotidienne.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["categorie","millesime","frequence","echecs_consecutifs","tranches","tranches_en_echec","tranches_en_cours","balayages","balayages_finis","insertions","total_source","ecart_source_pct","verdict"],"additionalProperties":false},"jeux":{"description":"Les jeux de lire_jeu que cette source alimente.","type":"array","items":{"type":"string"}}},"required":["nom","famille","titre","dernier_chargement","couverture","volume","unite_volume","prochaine_maj","anomalies","detail","jeux"],"additionalProperties":false}},"adresses":{"description":"Compteurs de la table des adresses, calculés à chaque build nocturne ; null s'ils ne se lisent pas.","anyOf":[{"type":"object","properties":{"total":{"description":"Adresses de la table des adresses.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"dpe_90j":{"description":"Adresses dont le dernier DPE a moins de 90 jours, dans le périmètre du pré-marché.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"dpe_24m":{"description":"Adresses dont le dernier DPE a moins de 24 mois.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false},"prospectables_90j":{"description":"Adresses à DPE de moins de 90 jours, ni déjà en vente, ni vendues après le DPE.","type":"object","properties":{"valeur":{"anyOf":[{"type":"number"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["valeur","qualite"],"additionalProperties":false}},"required":["total","dpe_90j","dpe_24m","prospectables_90j"],"additionalProperties":false},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["sources","adresses","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"references","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"sources"}},"/exports":{"get":{"operationId":"exports","summary":"Fichiers complets des jeux","description":"Les éditions des fichiers complets que le contrat de l'organisation ouvre (jeux de son périmètre, droit d'export actif), plus les éditions communes : pour chacune, le jeu, la date d'édition, le format, la taille, le nombre de lignes, l'empreinte SHA-256, la présence du dictionnaire et de la fiche qualité, et le chemin de téléchargement. Seules les éditions dont la volumétrie a été contrôlée avant l'envoi sont listées. Réservé aux contrats ; REST seulement. Coût : 0 crédit par appel réussi.","parameters":[{"name":"jeu","in":"query","required":false,"schema":{"description":"Jeu exportable, tel que le périmètre du contrat le nomme.","type":"string","enum":["annonces","evenements_prix","diffusion","biens","adresses","dvf_adresse","dpe","audits","coproprietes","permis","societes_civiles","pre_marche","communes","iris","urbanisme","agences","indice_travaux","barometre","tuiles"]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"editions":{"description":"Les éditions ouvertes par le contrat, la plus récente d'abord.","type":"array","items":{"type":"object","properties":{"jeu":{"type":"string"},"date":{"description":"Date de l'édition (AAAA-MM-JJ).","type":"string"},"format":{"type":"string","enum":["parquet","csv.gz","geoparquet","pmtiles"]},"taille_octets":{"anyOf":[{"type":"number"},{"type":"null"}]},"lignes":{"anyOf":[{"type":"number"},{"type":"null"}]},"sha256":{"description":"Empreinte SHA-256 du fichier.","anyOf":[{"type":"string"},{"type":"null"}]},"dictionnaire":{"description":"Vrai : le dictionnaire des colonnes accompagne l'édition.","type":"boolean"},"fiche_qualite":{"description":"Vrai : la fiche qualité accompagne l'édition.","type":"boolean"},"perimetre":{"description":"contrat : édition propre au contrat ; echantillon : édition commune.","type":"string","enum":["contrat","echantillon"]},"genere_le":{"anyOf":[{"type":"string"},{"type":"null"}]},"telechargement":{"description":"Chemin du téléchargement (redirection vers le fichier).","type":"string"}},"required":["jeu","date","format","taille_octets","lignes","sha256","dictionnaire","fiche_qualite","perimetre","genere_le","telechargement"],"additionalProperties":false}},"duree_lien_s":{"description":"Validité d'une adresse de téléchargement, en secondes.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retrait_particuliers":{"type":"string"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["editions","duree_lien_s","retrait_particuliers","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"exports","x-pillr-palier-minimal":"contrat"}},"/exports/{jeu}/{date}":{"get":{"operationId":"exports_telecharger","summary":"Téléchargement d'un fichier complet","description":"Redirige (302) vers le fichier d'une édition, son dictionnaire ou sa fiche qualité, par une adresse présignée valable 15 minutes. Chaque téléchargement est noté. Réservé aux contrats ; REST seulement. Coût : 0 crédit par appel réussi.","parameters":[{"name":"jeu","in":"path","required":true,"schema":{"description":"Jeu exportable, tel que le périmètre du contrat le nomme.","type":"string","enum":["annonces","evenements_prix","diffusion","biens","adresses","dvf_adresse","dpe","audits","coproprietes","permis","societes_civiles","pre_marche","communes","iris","urbanisme","agences","indice_travaux","barometre","tuiles"]}},{"name":"date","in":"path","required":true,"schema":{"description":"Date de l'édition (AAAA-MM-JJ).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"format","in":"query","required":false,"schema":{"description":"Format de l'édition (parquet par défaut).","type":"string","enum":["parquet","csv.gz","geoparquet","pmtiles"]}},{"name":"fichier","in":"query","required":false,"schema":{"description":"donnees (par défaut), dictionnaire ou fiche_qualite.","type":"string","enum":["donnees","dictionnaire","fiche_qualite"]}}],"responses":{"302":{"description":"Redirection vers le fichier (URL présignée, de courte durée) ; débitée selon le contrat.","headers":{"Location":{"schema":{"type":"string"}},"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Palier insuffisant","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"exports","x-pillr-palier-minimal":"contrat"}},"/projets":{"get":{"operationId":"projets","summary":"Projets du compte","description":"Les projets de l'utilisateur de la clé (achat, mandat de vente, location et gestion) : titre, étape, annonce suivie, adresse, faits, échéances, date de clôture et nombre de conversations du Hub rattachées. Les projets ouverts d'abord, puis les plus récemment modifiés. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"clos","in":"query","required":false,"schema":{"description":"Vrai : les projets clos seulement ; faux : les ouverts seulement ; absent : tous.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"projets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"titre":{"type":"string"},"etape":{"type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce suivie.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"faits":{"description":"Faits du projet (clés libres ; textes et urbanisme sont réservés).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"echeances":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"clos_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"nb_conversations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","type","titre","etape","annonce_id","adresse","faits","echeances","clos_le","cree_le","maj_le","nb_conversations"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["projets","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets","x-pillr-compte":true},"post":{"operationId":"projets_creer","summary":"Créer un projet","description":"Crée un projet dans le compte de l'utilisateur de la clé : type, titre, adresse en texte, annonce suivie. Une clé BAN donnée est rangée dans les faits du projet. Le Hub réinjecte le projet dans chaque conversation qui lui est rattachée. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"achat, vente_mandat ou location_gestion.","type":"string","enum":["achat","vente_mandat","location_gestion"]},"titre":{"type":"string","minLength":1,"maxLength":120},"adresse":{"description":"Adresse du bien, en texte.","type":"string","maxLength":200},"cle_ban":{"description":"Clé d'interopérabilité de la Base Adresse Nationale, ex. 69383_1234_00012.","type":"string","pattern":"^(?:\\d{5}|2[ABab]\\d{3})_(?:[0-9a-zA-Z]{4}|[0-9a-zA-Z]{6})_\\d{5}(?:_[0-9a-zA-Z]{1,10})?$"},"annonce":{"description":"Annonce suivie par le projet.","type":"string","minLength":3,"maxLength":200}},"required":["type","titre"],"additionalProperties":false}}}},"responses":{"201":{"description":"Ressource créée.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"projet":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"titre":{"type":"string"},"etape":{"type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce suivie.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"faits":{"description":"Faits du projet (clés libres ; textes et urbanisme sont réservés).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"echeances":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"clos_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"nb_conversations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","type","titre","etape","annonce_id","adresse","faits","echeances","clos_le","cree_le","maj_le","nb_conversations"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["projet","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets_creer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/projets/{id}":{"get":{"operationId":"projets_lire","summary":"Un projet et son contexte","description":"Un projet du compte avec son contexte : les derniers évènements datés de son fil, les textes longs rangés (modèles de courrier, textes de boîtage) et les conversations du Hub qui lui sont rattachées. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du projet.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"projet":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"titre":{"type":"string"},"etape":{"type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce suivie.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"faits":{"description":"Faits du projet (clés libres ; textes et urbanisme sont réservés).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"echeances":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"clos_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"nb_conversations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","type","titre","etape","annonce_id","adresse","faits","echeances","clos_le","cree_le","maj_le","nb_conversations"],"additionalProperties":false},"evenements":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"contenu":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["type","contenu","le"],"additionalProperties":false}},"textes":{"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string"},"texte":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"},"empreinte":{"type":"string"}},"required":["libelle","texte","date","empreinte"],"additionalProperties":false}},"conversations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","titre","maj_le"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["projet","evenements","textes","conversations","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets_lire","x-pillr-compte":true},"post":{"operationId":"projets_modifier","summary":"Modifier ou clore un projet","description":"Modifie un projet du compte : titre, étape, adresse, faits (fusionnés, hors des clés réservées textes et urbanisme), échéances personnelles, clôture ou réouverture, et suivi d'un dépôt d'urbanisme (démarche revalidée et échéances calculées par le moteur du site, jamais reçues). Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du projet.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titre":{"type":"string","minLength":1,"maxLength":120},"etape":{"type":"string","minLength":1,"maxLength":60},"adresse":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"clos":{"description":"Vrai : clôt le projet ; faux : le rouvre.","type":"boolean"},"faits":{"description":"Faits du projet à fusionner : une clé en snake_case, une valeur JSON ; null retire la clé.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"additionalProperties":{}},"echeances":{"description":"Échéances personnelles : remplacent les précédentes, celles d'un dépôt d'urbanisme restent.","maxItems":20,"type":"array","items":{"type":"object","properties":{"libelle":{"type":"string","minLength":1,"maxLength":120},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["libelle","date"],"additionalProperties":false}},"urbanisme":{"type":"object","properties":{"demarche":{"description":"La démarche établie par demarche_urbanisme, revalidée ici.","type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{}},"date_depot":{"description":"Date du dépôt, AAAA-MM-JJ ; null retire les échéances du dépôt.","anyOf":[{"type":"string","maxLength":10},{"type":"null"}]}},"additionalProperties":false}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"projet":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string"},"titre":{"type":"string"},"etape":{"type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce suivie.","anyOf":[{"type":"string"},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}]},"faits":{"description":"Faits du projet (clés libres ; textes et urbanisme sont réservés).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"echeances":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"clos_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"nb_conversations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","type","titre","etape","annonce_id","adresse","faits","echeances","clos_le","cree_le","maj_le","nb_conversations"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["projet","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets_modifier","x-pillr-compte":true,"x-pillr-ecriture":true}},"/projets/{id}/textes":{"post":{"operationId":"projets_textes_ajouter","summary":"Ranger un texte dans un projet","description":"Range un texte long dans un projet (modèle de courrier, texte de boîtage) : même préparation que le site, coordonnées remplacées par une mention, données sensibles refusées, dédoublonnage et plafond de textes par projet. Le Hub le réinjecte dans les conversations du projet. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du projet.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"libelle":{"type":"string","minLength":1,"maxLength":60},"texte":{"type":"string","minLength":1,"maxLength":2200}},"required":["libelle","texte"],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"range":{"type":"boolean"},"deja_range":{"type":"boolean"},"empreinte":{"type":"string"},"masques":{"description":"Coordonnées remplacées par une mention dans le texte rangé.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oublies":{"description":"Libellés des textes sortis parce que le plafond était atteint.","type":"array","items":{"type":"string"}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"plafond":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["range","deja_range","empreinte","masques","oublies","total","plafond","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets_textes_ajouter","x-pillr-compte":true,"x-pillr-ecriture":true}},"/projets/{id}/textes/retrait":{"post":{"operationId":"projets_textes_retirer","summary":"Retirer un texte d'un projet","description":"Retire d'un projet le texte désigné par son empreinte. Retirer un texte absent ne change rien. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du projet.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"empreinte":{"type":"string","minLength":1,"maxLength":40}},"required":["empreinte"],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"retire":{"type":"boolean"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["retire","total","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"projets_textes_retirer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/briefs/programmes":{"get":{"operationId":"briefs_programmes","summary":"Requêtes programmées du compte","description":"Les questions programmées du compte : rythme, état actif ou en pause, erreurs consécutives (trois mettent la requête en pause), dernier et prochain passage. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"requetes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"question":{"type":"string"},"programme":{"description":"hebdomadaire, quinzaine ou mensuel.","type":"string"},"actif":{"type":"boolean"},"erreurs_consecutives":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dernier_passage_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"prochain_passage_le":{"description":"null : au prochain passage hebdomadaire (lundi, 06h00 UTC).","anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","question","programme","actif","erreurs_consecutives","dernier_passage_le","prochain_passage_le","cree_le","maj_le"],"additionalProperties":false}},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["requetes","max","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"briefs_programmes","x-pillr-compte":true}},"/briefs":{"get":{"operationId":"briefs_programmes_resultats","summary":"Briefs rédigés","description":"Les briefs rédigés pour le compte par ses requêtes programmées, les plus récents d'abord : texte en Markdown, statut, jetons consommés. Le détail des outils appelés se lit par brief. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"programme_id","in":"query","required":false,"schema":{"description":"Les briefs d'une seule requête programmée.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"briefs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programme_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"question":{"description":"La question programmée, null si la requête a été supprimée depuis.","anyOf":[{"type":"string"},{"type":"null"}]},"texte":{"description":"Le brief rédigé, en Markdown.","type":"string"},"statut":{"description":"done (rédigé) ou error.","type":"string"},"jetons":{"anyOf":[{"type":"number"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","programme_id","question","texte","statut","jetons","cree_le"],"additionalProperties":false}},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["briefs","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"briefs_programmes_resultats","x-pillr-compte":true}},"/briefs/{id}":{"get":{"operationId":"briefs_programmes_resultat","summary":"Un brief et ses résultats d'outils","description":"Un brief rédigé, avec le résultat structuré de chaque outil que l'agent du Hub a appelé pour l'écrire. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du brief.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"brief":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"programme_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"question":{"description":"La question programmée, null si la requête a été supprimée depuis.","anyOf":[{"type":"string"},{"type":"null"}]},"texte":{"description":"Le brief rédigé, en Markdown.","type":"string"},"statut":{"description":"done (rédigé) ou error.","type":"string"},"jetons":{"anyOf":[{"type":"number"},{"type":"null"}]},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","programme_id","question","texte","statut","jetons","cree_le"],"additionalProperties":false},"outils":{"type":"array","items":{"type":"object","properties":{"nom":{"type":"string"},"resultat":{}},"required":["nom","resultat"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["brief","outils","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"hub","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"briefs_programmes_resultat","x-pillr-compte":true}},"/compte/profil":{"get":{"operationId":"profil_investisseur","summary":"Profil investisseur du compte","description":"La thèse d'investissement de l'utilisateur de la clé, que le Hub, les briefs, les notifications et les recommandations réutilisent : stratégie, budgets et apport, zones, critères, objectifs, TMI, profil professionnel et préférences de notification. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"existe":{"description":"Faux tant que le compte n'a pas de profil investisseur ; les autres champs valent alors null.","type":"boolean"},"strategie":{"description":"cashflow, patrimoine, mixte ou lcd (courte durée).","anyOf":[{"type":"string"},{"type":"null"}]},"budget_total":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_par_bien":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"regions":{"type":"array","items":{"type":"string"}},"villes":{"type":"array","items":{"type":"string"}},"departements":{"type":"array","items":{"type":"string"}},"partout":{"description":"Vrai : ouvert à toute la France.","anyOf":[{"type":"boolean"},{"type":"null"}]},"types":{"description":"appartement, maison.","type":"array","items":{"type":"string"}},"surface_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_max":{"anyOf":[{"type":"string"},{"type":"null"}]},"tolerance_travaux":{"description":"aucun, legers, moderes ou lourds.","anyOf":[{"type":"string"},{"type":"null"}]},"rendement_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"objectifs":{"type":"object","properties":{"nb_biens":{"anyOf":[{"type":"number"},{"type":"null"}]},"horizon_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"revenu_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_biens","horizon_ans","revenu_mensuel"],"additionalProperties":false},"tmi_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil_pro":{"anyOf":[{"description":"Profil professionnel déclaré : métier, réseau, secteurs travaillés.","type":"object","properties":{"metier":{"anyOf":[{"type":"string"},{"type":"null"}]},"reseau":{"anyOf":[{"type":"string"},{"type":"null"}]},"secteurs":{"type":"array","items":{"type":"string"}}},"required":["metier","reseau","secteurs"],"additionalProperties":false},{"type":"null"}]},"notifications":{"type":"object","properties":{"par_courrier_electronique":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tableau_de_bord":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"baisses":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"negociation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"comparables":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"apres_travaux":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tendances_zone":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["par_courrier_electronique","tableau_de_bord","baisses","negociation","comparables","apres_travaux","tendances_zone"],"additionalProperties":false},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["existe","strategie","budget_total","budget_par_bien","apport_pct","apport_eur","regions","villes","departements","partout","types","surface_min","surface_max","pieces_min","dpe_max","tolerance_travaux","rendement_min","score_min","objectifs","tmi_pct","profil_pro","notifications","cree_le","maj_le","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"profil_investisseur","x-pillr-compte":true},"post":{"operationId":"profil_investisseur_modifier","summary":"Modifier le profil investisseur","description":"Crée ou met à jour le profil investisseur de l'utilisateur de la clé, champ par champ : seuls les champs fournis changent, mêmes bornes que le formulaire du site. Rend le profil à jour. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"strategie":{"type":"string","enum":["cashflow","patrimoine","mixte","lcd"]},"budget_total":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"budget_par_bien":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"apport_pct":{"type":"integer","minimum":0,"maximum":100},"apport_eur":{"anyOf":[{"type":"integer","minimum":0,"maximum":100000000},{"type":"null"}]},"regions":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"villes":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"departements":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":5}},"partout":{"type":"boolean"},"types":{"maxItems":2,"type":"array","items":{"type":"string","enum":["appartement","maison"]}},"surface_min":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}]},"surface_max":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}]},"pieces_min":{"anyOf":[{"type":"integer","minimum":0,"maximum":50},{"type":"null"}]},"dpe_max":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"tolerance_travaux":{"type":"string","enum":["aucun","legers","moderes","lourds"]},"rendement_min":{"anyOf":[{"type":"number","minimum":0,"maximum":99},{"type":"null"}]},"score_min":{"anyOf":[{"type":"integer","minimum":0,"maximum":100},{"type":"null"}]},"objectifs":{"type":"object","properties":{"nb_biens":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000},{"type":"null"}]},"horizon_ans":{"anyOf":[{"type":"integer","minimum":0,"maximum":100},{"type":"null"}]},"revenu_mensuel":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}},"additionalProperties":false},"tmi_pct":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"profil_pro":{"anyOf":[{"type":"object","properties":{"metier":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"reseau":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}]},"secteurs":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"additionalProperties":false},{"type":"null"}]},"notifications":{"type":"object","properties":{"par_courrier_electronique":{"type":"boolean"},"tableau_de_bord":{"type":"boolean"},"baisses":{"type":"boolean"},"negociation":{"type":"boolean"},"comparables":{"type":"boolean"},"apres_travaux":{"type":"boolean"},"tendances_zone":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false,"required":[]}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"existe":{"description":"Faux tant que le compte n'a pas de profil investisseur ; les autres champs valent alors null.","type":"boolean"},"strategie":{"description":"cashflow, patrimoine, mixte ou lcd (courte durée).","anyOf":[{"type":"string"},{"type":"null"}]},"budget_total":{"anyOf":[{"type":"number"},{"type":"null"}]},"budget_par_bien":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"apport_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"regions":{"type":"array","items":{"type":"string"}},"villes":{"type":"array","items":{"type":"string"}},"departements":{"type":"array","items":{"type":"string"}},"partout":{"description":"Vrai : ouvert à toute la France.","anyOf":[{"type":"boolean"},{"type":"null"}]},"types":{"description":"appartement, maison.","type":"array","items":{"type":"string"}},"surface_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe_max":{"anyOf":[{"type":"string"},{"type":"null"}]},"tolerance_travaux":{"description":"aucun, legers, moderes ou lourds.","anyOf":[{"type":"string"},{"type":"null"}]},"rendement_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"score_min":{"anyOf":[{"type":"number"},{"type":"null"}]},"objectifs":{"type":"object","properties":{"nb_biens":{"anyOf":[{"type":"number"},{"type":"null"}]},"horizon_ans":{"anyOf":[{"type":"number"},{"type":"null"}]},"revenu_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["nb_biens","horizon_ans","revenu_mensuel"],"additionalProperties":false},"tmi_pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil_pro":{"anyOf":[{"description":"Profil professionnel déclaré : métier, réseau, secteurs travaillés.","type":"object","properties":{"metier":{"anyOf":[{"type":"string"},{"type":"null"}]},"reseau":{"anyOf":[{"type":"string"},{"type":"null"}]},"secteurs":{"type":"array","items":{"type":"string"}}},"required":["metier","reseau","secteurs"],"additionalProperties":false},{"type":"null"}]},"notifications":{"type":"object","properties":{"par_courrier_electronique":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tableau_de_bord":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"baisses":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"negociation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"comparables":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"apres_travaux":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"tendances_zone":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["par_courrier_electronique","tableau_de_bord","baisses","negociation","comparables","apres_travaux","tendances_zone"],"additionalProperties":false},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"maj_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["existe","strategie","budget_total","budget_par_bien","apport_pct","apport_eur","regions","villes","departements","partout","types","surface_min","surface_max","pieces_min","dpe_max","tolerance_travaux","rendement_min","score_min","objectifs","tmi_pct","profil_pro","notifications","cree_le","maj_le","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"profil_investisseur_modifier","x-pillr-compte":true,"x-pillr-ecriture":true}},"/compte/favoris":{"get":{"operationId":"favoris","summary":"Favoris du compte","description":"Les biens suivis par l'utilisateur de la clé, les plus récents d'abord : le bien et son analyse à la date de l'ajout, complétés par l'annonce telle qu'elle est aujourd'hui (prix actuel, DPE, en ligne ou non). Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"favoris":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"annonce_id":{"description":"Identifiant de l'annonce (lbc:<n>, bienici:<id>, seloger:<id>, ou identifiant Pillr), null si elle n'est plus au catalogue.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"bien":{"description":"Le bien à la date de l'ajout, complété par l'annonce telle qu'elle est aujourd'hui.","type":"object","properties":{"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_ajout":{"description":"Prix au moment de l'ajout, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_actuel":{"description":"Prix affiché aujourd'hui, null si l'annonce n'est plus au catalogue.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"actif":{"description":"Vrai si l'annonce est encore en ligne ; null si elle n'est plus au catalogue.","anyOf":[{"type":"boolean"},{"type":"null"}]},"photos":{"type":"array","items":{"type":"string"}},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]}},"required":["titre","prix_ajout","prix_actuel","surface","pieces","ville","code_postal","dpe","actif","photos","type_vendeur"],"additionalProperties":false},"analyse":{"description":"L'analyse gardée à la date de l'ajout.","type":"object","properties":{"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["score","profil","loyer_mensuel","rendement_brut"],"additionalProperties":false},"analysis_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"ajoute_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","annonce_id","lien","bien","analyse","analysis_id","ajoute_le"],"additionalProperties":false}},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["favoris","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"favoris","x-pillr-compte":true},"post":{"operationId":"favoris_ajouter","summary":"Ajouter un favori","description":"Met une annonce du catalogue en favori, par son identifiant ou son lien : le bien et son analyse du jour sont gardés comme sur le site. Ajouter deux fois la même annonce rend le favori existant. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"annonce":{"description":"Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.","type":"string","minLength":3,"maxLength":200},"url":{"description":"Lien de l'annonce sur son portail.","type":"string","maxLength":500,"format":"uri"}},"additionalProperties":false,"required":[]}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"favori":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"annonce_id":{"description":"Identifiant de l'annonce (lbc:<n>, bienici:<id>, seloger:<id>, ou identifiant Pillr), null si elle n'est plus au catalogue.","anyOf":[{"type":"string"},{"type":"null"}]},"lien":{"description":"Lien d'origine de l'annonce, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"bien":{"description":"Le bien à la date de l'ajout, complété par l'annonce telle qu'elle est aujourd'hui.","type":"object","properties":{"titre":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix_ajout":{"description":"Prix au moment de l'ajout, en euros.","anyOf":[{"type":"number"},{"type":"null"}]},"prix_actuel":{"description":"Prix affiché aujourd'hui, null si l'annonce n'est plus au catalogue.","anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"ville":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"actif":{"description":"Vrai si l'annonce est encore en ligne ; null si elle n'est plus au catalogue.","anyOf":[{"type":"boolean"},{"type":"null"}]},"photos":{"type":"array","items":{"type":"string"}},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]}},"required":["titre","prix_ajout","prix_actuel","surface","pieces","ville","code_postal","dpe","actif","photos","type_vendeur"],"additionalProperties":false},"analyse":{"description":"L'analyse gardée à la date de l'ajout.","type":"object","properties":{"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"profil":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyer_mensuel":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["score","profil","loyer_mensuel","rendement_brut"],"additionalProperties":false},"analysis_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"ajoute_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","annonce_id","lien","bien","analyse","analysis_id","ajoute_le"],"additionalProperties":false},"deja_present":{"type":"boolean"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["favori","deja_present","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"favoris_ajouter","x-pillr-compte":true,"x-pillr-ecriture":true}},"/compte/favoris/{id}/retrait":{"post":{"operationId":"favoris_retirer","summary":"Retirer un favori","description":"Retire un favori du compte. Retirer un favori absent ne change rien. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant du favori.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"retire":{"type":"boolean"},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["id","retire","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"compte","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"favoris_retirer","x-pillr-compte":true,"x-pillr-ecriture":true}},"/compte/recommandations":{"get":{"operationId":"recommandations","summary":"Annonces recommandées pour le compte","description":"Des annonces actives et analysées choisies pour l'utilisateur de la clé, avec les règles de la page du site : d'après les motifs de ses favoris (ville, type, budget et surface autour de leur moyenne), sinon d'après la stratégie de son profil investisseur, sinon les meilleurs scores du catalogue. Les motifs retenus sont rendus avec les annonces. Exige une clé rattachée à un compte Pillr. Coût : 1 crédit par élément rendu.","parameters":[{"name":"nombre","in":"query","required":false,"schema":{"description":"Annonces rendues au plus.","default":3,"type":"integer","minimum":1,"maximum":12}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"donnees":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Identifiant de l'annonce : lbc:<n>, bienici:<id> ou seloger:<id>.","type":"string"},"type":{"type":"string"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}]},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}]},"prix":{"anyOf":[{"type":"number"},{"type":"null"}]},"surface":{"anyOf":[{"type":"number"},{"type":"null"}]},"pieces":{"anyOf":[{"type":"number"},{"type":"null"}]},"prix_m2":{"anyOf":[{"type":"number"},{"type":"null"}]},"dpe":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"score":{"anyOf":[{"type":"number"},{"type":"null"}]},"loyer_estime":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_brut":{"anyOf":[{"type":"number"},{"type":"null"}]},"rendement_net":{"anyOf":[{"type":"number"},{"type":"null"}]},"travaux_max":{"anyOf":[{"type":"number"},{"type":"null"}]},"type_vendeur":{"type":"string","enum":["pro","particulier","inconnu"]},"lien":{"description":"Lien d'origine, servi quand la clé porte la portée lien_origine.","anyOf":[{"type":"string"},{"type":"null"}]},"qualite":{"description":"Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.","type":"object","properties":{"n":{"description":"Nombre d'observations derrière la valeur ; null si sans objet.","anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"provenance":{"description":"mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.","anyOf":[{"type":"string","enum":["mesure","estime"]},{"type":"null"}]},"incertitude":{"anyOf":[{"description":"Incertitude de la valeur : fourchette et demi-largeur.","type":"object","properties":{"demi_largeur_pct":{"description":"Demi-largeur de la fourchette, en % de la valeur.","anyOf":[{"type":"number"},{"type":"null"}]},"bas":{"anyOf":[{"type":"number"},{"type":"null"}]},"haut":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["demi_largeur_pct","bas","haut"],"additionalProperties":false},{"type":"null"}]},"drapeaux":{"description":"Ce qui doit faire lire la valeur avec prudence ; vide si rien.","type":"array","items":{"type":"string","enum":["prix_atypique","surface_atypique","vente_en_bloc","doublon_probable","date_estimee","peu_d_observations","valeur_imputee","rattachement_incertain","donnee_ancienne"]}},"methode":{"description":"Méthode de calcul ou de rattachement, en clair.","anyOf":[{"type":"string"},{"type":"null"}]},"donnees_du":{"description":"Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).","anyOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"Source publique ou moteur Pillr, en clair.","type":"string"}},"required":["n","provenance","incertitude","drapeaux","methode","donnees_du","source"],"additionalProperties":false}},"required":["id","type","commune","code_postal","prix","surface","pieces","prix_m2","dpe","score","loyer_estime","rendement_brut","rendement_net","travaux_max","type_vendeur","lien","qualite"],"additionalProperties":false}},"base":{"description":"Ce sur quoi la sélection s'appuie.","type":"string","enum":["favoris","profil","catalogue"]},"raison":{"type":"string"},"motifs":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["appartement","maison"]},{"type":"null"}]},"budget":{"anyOf":[{"type":"object","properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"surface":{"anyOf":[{"type":"object","properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"dpe":{"type":"array","items":{"type":"string","enum":["A","B","C","D","E","F","G"]}},"villes":{"type":"array","items":{"type":"string"}},"strategie":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","budget","surface","dpe","villes","strategie"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["donnees","base","raison","motifs","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"element","x-pillr-portee":"annonces","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"recommandations","x-pillr-compte":true}},"/compte/notifications":{"get":{"operationId":"notifications","summary":"Notifications du compte","description":"Les signaux détectés chaque matin sur ce que suit l'utilisateur de la clé : baisse de prix d'un favori (price_drop), annonce sur-cotée en ligne depuis plus de soixante jours sans baisse (nego_opportunity), valorisation possible après des travaux raisonnables (post_works_profit), prix en baisse dans une commune suivie (zone_trend). Les plus récentes d'abord, les écartées exclues sauf demande. Le scan ne tourne que pour les comptes qui ont un profil investisseur. Exige une clé rattachée à un compte Pillr. Coût : 1 crédit par évènement livré.","parameters":[{"name":"depuis","in":"query","required":false,"schema":{"description":"Les notifications créées à partir de cette date.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}"}},{"name":"types","in":"query","required":false,"schema":{"description":"Types à rendre (paramètre répétable).","anyOf":[{"type":"string","enum":["price_drop","nego_opportunity","post_works_profit","zone_trend"]},{"maxItems":4,"type":"array","items":{"type":"string","enum":["price_drop","nego_opportunity","post_works_profit","zone_trend"]}}]}},{"name":"non_lues","in":"query","required":false,"schema":{"description":"Vrai : les non lues seulement.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}},{"name":"ecartees","in":"query","required":false,"schema":{"description":"Vrai : inclut les notifications écartées.","anyOf":[{"type":"boolean"},{"type":"string","enum":["true","false","oui","non"]}]}},{"name":"limite","in":"query","required":false,"schema":{"description":"Nombre d'éléments par page (50 au plus).","default":30,"type":"integer","minimum":1,"maximum":50}},{"name":"curseur","in":"query","required":false,"schema":{"description":"Curseur opaque rendu par la page précédente (curseur_suivant), à repasser tel quel.","type":"string","minLength":1,"maxLength":1024}}],"responses":{"200":{"description":"Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"description":"price_drop, nego_opportunity, post_works_profit ou zone_trend.","type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce concernée.","anyOf":[{"type":"string"},{"type":"null"}]},"importance":{"description":"basse, moyenne ou haute.","type":"string"},"titre":{"type":"string"},"message":{"type":"string"},"charge":{"description":"Le détail du signal, tel que le scan l'a écrit.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"lue_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"ecartee_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","type","annonce_id","importance","titre","message","charge","cree_le","lue_le","ecartee_le"],"additionalProperties":false}},"non_lues":{"description":"Notifications non lues et non écartées du compte.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"curseur_suivant":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curseur de la page suivante, à repasser dans curseur ; null sur la dernière page."},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["notifications","non_lues","curseur_suivant","credits"],"additionalProperties":false}}}},"304":{"description":"Non modifiée depuis l'ETag fourni : rien n'est débité."},"400":{"description":"Paramètres invalides ; Curseur invalide","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible ; Donnée momentanément indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":1,"x-pillr-unite":"evenement","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"notifications","x-pillr-compte":true}},"/compte/notifications/{id}":{"post":{"operationId":"notifications_modifier","summary":"Marquer une notification","description":"Marque une notification du compte comme lue ou non lue, écartée ou non. Le même appel deux fois laisse le même état. Exige une clé rattachée à un compte Pillr. Coût : 0 crédit par appel réussi.","parameters":[{"name":"id","in":"path","required":true,"schema":{"description":"Identifiant de la notification.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lue":{"type":"boolean"},"ecartee":{"type":"boolean"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Écriture faite et débitée selon le barème.","headers":{"ETag":{"schema":{"type":"string"}},"Pillr-Credits-Debites":{"schema":{"type":"integer"}},"Pillr-Credits-Restants":{"schema":{"type":"integer"}},"Pillr-Donnees-Du":{"schema":{"type":"string"}},"Pillr-Age-Donnees":{"schema":{"type":"integer"}},"RateLimit-Limit":{"schema":{"type":"integer"}},"RateLimit-Remaining":{"schema":{"type":"integer"}},"RateLimit-Reset":{"schema":{"type":"integer"}},"Pillr-Requete":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"description":"price_drop, nego_opportunity, post_works_profit ou zone_trend.","type":"string"},"annonce_id":{"description":"Identifiant Pillr de l'annonce concernée.","anyOf":[{"type":"string"},{"type":"null"}]},"importance":{"description":"basse, moyenne ou haute.","type":"string"},"titre":{"type":"string"},"message":{"type":"string"},"charge":{"description":"Le détail du signal, tel que le scan l'a écrit.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cree_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"lue_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]},"ecartee_le":{"anyOf":[{"description":"Horodatage ISO 8601.","type":"string"},{"type":"null"}]}},"required":["id","type","annonce_id","importance","titre","message","charge","cree_le","lue_le","ecartee_le"],"additionalProperties":false},"credits":{"type":"object","description":"Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).","properties":{"debites":{"type":"integer","minimum":0},"restants":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["debites","restants"],"additionalProperties":false}},"required":["notification","credits"],"additionalProperties":false}}}},"400":{"description":"Paramètres invalides","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"401":{"description":"Clé d'API absente","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"402":{"description":"Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"403":{"description":"Portée insuffisante ; Clé sans compte rattaché","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"404":{"description":"Ressource absente : rien n'est débité","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"429":{"description":"Trop de requêtes par minute","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"500":{"description":"Erreur interne","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}},"503":{"description":"API indisponible","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Probleme"}}}}},"x-pillr-credits":0,"x-pillr-unite":"appel","x-pillr-portee":"flux","x-pillr-palier-minimal":"usage","x-pillr-outil-mcp":"notifications_modifier","x-pillr-compte":true,"x-pillr-ecriture":true}}},"components":{"securitySchemes":{"cle":{"type":"http","scheme":"bearer","description":"Clé d'API pk_live_ ou pk_test_."}},"schemas":{"Probleme":{"type":"object","description":"Erreur au format application/problem+json (RFC 9457). Le champ code est stable.","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["introuvable","methode_non_permise","parametres_invalides","corps_illisible","corps_trop_lourd","type_contenu","origine_refusee","curseur_invalide","cle_absente","cle_invalide","organisation_suspendue","portee_insuffisante","palier_insuffisant","hors_perimetre","hors_bac_a_sable","cle_sans_compte","credits_insuffisants","carte_requise","plafond_depense","plafond_cle","quota_minute","trop_de_requetes","taches_en_vol","ressource_absente","commune_introuvable","annonce_introuvable","annonce_non_analysee","adresse_introuvable","tache_introuvable","non_disponible","service_indisponible","donnee_indisponible","charge_globale","creneau_reserve","delai_depasse","erreur_interne"]},"requete":{"type":"string","description":"Identifiant de la requête, à citer au support."},"reessayer_dans_s":{"type":"integer"},"erreurs":{"type":"array","items":{"type":"object","properties":{"champ":{"type":"string"},"message":{"type":"string"}},"required":["champ","message"]}}},"required":["type","title","status","detail","code"]}}}}