Microservice autonome (SQLite, pas de MySQL) — DVF Etalab/Cerema, permis Sitadel, piscines OSM.
Réponses JSON. Cette page : ?action=help ou l'URL nue.
https://dvf.facil.immo/ (HTTP GET, sauf rebuild*).
L'IDU = identifiant cadastral 14 caractères (ex. 33550000CI0217) ; les 2 premiers = département.
Les actions ADMIN exigent &token=CRON_TOKEN (cf. config.local.php).
Les gros rebuilds passent par le CLI php cron_build_sqlite.php --dept=33 --force (pas de timeout).
Référence des sources de données (geo-dvf, Cerema DVF+, trou de couverture, fix) : docs/DVF_SOURCES_DONNEES.md · règle #40 · GUIDE §21.
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
| search | GET | idu | Mutations DVF d'une parcelle (SQLite ou CSV + enrichissement Cerema API). Action par défaut. | ?idu=33550000CI0217 |
| extended | GET |
idu, lon, lat opt: contenance |
Recherche étendue par bbox GPS — pour les grandes parcelles (>2000 m²). | ?action=extended&idu=33550000CI0217&lon=-0.5727&lat=44.7697&contenance=360 |
| unite | GET | idu | Unité foncière complète (porteuse + parcelles associées) d'un IDU. | ?action=unite&idu=33550000CI0217 |
| search_by_address | GET |
num, voie, cp opt: citycode |
Parcelles candidates à partir de l'adresse NOTARIALE DVF (≥2020 Etalab). Signal indépendant du géocodeur. | ?action=search_by_address&num=4&voie=Rue%20Buffon&cp=33140&citycode=33550 |
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
| stats | GET | — | Inventaire : départements disponibles (CSV + SQLite), fichiers Cerema & Etalab. | ?action=stats |
| dvf_status | GET | dept | Le .db du département est-il prêt ? (endpoint léger pour le polling JS). | ?action=dvf_status&dept=33 |
| db_health | GET | dept | SANTÉ du .db : lignes par source (Etalab/Cerema), % adresses, plage d'années, verdict (ok / etalab_only / cerema_only / absent). Détecte la régression « .db sans Etalab ». | ?action=db_health&dept=33 |
| dvf_raw | GET |
idu OU voie OU prefix opt: dept, insee, num, source |
DIAGNOSTIC : dump brut DVF. Par IDU (id_parcelle + ancien_id_parcelle), par rue (LIKE), par préfixe d'IDU (cluster voisins). Avec source=1 : GREP des fichiers SOURCE bruts (Etalab .gz + Cerema CSV) que le build lit → si l'IDU est dans la source mais pas dans le .db = build qui saute la ligne ; absent partout = pas dans DVF open data. | ?action=dvf_raw&idu=33550000CI0217&source=1 |
| test | GET | — | Validation du format CSV (parsing) + version de l'API. | ?action=test |
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
| search_sitadel | GET |
idu opt: uf, num, voie, insee |
Permis de construire DIDO/Sitadel par IDU (+ UF + adresse) → détection piscine déclarée. | ?action=search_sitadel&idu=33550000CI0217 |
| sitadel_samples | GET |
dept opt: limit, order (random|recent|old), year |
Échantillon d'adresses avec piscine déclarée pour un département. | ?action=sitadel_samples&dept=33&limit=20 |
| sitadel_stats | GET | dept | Stats de validation de la règle piscine (GROUP BY TYP_ANNEXE × I_PISCINE × période). | ?action=sitadel_stats&dept=33 |
| sitadel_raw | GET |
idu OU insee + voie opt: num |
DIAGNOSTIC : dump brut des lignes Sitadel d'une parcelle/adresse (vérif alignement colonnes). | ?action=sitadel_raw&idu=40192000AW1041 |
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
| osm_pools | GET | bbox | Piscines OpenStreetMap dans une emprise (signal « visible », ODbL). bbox=lat_min,lon_min,lat_max,lon_max. | ?action=osm_pools&bbox=44.769,-0.573,44.770,-0.572 |
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
|
rebuild
ADMIN |
POST/GET | dept, token | Rebuild du .db SQLite DVF d'un département (Etalab + Cerema). HTTP ~60 s OVH : préférer le CLI cron_build_sqlite.php --dept=XX --force pour les gros depts. | ?action=rebuild&dept=33&token=CRON_TOKEN |
|
rebuild_sitadel
ADMIN |
GET | dept, token | Build du .db SQLite Sitadel (permis/piscine) d'un département. | ?action=rebuild_sitadel&dept=33&token=CRON_TOKEN |
| Action | Méthode | Paramètres | Description | Exemple |
|---|---|---|---|---|
|
help
page |
GET | — | Cette page (mode d'emploi + tableau des endpoints + self-check d'alignement). | ?action=help |
Règle d'or #39 — Tout nouvel endpoint (nouveau case dans index.php)
DOIT être déclaré dans $ENDPOINTS (help.php). Le bandeau ci-dessus passe au ROUGE
sinon : c'est le garde-fou qui empêche d'oublier la mise à jour.