{"openapi":"3.1.0","info":{"title":"Parcelle Info","summary":"Le profil complet d'une parcelle française, agrégé depuis l'open data.","description":"Chaque valeur renvoyée est un `Fact` qui porte sa source, son URL, sa date, sa licence et **sa maille de jointure** (`geometry_match`) : un consommateur doit pouvoir distinguer une mesure faite sur la parcelle d'une valeur communale.\n\nLes données sont publiques (Licence Ouverte 2.0 sauf mention contraire). L'attribution renvoyée dans `attributions` doit être conservée.","version":"0.1.0"},"paths":{"/v1/resolve":{"get":{"tags":["résolution"],"summary":"Résout une entrée en parcelle cadastrale","description":"Renvoie le contexte de résolution ; `status = ambiguous` liste des candidats.","operationId":"v1_resolve_v1_resolve_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"description":"Adresse, référence cadastrale, `lat,lon`, `ban_id` ou `rnb_id`","examples":["1 place de la Mairie 38150 Bougé-Chambalud","38051 ZB 49"],"title":"Q"},"description":"Adresse, référence cadastrale, `lat,lon`, `ban_id` ou `rnb_id`"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolutionContext"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/profile":{"get":{"tags":["profil"],"summary":"Profil complet d'une parcelle, à partir d'une adresse ou d'une référence","operationId":"v1_profile_v1_profile_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"description":"Entrée à résoudre puis profiler","title":"Q"},"description":"Entrée à résoudre puis profiler"},{"name":"blocks","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Blocs à interroger. Par défaut tous : urbanism, risks, energy, building, heat_network, water, drought, connectivity, charging, health, market, rent, education, proximity, care","title":"Blocks"},"description":"Blocs à interroger. Par défaut tous : urbanism, risks, energy, building, heat_network, water, drought, connectivity, charging, health, market, rent, education, proximity, care"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParcelProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/profile.html":{"get":{"tags":["profil"],"summary":"La même fiche, en HTML autonome","operationId":"v1_profile_html_v1_profile_html_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/parcel/{parcel_id}":{"get":{"tags":["profil"],"summary":"Profil d'une parcelle par son identifiant cadastral","operationId":"v1_parcel_v1_parcel__parcel_id__get","parameters":[{"name":"parcel_id","in":"path","required":true,"schema":{"type":"string","title":"Parcel Id"}},{"name":"blocks","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Blocks"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParcelProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/parcel/{parcel_id}/{block}":{"get":{"tags":["profil"],"summary":"Un seul bloc du profil","operationId":"v1_parcel_block_v1_parcel__parcel_id___block__get","parameters":[{"name":"parcel_id","in":"path","required":true,"schema":{"type":"string","title":"Parcel Id"}},{"name":"block","in":"path","required":true,"schema":{"type":"string","title":"Block"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sources":{"get":{"tags":["métadonnées"],"summary":"Registre des sources et de leurs licences","description":"Sert à générer la page « Sources et licences » du site.","operationId":"v1_sources_v1_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Sources V1 Sources Get"}}}}}}},"/healthz":{"get":{"tags":["supervision"],"summary":"Sonde de vivacité","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/metrics":{"get":{"tags":["supervision"],"summary":"Compteurs par source et par bloc","operationId":"metrics_endpoint_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Block":{"properties":{"block":{"type":"string","title":"Block"},"status":{"type":"string","enum":["ok","partial","not_covered","not_loaded","timeout","error","skipped"],"title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"facts":{"items":{"$ref":"#/components/schemas/Fact"},"type":"array","title":"Facts"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["block","status"],"title":"Block","description":"Un thème du profil, avec son statut : un échec n'est jamais bloquant."},"Building":{"properties":{"rnb_id":{"type":"string","title":"Rnb Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"is_active":{"type":"boolean","title":"Is Active","default":true},"point":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Point"},"geometry":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geometry"},"addresses":{"items":{"$ref":"#/components/schemas/BuildingAddress"},"type":"array","title":"Addresses"},"ext_ids":{"additionalProperties":{"type":"string"},"type":"object","title":"Ext Ids"},"plot_cover_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot Cover Ratio"}},"type":"object","required":["rnb_id"],"title":"Building"},"BuildingAddress":{"properties":{"ban_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ban Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insee"}},"type":"object","title":"BuildingAddress"},"Commune":{"properties":{"insee":{"type":"string","title":"Insee"},"nom":{"type":"string","title":"Nom"},"codes_postaux":{"items":{"type":"string"},"type":"array","title":"Codes Postaux"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Population"},"epci_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epci Code"},"epci_nom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epci Nom"},"departement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departement"},"departement_nom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departement Nom"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"region_nom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Nom"},"centre_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Centre Lon"},"centre_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Centre Lat"},"surface_ha":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Surface Ha"}},"type":"object","required":["insee","nom"],"title":"Commune"},"Fact":{"properties":{"key":{"type":"string","title":"Key"},"value":{"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"source_id":{"type":"string","title":"Source Id"},"source_label":{"type":"string","title":"Source Label"},"source_url":{"type":"string","title":"Source Url"},"producer":{"type":"string","title":"Producer"},"licence":{"type":"string","enum":["LO-2.0","LO-1.0","ODbL","JRC","other"],"title":"Licence","default":"LO-2.0"},"retrieved_at":{"type":"string","format":"date-time","title":"Retrieved At"},"data_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Date"},"geometry_match":{"type":"string","enum":["parcel_id","rnb_id","ban_id","immeuble","point_in_polygon","radius","udi","commune","epci","iris","nearest","derived"],"title":"Geometry Match"},"match_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Detail"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"}},"type":"object","required":["key","value","source_id","source_label","source_url","producer","retrieved_at","geometry_match"],"title":"Fact","description":"Une valeur et toute sa provenance."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Offer":{"properties":{"rule_id":{"type":"string","title":"Rule Id"},"block":{"type":"string","title":"Block"},"category":{"type":"string","title":"Category"},"cta":{"type":"string","title":"Cta"},"partners":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Partners"},"disclosure":{"type":"string","title":"Disclosure"},"priority":{"type":"integer","title":"Priority","default":0},"granularity_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Granularity Notice"}},"type":"object","required":["rule_id","block","category","cta","disclosure"],"title":"Offer","description":"Offre contextuelle, toujours accompagnée de sa divulgation."},"Parcel":{"properties":{"parcel_id":{"type":"string","title":"Parcel Id"},"insee":{"type":"string","title":"Insee"},"prefixe":{"type":"string","title":"Prefixe","default":"000"},"section":{"type":"string","title":"Section"},"numero":{"type":"string","title":"Numero"},"contenance_m2":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contenance M2"},"commune_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune Name"},"geometry":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geometry"}},"type":"object","required":["parcel_id","insee","section","numero"],"title":"Parcel"},"ParcelProfile":{"properties":{"version":{"type":"string","const":"v1","title":"Version","default":"v1"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"context":{"title":"Context"},"blocks":{"items":{"$ref":"#/components/schemas/Block"},"type":"array","title":"Blocks"},"signals":{"items":{"$ref":"#/components/schemas/Signal"},"type":"array","title":"Signals"},"offers":{"items":{"$ref":"#/components/schemas/Offer"},"type":"array","title":"Offers"},"attributions":{"items":{"type":"string"},"type":"array","title":"Attributions"},"disclaimers":{"items":{"type":"string"},"type":"array","title":"Disclaimers"}},"type":"object","required":["generated_at","context"],"title":"ParcelProfile"},"ResolutionCandidate":{"properties":{"label":{"type":"string","title":"Label"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"type":{"type":"string","enum":["housenumber","street","locality","municipality","parcel","poi"],"title":"Type"},"ban_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ban Id"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insee"},"lon":{"type":"number","title":"Lon"},"lat":{"type":"number","title":"Lat"}},"type":"object","required":["label","type","lon","lat"],"title":"ResolutionCandidate","description":"Suggestion proposée quand l'entrée est ambiguë (score BAN insuffisant)."},"ResolutionContext":{"properties":{"query":{"type":"string","title":"Query"},"input_kind":{"type":"string","enum":["address","cadastral_ref","latlon","ban_id","rnb_id","parcel_id","insee"],"title":"Input Kind"},"status":{"type":"string","enum":["ok","ambiguous","not_found","partial"],"title":"Status","default":"ok"},"address":{"anyOf":[{"$ref":"#/components/schemas/ResolvedAddress"},{"type":"null"}]},"parcel":{"anyOf":[{"$ref":"#/components/schemas/Parcel"},{"type":"null"}]},"buildings":{"items":{"$ref":"#/components/schemas/Building"},"type":"array","title":"Buildings"},"commune":{"anyOf":[{"$ref":"#/components/schemas/Commune"},{"type":"null"}]},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"candidates":{"items":{"$ref":"#/components/schemas/ResolutionCandidate"},"type":"array","title":"Candidates"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Sources"}},"type":"object","required":["query","input_kind"],"title":"ResolutionContext","description":"Résultat de l'étape 1 ; entrée de tous les connecteurs."},"ResolvedAddress":{"properties":{"ban_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ban Id"},"label":{"type":"string","title":"Label"},"type":{"type":"string","enum":["housenumber","street","locality","municipality","parcel","poi"],"title":"Type"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insee"},"postcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postcode"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"lon":{"type":"number","title":"Lon"},"lat":{"type":"number","title":"Lat"}},"type":"object","required":["label","type","lon","lat"],"title":"ResolvedAddress"},"Signal":{"properties":{"rule_id":{"type":"string","title":"Rule Id"},"block":{"type":"string","title":"Block"},"label":{"type":"string","title":"Label"},"explain":{"type":"string","title":"Explain"},"facts":{"items":{"type":"string"},"type":"array","title":"Facts"},"evidence":{"items":{"type":"string"},"type":"array","title":"Evidence"}},"type":"object","required":["rule_id","block","label","explain"],"title":"Signal","description":"Constat déclenché par une règle, affichable seul (sans offre)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}