{"openapi":"3.1.0","info":{"title":"TrustyData — Address & Route API","description":"\n**TrustyData API** — services de qualité de données pour les adresses\nfrançaises : autocomplétion, vérification, géocodage enrichi et calcul\nd'itinéraire.\n\n## Authentification\n\nToutes les requêtes — sauf `GET /version` — exigent un en-tête\n`Authorization: Bearer <votre_cle_api>`. Les clés sont émises depuis\nvotre espace client TrustyData. **Une clé d'API identifie un seul\nclient** : ne la partagez pas, ne l'embarquez pas dans un binaire ou\nune page web publique.\n\n## Plans et richesse des réponses\n\nQuatre plans : `DISCOVERY` (gratuit, 20 000 requêtes/mois), `STARTER`,\n`GROWTH`, `BUSINESS`. Le Pass Zones (`ZONES`), 15 jours, ouvre les routes\n`/zone/*` et la portée par durée de `/locations/search`. Le plan attaché à la\nclé contrôle :\n\n- **les endpoints accessibles** — par exemple `POST /route/compute` est\n  réservé à BUSINESS, `POST /route/summary` à partir de GROWTH ;\n- **le niveau de détail de la réponse** — les endpoints d'adresses\n  retournent un payload progressivement enrichi (position WGS84/Lambert\n  93 à partir de STARTER, IRIS à partir de GROWTH, grille statistique\n  INSEE Filosofi à partir de BUSINESS).\n\n## Quotas et rate limits\n\nLe plan DISCOVERY est plafonné à 20 000 requêtes par mois. Les autres\nplans suivent les volumes contractuels de votre abonnement. Un\ndépassement renvoie `429 Too Many Requests`.\n\n## Sources de données\n\n- **BAN** — Base Adresse Nationale (api.gouv.fr)\n- **INSEE** — Code Officiel Géographique, recensement, IRIS, Filosofi\n- **OpenStreetMap** — données de routage via Valhalla (licence ODbL,\n  attribution obligatoire — voir `/route/compute`)\n\n## Format des réponses\n\nLes noms de champs sont en français (`nom_commune`, `code_postal`,\n`libelle_acheminement`…) — ils suivent les conventions BAN/INSEE. Les\ncoordonnées sont en WGS84 (lat/lon) et, pour les plans qui l'incluent,\négalement en Lambert 93 (x/y).\n\n## Support\n\nDocumentation : <https://trustydata.fr/docs>\n","contact":{"name":"TrustyData","url":"https://trustydata.fr/","email":"contact@trustydata.fr"},"license":{"name":"Proprietary — TrustyData Terms of Service","url":"https://trustydata.fr/cgu"},"version":"v1.9.0"},"servers":[{"url":"/services/v1"},{"url":"https://api.trustydata.app/services/v1","description":"Production"},{"url":"http://localhost:8080","description":"Local development"}],"paths":{"/version":{"get":{"tags":["System"],"summary":"Get Service Version Information","description":"**Authentification** : non requise.\n\nRetourne les versions de tous les composants du service (API, parser d'adresses, moteur de recherche, service d'authentification, service de recherche d'entreprise).","operationId":"get_version_version_get","responses":{"200":{"description":"Version information retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Version"},"example":{"autocomplete":"v0.1.0-alpha","parser":"v1.2.3","search_engine":"1.4.2","auth_service":"v2.1.0","company_service":"1.0.0","locations_service":"1.0.0","insee_service":"0.1.0","circulation_pointe":false}}}}}}},"/me":{"get":{"tags":["System"],"summary":"Account information for the calling API key","description":"**Authentification** : requise. **Non facturé** — cet appel ne consomme aucun crédit et n'est soumis à aucun contrôle de quota.\n\nRenvoie le plan attaché à la clé, sa consommation sur la période en cours, son plafond éventuel, et la liste des services que le plan autorise. Destiné aux intégrations tierces (Zapier, Make) qui doivent tester une connexion et connaître le périmètre d'une clé avant d'appeler un endpoint qu'elle ne couvre pas.\n\nUne clé dont le quota est épuisé reçoit malgré tout une réponse 200 : elle reste valide, seuls les endpoints facturés lui sont refusés.","operationId":"get_me_me_get","responses":{"200":{"description":"Account information retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountInfo"},"example":{"plan":"GROWTH","consumption_count":1284,"quota_limit":500000,"services":["LOCALITY_AUTOCOMPLETE","LOCALITY_SEARCH","ADDRESS_AUTOCOMPLETE","ADDRESS_VIEW","ADDRESS_GEOLOCATION","ADDRESS_GEOCODING","ADDRESS_VERIFY","ADDRESS_PROXIMITY","ROUTE_MATRIX","ZONE_STATS","ZONE_COMPARE","ZONE_SYNTHESE","COMPANY_SEARCH","COMPANY_VIEW","COMPANY_GEOLOCATION","COMPANY_ENRICHMENT","COMPANY_PROXIMITY"]}}}},"401":{"description":"Missing or invalid API key"},"503":{"description":"Authentication service unavailable"}},"security":[{"ApiKeyAuth":[]}]}},"/address/autocomplete":{"get":{"tags":["Addresses"],"summary":"Address Autocomplete Search","description":"**Plan minimum** : `DISCOVERY` · **Réponse enrichie** : STARTER ajoute la position (WGS84 + Lambert 93), GROWTH ajoute le géocodage IRIS, BUSINESS ajoute la grille statistique INSEE Filosofi.\n\nRecherche d'adresses françaises avec autocomplétion. Retourne une liste de candidats triés par score de pertinence (0 à 1). Source : BAN enrichie.","operationId":"autocomplete_search_address_autocomplete_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search query for address autocomplete","title":"Q"},"description":"Search query for address autocomplete","examples":{"full_address":{"summary":"Complete address","value":"215 Chemin des Acacias, 01600 Sainte-Euphémie"},"street_only":{"summary":"More fast search","value":"215 Acacias Sainte-Euphémie"},"with_city":{"summary":"Street and postal code only","value":"215 Acacias, 01600"}}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"details","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Details"}}],"responses":{"200":{"description":"Successful autocomplete search","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AutocompleteFullResponse"},{"$ref":"#/components/schemas/AutocompleteGrowthResponse"},{"$ref":"#/components/schemas/AutocompleteStarterResponse"},{"$ref":"#/components/schemas/AutocompleteDiscoveryResponse"},{"$ref":"#/components/schemas/AutocompleteMinimalResponse"}],"title":"Response Autocomplete Search Address Autocomplete Get"},"examples":{"Business":{"summary":"Business plan response","value":{"status":"OK","message":"","suggestions":[{"score":0.99,"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","ligne_commune":"01600 Sainte-Euphémie","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","numero":"215","rep":"","nom_voie":"Chemin des Acacias","code_postal":"01600","nom_commune":"Sainte-Euphémie","code_insee":"01353","id_fantoir":"01353_0100","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"SAINTE-EUPHEMIE","nom_afnor":"CHEMIN DES ACACIAS","source_position":"commune","certification_commune":true,"cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"id_ban":"01353_0100_00215","position":{"lat":45.947598,"lon":4.805424,"x":839847.95,"y":6540253.43,"type_position":"entrée"},"geocoding":{"iris":"0000","code_iris":"013530000","nom_iris":"Sainte-Euphémie","type_iris":"Z"},"statistical_grid":{"id_inspire":"CRS3035RES200mN2551200E3918000","id_carr1km":"CRS3035RES1000mN2551000E3918000","i_est_cr":1,"id_carr_n":"CRS3035RES1000mN2551000E3918000","groupe":608522,"depcom":"01322","i_pauv":0,"id_car2010":"CRS3035RES200mN2551200E3918000","ind":2,"men":0.8,"men_pauv":0,"men_1ind":0.1,"men_5ind":0.1,"men_prop":0.7,"men_fmp":0.1,"ind_snv":53964,"men_surf":92.3,"men_coll":0.1,"men_mais":0.7,"log_av45":0.2,"log_45_70":0.1,"log_70_90":0.3,"log_ap90":0.2,"log_inc":0,"log_soc":0,"ind_0_3":0.1,"ind_4_5":0,"ind_6_10":0,"ind_11_17":0.2,"ind_18_24":0.1,"ind_25_39":0.3,"ind_40_54":0.5,"ind_55_64":0.3,"ind_65_79":0.3,"ind_80p":0.1,"ind_inc":0.1,"i_est_1km":0}}]}},"Growth":{"summary":"Growth plan response","value":{"status":"OK","message":"","suggestions":[{"score":0.99,"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","ligne_commune":"01600 Sainte-Euphémie","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","numero":"215","rep":"","nom_voie":"Chemin des Acacias","code_postal":"01600","nom_commune":"Sainte-Euphémie","code_insee":"01353","id_fantoir":"01353_0100","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"SAINTE-EUPHEMIE","nom_afnor":"CHEMIN DES ACACIAS","source_position":"commune","certification_commune":true,"cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"id_ban":"01353_0100_00215","position":{"lat":45.947598,"lon":4.805424,"x":839847.95,"y":6540253.43,"type_position":"entrée"},"geocoding":{"iris":"0000","code_iris":"013530000","nom_iris":"Sainte-Euphémie","type_iris":"Z"}}]}},"Starter":{"summary":"Starter plan response","value":{"status":"OK","message":"","suggestions":[{"score":0.99,"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","ligne_commune":"01600 Sainte-Euphémie","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","numero":"215","rep":"","nom_voie":"Chemin des Acacias","code_postal":"01600","nom_commune":"Sainte-Euphémie","code_insee":"01353","id_fantoir":"01353_0100","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"SAINTE-EUPHEMIE","nom_afnor":"CHEMIN DES ACACIAS","source_position":"commune","certification_commune":true,"cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"id_ban":"01353_0100_00215","position":{"lat":45.947598,"lon":4.805424,"x":839847.95,"y":6540253.43,"type_position":"entrée"}}]}},"Discovery":{"summary":"Discovery plan response","value":{"status":"OK","message":"","suggestions":[{"score":0.99,"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","ligne_commune":"01600 Sainte-Euphémie","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","numero":"215","rep":"","nom_voie":"Chemin des Acacias","code_postal":"01600","nom_commune":"Sainte-Euphémie","code_insee":"01353","id_fantoir":"01353_0100","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"SAINTE-EUPHEMIE","nom_afnor":"CHEMIN DES ACACIAS","source_position":"commune","certification_commune":true,"cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"id_ban":"01353_0100_00215"}]}},"WithOutDetails":{"summary":"Without details response","value":{"status":"OK","message":"","suggestions":[{"score":0.99,"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","ligne_commune":"01600 Sainte-Euphémie","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215"}]}},"too_short":{"summary":"Query too short","value":{"status":"TOO_SHORT","message":"The request is too short, complete your input","suggestions":[]}}}}}},"403":{"description":"Forbidden - plan does not have access to this service","content":{"application/json":{"example":{"detail":"Your plan (STARTER) does not have access to this service. Please upgrade your plan."}}}},"429":{"422":{"description":"Address that cannot be parsed"},"500":{"description":"Address parsing service unavailable"},"description":"Too Many Requests - rate limit exceeded","content":{"application/json":{"examples":{"TooManyRequests":{"summary":"Rate limit exceeded","value":{"detail":"Your plan (STARTER) has exceeded the rate limit for this service. Please upgrade your plan."}},"DiscoveryLimit":{"summary":"MAX usage for limited Discovery plan exceeded","value":{"detail":"Rate limit exceeded. Max allowed usage for plan DISCOVERY is 20000 requests."}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/address/verify":{"post":{"tags":["Addresses"],"summary":"Address Verification","description":"**Plan minimum** : `DISCOVERY` · **Réponse enrichie** : STARTER ajoute la position (WGS84 + Lambert 93), GROWTH ajoute le géocodage IRIS, BUSINESS ajoute la grille statistique INSEE Filosofi.\n\nVérifie une adresse française saisie librement contre le référentiel BAN. Trois étapes : (1) parsing de l'adresse en tokens, (2) recherche de candidats, (3) dédup et scoring pour ne retenir que les meilleurs matchs. Le verdict retourné (`doublon_certain` / `doublon_probable` / aucun) indique la confiance dans le rapprochement.","operationId":"verify_address_address_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Verification completed","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VerifyBusinessResponse"},{"$ref":"#/components/schemas/VerifyGrowthResponse"},{"$ref":"#/components/schemas/VerifyStarterResponse"},{"$ref":"#/components/schemas/VerifyDiscoveryResponse"},{"$ref":"#/components/schemas/VerifyMinimalResponse"}],"title":"Response Verify Address Address Verify Post"},"examples":{"certain_match":{"summary":"One certain match","value":{"status":"success","message":"","matches":[{"score":0.95,"verdict":"match_exact","adresse":"32 Bis Rue de Labbeville, 95690 Nesles-la-Vallée","ligne_voie":"32 Bis Rue de Labbeville","ligne_commune":"95690 Nesles-la-Vallée","id":"95441_0045_00032","id_ban":"95441_0045_00032"}]}},"no_match":{"summary":"No verified match","value":{"status":"no_results","message":"No verified match found","matches":[]}}}}}},"400":{"description":"Request too short or invalid"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden - plan does not have access"},"422":{"description":"Validation error, or address that cannot be parsed"},"500":{"description":"Internal server error"}},"security":[{"ApiKeyAuth":[]}]}},"/address/view/{address_id}":{"get":{"tags":["Addresses"],"summary":"Get Address Details","description":"**Plan minimum** : `DISCOVERY` · **Réponse enrichie** : STARTER ajoute la position (WGS84 + Lambert 93), GROWTH ajoute le géocodage IRIS, BUSINESS ajoute la grille statistique INSEE Filosofi.\n\nRetourne le détail complet d'une adresse à partir de son identifiant unique (issu d'`/address/autocomplete` ou `/address/verify`).","operationId":"view_address_address_view__address_id__get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","title":"Address Id"}}],"responses":{"200":{"description":"Address details retrieved successfully","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AddressDetails"},{"$ref":"#/components/schemas/AddressWithGeolocation"},{"$ref":"#/components/schemas/AddressWithGeocoding"},{"$ref":"#/components/schemas/AddressWithStatisticalGrid"}],"title":"Response View Address Address View  Address Id  Get"},"example":{"adresse":"215 Chemin du Sarret, 84220 Beaumettes","ligne_voie":"215 Chemin du Sarret","ligne_commune":"84220 Beaumettes","id":"84013_0110_00215","numero":"215","rep":"","nom_voie":"Chemin du Sarret","code_postal":"84220","nom_commune":"Beaumettes","code_insee":"84013","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"BEAUMETTES","nom_afnor":"CHEMIN DU SARRET","source_position":"commune","certification_commune":true,"cad_parcelles":"840130000A0485"}}}},"404":{"description":"Address not found"},"500":{"description":"Internal server error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/address/proximity":{"get":{"tags":["Addresses"],"summary":"Search referential addresses within a radius","description":"**Plan minimum** : `GROWTH`.\n\nRecherche les adresses du référentiel situées dans un rayon de `rayon` mètres (50 km max) autour d'un point central. Le point est fourni soit en adresse libre (`adresse`), soit en coordonnées WGS84 (`lat` + `lon`) — l'un ou l'autre, pas les deux. Quand une adresse est fournie, elle est résolue via la même chaîne que `/address/verify` et le meilleur candidat sert de point central (`point_central.adresse_resolue`).\n\n`adresse` accepte aussi un **nom de commune** ou un code postal seul : le centre est alors le centre de cette commune. `point_central.precision` dit lequel des trois cas s'applique — `coordonnees` (lat/lon fournis tels quels), `adresse` (résolue au numéro) ou `commune`, auquel cas `point_central.commune` et `point_central.code_insee` sont renseignés et `point_central.id` vaut `null` : aucun document adresse n'a été retenu, il n'y a donc rien à passer à `/address/view/{id}`. Une adresse comportant une voie non résolue reste refusée en 422 — le repli sert les recherches à l'échelle d'une ville, pas les adresses fautives. Un nom qui ne correspond exactement à aucune commune française est refusé de la même façon : mieux vaut un refus qu'un centre plausible et faux.\n\n**Résultats** : triés par distance croissante. Chaque résultat reprend la structure de `/address/view` selon le plan (STARTER ajoute la position WGS84 + Lambert 93, GROWTH le géocodage IRIS, BUSINESS la grille statistique INSEE Filosofi), augmentée de `distance_m` (mètres, à vol d'oiseau).\n\n**Pagination stateless** : `offset` + `limit` (défaut 100, max 200 par page), au plus 5000 adresses parcourables par recherche. Pour itérer, suivez simplement `pagination.next_offset` : il donne l'offset de la page suivante et vaut `null` quand il n'y a plus rien à parcourir (la dernière page en bord de cap est tronquée, jamais refusée). `pagination.total_estime` est une **estimation** du total dans le rayon ; si `pagination.tronque` vaut `true`, le cap de 5000 est atteint et la zone en contient vraisemblablement davantage — réduire le rayon pour l'exhaustivité.","operationId":"address_proximity_address_proximity_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"rayon","in":"query","required":true,"schema":{"type":"integer","description":"Rayon de recherche en mètres (1 à 50 000)","title":"Rayon"},"description":"Rayon de recherche en mètres (1 à 50 000)"},{"name":"adresse","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Adresse libre du point central — exclusif avec lat/lon","title":"Adresse"},"description":"Adresse libre du point central — exclusif avec lat/lon"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude WGS84 du point central — avec lon","title":"Lat"},"description":"Latitude WGS84 du point central — avec lon"},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude WGS84 du point central — avec lat","title":"Lon"},"description":"Longitude WGS84 du point central — avec lat"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Taille de page (défaut 100, max 200)","title":"Limit"},"description":"Taille de page (défaut 100, max 200)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","description":"Décalage de pagination (0 ≤ offset < 5000) — pour itérer, reprendre pagination.next_offset","default":0,"title":"Offset"},"description":"Décalage de pagination (0 ≤ offset < 5000) — pour itérer, reprendre pagination.next_offset"}],"responses":{"200":{"description":"Adresses du rayon, triées par distance croissante","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ProximityFullResponse"},{"$ref":"#/components/schemas/ProximityGrowthResponse"},{"$ref":"#/components/schemas/ProximityStarterResponse"},{"$ref":"#/components/schemas/ProximityDiscoveryResponse"}],"title":"Response Address Proximity Address Proximity Get"},"example":{"point_central":{"lat":46.132481,"lon":4.914282,"adresse_resolue":"630 la Chèvre, 01400 L'Abergement-Clémenciat","id":"597ea9da-09d1-4b44-9b42-92797407a7dc","precision":"adresse"},"resultats":[{"id":"0e043f6d-…","adresse":"493 Route des Garaudes, 01400 L'Abergement-Clémenciat","ligne_voie":"493 Route des Garaudes","ligne_commune":"01400 L'Abergement-Clémenciat","numero":"493","rep":"","nom_voie":"Route des Garaudes","code_postal":"01400","nom_commune":"L'Abergement-Clémenciat","code_insee":"01001","id_fantoir":"01001_0040","code_insee_ancienne_commune":"","nom_ancienne_commune":"","nom_ld":"","libelle_acheminement":"L'ABERGEMENT-CLEMENCIAT","nom_afnor":"ROUTE DES GARAUDES","source_position":"inconnue","certification_commune":false,"cad_parcelles":"","id_ban":"01001_0040_00493","position":{"lat":46.13314,"lon":4.920519,"x":848259.1,"y":6561049.9,"type_position":"segment"},"geocoding":{"iris":"0000","code_iris":"010010000","nom_iris":"L'Abergement-Clémenciat","type_iris":"Z"},"distance_m":486}],"pagination":{"offset":0,"limit":100,"total_estime":14,"tronque":false}}}}},"400":{"description":"Invalid parameters (adresse XOR lat/lon, rayon, limit, offset)"},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Growth required)"},"422":{"description":"Unresolvable center address"},"500":{"description":"Search engine or parser error (e.g. missing index prerequisites)"},"503":{"description":"Search engine unavailable"}}}},"/company/search":{"get":{"tags":["Company"],"summary":"Rechercher des entreprises et des établissements","description":"Recherche dans la base SIRENE (INSEE) — entreprises et établissements français. **Un résultat est toujours un ÉTABLISSEMENT** (un SIRET), même en mode groupé.\n\n**Choisir le grain avec `grouper`**\n- `grouper=true` : un résultat par ENTREPRISE (SIREN), représentée par son meilleur établissement (le siège de préférence) — pour répondre à « quelles entreprises s'appellent X ? ».\n- `grouper=false` : un résultat par ÉTABLISSEMENT (SIRET) — pour répondre à « quels sites / points de vente ? ».\n- Omis : `true` si `q` est fourni ; `false` dès que `lat`/`lon`/`rayon_m` ou `siren` est fourni, ou en listing sans critère.\n\n**Exemples d'appels**\n```\nGET /company/search?q=TRUSTYDATA\nGET /company/search?q=97988532400017          # SIRET → match exact\nGET /company/search?q=conseil&ville=Nesles-la-Vallée&code_naf=62.02A\nGET /company/search?siren=979885324           # tous les établissements\nGET /company/search?lat=49.130633&lon=2.163253&rayon_m=500   # GROWTH+\n```\n\n**Lire la réponse**\n- `classement_pertinence: true` = résultats ordonnés par pertinence ; `false` = listing stable (tri par SIRET) ou tri par distance — dans ce cas le 1er résultat n'est PAS « le plus probable ».\n- `distance_m` n'est rempli qu'en mode proximité.\n- `siege` renvoie vers le siège quand le résultat est un établissement secondaire ; `null` si le résultat EST le siège (`est_siege: true`).\n- `diffusible: false` (unités non-diffusibles au sens INSEE) : nom et adresse sont masqués — c'est la loi, pas une donnée manquante.\n- Une liste vide fait autorité : aucune entreprise ne correspond.\n\nLa fiche complète s'obtient ensuite via `GET /company/view/{siret}`. Les résultats sont identiques pour tous les plans ; seule la recherche par proximité est réservée aux plans GROWTH et BUSINESS.","operationId":"company_search_company_search_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Terme de recherche (nom, dénomination, sigle, enseigne) — 2 à 200 caractères. Un SIREN (9 chiffres) ou un SIRET (14 chiffres), même formaté (« 552 100 554 »), est reconnu et recherché à l'exact.","examples":["TRUSTYDATA","97988532400017"],"title":"Q"},"description":"Terme de recherche (nom, dénomination, sigle, enseigne) — 2 à 200 caractères. Un SIREN (9 chiffres) ou un SIRET (14 chiffres), même formaté (« 552 100 554 »), est reconnu et recherché à l'exact."},{"name":"adresse","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre sur la voie de l'établissement (flou). Exige q.","examples":["32 B rue de Labbeville"],"title":"Adresse"},"description":"Filtre sur la voie de l'établissement (flou). Exige q."},{"name":"ville","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre sur la commune de l'établissement (flou). Exige q.","examples":["Nesles-la-Vallée"],"title":"Ville"},"description":"Filtre sur la commune de l'établissement (flou). Exige q."},{"name":"code_postal","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre sur le code postal de l'établissement (exact).","examples":["95690"],"title":"Code Postal"},"description":"Filtre sur le code postal de l'établissement (exact)."},{"name":"code_naf","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre sur le code APE/NAF (exact), ex. 62.01Z.","examples":["62.02A"],"title":"Code Naf"},"description":"Filtre sur le code APE/NAF (exact), ex. 62.01Z."},{"name":"etat_administratif","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtre sur l'état de l'ÉTABLISSEMENT : A (Actif) ou F (Fermé).","examples":["A"],"title":"Etat Administratif"},"description":"Filtre sur l'état de l'ÉTABLISSEMENT : A (Actif) ou F (Fermé)."},{"name":"siren","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tous les établissements d'une unité légale (pagination).","examples":["979885324"],"title":"Siren"},"description":"Tous les établissements d'une unité légale (pagination)."},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude WGS84 du centre — proximité, GROWTH+. Avec lon et rayon_m.","examples":[49.130633],"title":"Lat"},"description":"Latitude WGS84 du centre — proximité, GROWTH+. Avec lon et rayon_m."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude WGS84 du centre — proximité, GROWTH+. Avec lat et rayon_m.","examples":[2.163253],"title":"Lon"},"description":"Longitude WGS84 du centre — proximité, GROWTH+. Avec lat et rayon_m."},{"name":"rayon_m","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Rayon de recherche en mètres (≤ 50 000) — proximité, GROWTH+.","examples":[500],"title":"Rayon M"},"description":"Rayon de recherche en mètres (≤ 50 000) — proximité, GROWTH+."},{"name":"grouper","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"true : 1 résultat par entreprise (SIREN), représentée par son meilleur établissement (siège préféré) — exige q ou un filtre sélectif. false : 1 résultat par établissement (SIRET). Omis : true si q est présent, false dès que lat/lon/rayon_m ou siren est fourni, ou en listing sans critère.","title":"Grouper"},"description":"true : 1 résultat par entreprise (SIREN), représentée par son meilleur établissement (siège préféré) — exige q ou un filtre sélectif. false : 1 résultat par établissement (SIRET). Omis : true si q est présent, false dès que lat/lon/rayon_m ou siren est fourni, ou en listing sans critère."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Numéro de page (≥ 1).","default":1,"title":"Page"},"description":"Numéro de page (≥ 1)."},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Taille de page (1–100).","default":10,"title":"Per Page"},"description":"Taille de page (1–100)."}],"responses":{"200":{"description":"Résultats de recherche (identiques pour tous les plans)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySearchResponse"},"examples":{"par_nom":{"summary":"Par nom — GET /company/search?q=TRUSTYDATA","description":"Mode groupé implicite (`grouper` omis + `q` présent) : un résultat par ENTREPRISE (SIREN), représentée par son meilleur établissement — le siège quand il correspond. `classement_pertinence: true` = les résultats sont ordonnés du plus au moins pertinent.","value":{"results":[{"siren":"979885324","siret":"97988532400017","nic":"00017","est_siege":true,"diffusible":true,"nom_complet":"TRUSTYDATA","enseigne":"KRIKRAM","adresse":"32 B RUE DE LABBEVILLE","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2023-10-01","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"tranche_effectifs":{"code":"NN","libelle":"Unité non employeuse"},"etat_administratif":{"code":"A","libelle":"Actif"}}],"total_results":1,"total_capped":false,"resultats_approches":false,"classement_pertinence":true,"page":1,"per_page":10}},"par_siret":{"summary":"Par SIRET ou SIREN — GET /company/search?q=97988532400017","description":"Un SIREN (9 chiffres) ou un SIRET (14 chiffres) dans `q` est reconnu et cherché à l'exact, même formaté avec des espaces. Renvoie donc au plus un résultat. Pour la fiche complète, enchaîner sur `GET /company/view/{siret}`.","value":{"results":[{"siren":"979885324","siret":"97988532400017","nic":"00017","est_siege":true,"diffusible":true,"nom_complet":"TRUSTYDATA","enseigne":"KRIKRAM","adresse":"32 B RUE DE LABBEVILLE","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2023-10-01","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"tranche_effectifs":{"code":"NN","libelle":"Unité non employeuse"},"etat_administratif":{"code":"A","libelle":"Actif"}}],"total_results":1,"total_capped":false,"resultats_approches":false,"classement_pertinence":true,"page":1,"per_page":10}},"par_ville_et_activite":{"summary":"Filtres — GET /company/search?q=conseil&ville=Nesles-la-Vallée&code_naf=62.02A","description":"`ville`, `adresse`, `code_postal`, `code_naf` et `etat_administratif` affinent une recherche `q`. `etat_administratif=A` ne garde que les établissements ouverts (F = fermés).","value":{"results":[{"siren":"979885324","siret":"97988532400017","nic":"00017","est_siege":true,"diffusible":true,"nom_complet":"TRUSTYDATA","enseigne":"KRIKRAM","adresse":"32 B RUE DE LABBEVILLE","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2023-10-01","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"tranche_effectifs":{"code":"NN","libelle":"Unité non employeuse"},"etat_administratif":{"code":"A","libelle":"Actif"}},{"siren":"909169609","siret":"90916960900015","nic":"00015","est_siege":true,"diffusible":true,"nom_complet":"NETABEE","enseigne":"NETABEE","adresse":"2 ALLEE DES MARRONNIERS","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2022-01-05","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5710","libelle":"SAS, société par actions simplifiée"},"tranche_effectifs":{"code":"01","libelle":"1 ou 2 salariés"},"etat_administratif":{"code":"A","libelle":"Actif"}}],"total_results":2,"total_capped":false,"resultats_approches":false,"classement_pertinence":true,"page":1,"per_page":10}},"tous_les_etablissements":{"summary":"Établissements d'une entreprise — GET /company/search?siren=979885324","description":"`siren` liste TOUS les établissements (SIRET) de l'unité légale, sans regroupement (`grouper` bascule automatiquement à false). Ici TRUSTYDATA n'a qu'un établissement, son siège.","value":{"results":[{"siren":"979885324","siret":"97988532400017","nic":"00017","est_siege":true,"diffusible":true,"nom_complet":"TRUSTYDATA","enseigne":"KRIKRAM","adresse":"32 B RUE DE LABBEVILLE","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2023-10-01","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"tranche_effectifs":{"code":"NN","libelle":"Unité non employeuse"},"etat_administratif":{"code":"A","libelle":"Actif"}}],"total_results":1,"total_capped":false,"resultats_approches":false,"classement_pertinence":false,"page":1,"per_page":10}},"proximite":{"summary":"Proximité (GROWTH+) — GET /company/search?lat=49.130633&lon=2.163253&rayon_m=500&code_naf=62.02A","description":"Recherche géographique autour d'un point WGS84 (rayon ≤ 50 000 m), réservée aux plans GROWTH et BUSINESS (403 sinon). Un résultat = un ÉTABLISSEMENT (jamais groupé), `distance_m` porte la distance au centre et les résultats sont triés du plus proche au plus lointain — d'où `classement_pertinence: false` (tri par distance, pas par pertinence).","value":{"results":[{"siren":"979885324","siret":"97988532400017","nic":"00017","est_siege":true,"diffusible":true,"nom_complet":"TRUSTYDATA","enseigne":"KRIKRAM","adresse":"32 B RUE DE LABBEVILLE","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2023-10-01","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"tranche_effectifs":{"code":"NN","libelle":"Unité non employeuse"},"etat_administratif":{"code":"A","libelle":"Actif"},"distance_m":0.0},{"siren":"909169609","siret":"90916960900015","nic":"00015","est_siege":true,"diffusible":true,"nom_complet":"NETABEE","enseigne":"NETABEE","adresse":"2 ALLEE DES MARRONNIERS","code_postal":"95690","commune":"NESLES-LA-VALLEE","code_commune":"95446","date_creation":"2022-01-05","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"categorie_juridique":{"code":"5710","libelle":"SAS, société par actions simplifiée"},"tranche_effectifs":{"code":"01","libelle":"1 ou 2 salariés"},"etat_administratif":{"code":"A","libelle":"Actif"},"distance_m":264.561403}],"total_results":2,"total_capped":false,"resultats_approches":false,"classement_pertinence":false,"page":1,"per_page":10}},"aucun_resultat":{"summary":"Aucun résultat","description":"Une liste vide fait autorité : aucune entreprise de la base SIRENE ne correspond aux critères. Ne jamais compléter de mémoire.","value":{"results":[],"total_results":0,"total_capped":false,"resultats_approches":false,"classement_pertinence":true,"page":1,"per_page":10}}}}}},"401":{"description":"Clé d'API manquante ou invalide"},"403":{"description":"Recherche par proximité réservée aux plans GROWTH et BUSINESS"},"503":{"description":"Service entreprise temporairement indisponible"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/company/view/{etablissement_id}":{"get":{"tags":["Company"],"summary":"Fiche entreprise / établissement (universelle)","description":"Fiche détaillée d'une entreprise française. **Un seul identifiant, deux usages** :\n- `GET /company/view/97988532400017` — SIRET (14 chiffres) → fiche de CET établissement ;\n- `GET /company/view/979885324` — SIREN (9 chiffres) → fiche du SIÈGE de l'entreprise.\n\n**Structure de la réponse** : la racine décrit l'ÉTABLISSEMENT (adresse, activité, effectif, état) et le bloc `unite_legale` décrit l'ENTREPRISE qui le porte (identité, dirigeants, finances…). Pour une donnée d'entreprise (dirigeants, chiffre d'affaires, TVA), lire `unite_legale` ; pour une donnée de site (adresse, IDCC), lire la racine.\n\n**Richesse selon le plan** — les champs hors plan sont ABSENTS de la réponse (pas à `null`) ; voir les exemples de réponse, un par plan :\n\n| Plan | Racine (établissement) | Bloc `unite_legale` (entreprise) |\n|---|---|---|\n| DISCOVERY | identité + adresse complète | identité |\n| STARTER | + `latitude`/`longitude` | + `tva`, compteurs d'établissements |\n| GROWTH | + `epci`, `conventions_collectives` | + `dirigeants`, `identite_rne` |\n| BUSINESS | (= GROWTH) | + `finances`, `procedures_collectives` |\n\nUn champ absent parce qu'il est hors plan ne signifie donc jamais que la donnée n'existe pas : proposer la montée de plan plutôt que d'affirmer l'absence de la donnée.","operationId":"company_view_company_view__etablissement_id__get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"etablissement_id","in":"path","required":true,"schema":{"type":"string","description":"SIRET (14 chiffres) → fiche de l'établissement ; SIREN (9 chiffres) → fiche du siège.","examples":["97988532400017","979885324"],"title":"Etablissement Id"},"description":"SIRET (14 chiffres) → fiche de l'établissement ; SIREN (9 chiffres) → fiche du siège."}],"responses":{"200":{"description":"Fiche de l'établissement — contenu selon le plan de la clé","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EstablishmentWithFinancials"},{"$ref":"#/components/schemas/EstablishmentWithEnrichment"},{"$ref":"#/components/schemas/EstablishmentWithGeolocation"},{"$ref":"#/components/schemas/EstablishmentDetails"}],"title":"Response Company View Company View  Etablissement Id  Get"},"examples":{"business":{"summary":"Plan BUSINESS — fiche complète","description":"Tout GROWTH, plus dans `unite_legale` : `finances` (exercices publiés — chiffre d'affaires, marge brute, EBE, résultat net) et `procedures_collectives` (jugements BODACC ; `procedure_en_cours: false` = aucune procédure en cours).","value":{"siret":"97988532400017","siren":"979885324","nic":"00017","est_siege":true,"nom_complet":"TRUSTYDATA","adresse":"32 B RUE DE LABBEVILLE 95690 NESLES-LA-VALLEE","numero_voie":"32","indice_repetition":"B","type_voie":"RUE","libelle_voie":"DE LABBEVILLE","code_postal":"95690","commune":"95446","libelle_commune":"NESLES-LA-VALLEE","departement":{"code":"95","libelle":"Val-d'Oise"},"region":{"code":"11","libelle":"Île-de-France"},"liste_enseignes":[],"nom_commercial":"KRIKRAM","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","date_creation":"2023-10-01","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"caractere_employeur":false,"etat_administratif":{"code":"A","libelle":"Actif"},"diffusible":true,"unite_legale":{"siren":"979885324","nom_complet":"TRUSTYDATA","nom_raison_sociale":"TRUSTYDATA","nature_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","etat_administratif":{"code":"A","libelle":"Active"},"date_creation":"2023-10-01","categorie_entreprise":"PME","annee_categorie_entreprise":"2023","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"economie_sociale_solidaire":false,"complements":{"est_ess":false,"est_entrepreneur_individuel":false},"diffusible":true,"tva":"FR77979885324","nombre_etablissements":1,"nombre_etablissements_ouverts":1,"dirigeants":[{"type_dirigeant":"physique","nom":"TRISTRAM","prenoms":"Hervé Daniel","qualite":{"code":"30","libelle":"Gérant"},"date_naissance":"1975-06","opposition_prospection":true}],"identite_rne":{"capital":{"montant":500.0,"devise":"EUR","variable":false},"objet_social":"La Société a pour objet :\nL'activité de conseil informatique et technologique,\nConseil et prestations de services en analyse de données, organisation, assistance à la mise en œuvre de solutions informatiques, développement et amélioration des systèmes et outils d'information,\nCoaching et formations dans les domaines sus mentionnés","forme_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"}},"finances":[{"annee":2025,"date_cloture":"2025-08-31","type_bilan":{"code":"C","libelle":"Complet"},"chiffre_affaires":119794,"marge_brute":117149,"ebe":2267,"resultat_net":1350}],"procedures_collectives":{"procedure_en_cours":false,"jugements":[]}},"latitude":49.130632999986936,"longitude":2.1632529999999996,"localisation":{"source":"insee","precision":"adresse"},"epci":{"code":"249500430","libelle":"Communauté de communes Sausseron Impressionnistes"},"conventions_collectives":[]}},"growth":{"summary":"Plan GROWTH — + dirigeants, RNE, EPCI, conventions collectives","description":"Tout STARTER, plus à la racine : `epci` et `conventions_collectives` (IDCC applicables à CET établissement, pas à toute l'entreprise ; une liste vide = aucune convention rattachée à ce site). Et dans `unite_legale` : `dirigeants` (RNE) et `identite_rne` (capital, objet social, forme juridique). Pas de données financières — plan BUSINESS.","value":{"siret":"97988532400017","siren":"979885324","nic":"00017","est_siege":true,"nom_complet":"TRUSTYDATA","adresse":"32 B RUE DE LABBEVILLE 95690 NESLES-LA-VALLEE","numero_voie":"32","indice_repetition":"B","type_voie":"RUE","libelle_voie":"DE LABBEVILLE","code_postal":"95690","commune":"95446","libelle_commune":"NESLES-LA-VALLEE","departement":{"code":"95","libelle":"Val-d'Oise"},"region":{"code":"11","libelle":"Île-de-France"},"liste_enseignes":[],"nom_commercial":"KRIKRAM","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","date_creation":"2023-10-01","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"caractere_employeur":false,"etat_administratif":{"code":"A","libelle":"Actif"},"diffusible":true,"unite_legale":{"siren":"979885324","nom_complet":"TRUSTYDATA","nom_raison_sociale":"TRUSTYDATA","nature_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","etat_administratif":{"code":"A","libelle":"Active"},"date_creation":"2023-10-01","categorie_entreprise":"PME","annee_categorie_entreprise":"2023","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"economie_sociale_solidaire":false,"complements":{"est_ess":false,"est_entrepreneur_individuel":false},"diffusible":true,"tva":"FR77979885324","nombre_etablissements":1,"nombre_etablissements_ouverts":1,"dirigeants":[{"type_dirigeant":"physique","nom":"TRISTRAM","prenoms":"Hervé Daniel","qualite":{"code":"30","libelle":"Gérant"},"date_naissance":"1975-06","opposition_prospection":true}],"identite_rne":{"capital":{"montant":500.0,"devise":"EUR","variable":false},"objet_social":"La Société a pour objet :\nL'activité de conseil informatique et technologique,\nConseil et prestations de services en analyse de données, organisation, assistance à la mise en œuvre de solutions informatiques, développement et amélioration des systèmes et outils d'information,\nCoaching et formations dans les domaines sus mentionnés","forme_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"}}},"latitude":49.130632999986936,"longitude":2.1632529999999996,"localisation":{"source":"insee","precision":"adresse"},"epci":{"code":"249500430","libelle":"Communauté de communes Sausseron Impressionnistes"},"conventions_collectives":[]}},"starter":{"summary":"Plan STARTER — + géolocalisation, TVA, compteurs d'établissements","description":"Tout DISCOVERY, plus à la racine : `latitude`/`longitude` (WGS84) de l'établissement et `localisation` — provenance du point (`insee` : stock SIRENE ; `ban` : géocodage complémentaire TrustyData) et précision (`adresse`, `voie` ou `lieu_dit`, jamais le centroïde de la commune), `null` sans coordonnées. Et dans `unite_legale` : `tva` (n° intracommunautaire), `nombre_etablissements` et `nombre_etablissements_ouverts`.","value":{"siret":"97988532400017","siren":"979885324","nic":"00017","est_siege":true,"nom_complet":"TRUSTYDATA","adresse":"32 B RUE DE LABBEVILLE 95690 NESLES-LA-VALLEE","numero_voie":"32","indice_repetition":"B","type_voie":"RUE","libelle_voie":"DE LABBEVILLE","code_postal":"95690","commune":"95446","libelle_commune":"NESLES-LA-VALLEE","departement":{"code":"95","libelle":"Val-d'Oise"},"region":{"code":"11","libelle":"Île-de-France"},"liste_enseignes":[],"nom_commercial":"KRIKRAM","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","date_creation":"2023-10-01","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"caractere_employeur":false,"etat_administratif":{"code":"A","libelle":"Actif"},"diffusible":true,"unite_legale":{"siren":"979885324","nom_complet":"TRUSTYDATA","nom_raison_sociale":"TRUSTYDATA","nature_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","etat_administratif":{"code":"A","libelle":"Active"},"date_creation":"2023-10-01","categorie_entreprise":"PME","annee_categorie_entreprise":"2023","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"economie_sociale_solidaire":false,"complements":{"est_ess":false,"est_entrepreneur_individuel":false},"diffusible":true,"tva":"FR77979885324","nombre_etablissements":1,"nombre_etablissements_ouverts":1},"latitude":49.130632999986936,"longitude":2.1632529999999996,"localisation":{"source":"insee","precision":"adresse"}}},"discovery":{"summary":"Plan DISCOVERY — identité et adresse","description":"Identité et adresse complète de l'établissement, plus l'identité de l'entreprise dans `unite_legale`. Les champs des plans supérieurs sont ABSENTS de la réponse (ils ne sont pas à `null`) : leur absence signifie « non inclus dans le plan », jamais « donnée inexistante ».","value":{"siret":"97988532400017","siren":"979885324","nic":"00017","est_siege":true,"nom_complet":"TRUSTYDATA","adresse":"32 B RUE DE LABBEVILLE 95690 NESLES-LA-VALLEE","numero_voie":"32","indice_repetition":"B","type_voie":"RUE","libelle_voie":"DE LABBEVILLE","code_postal":"95690","commune":"95446","libelle_commune":"NESLES-LA-VALLEE","departement":{"code":"95","libelle":"Val-d'Oise"},"region":{"code":"11","libelle":"Île-de-France"},"liste_enseignes":[],"nom_commercial":"KRIKRAM","activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","date_creation":"2023-10-01","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"caractere_employeur":false,"etat_administratif":{"code":"A","libelle":"Actif"},"diffusible":true,"unite_legale":{"siren":"979885324","nom_complet":"TRUSTYDATA","nom_raison_sociale":"TRUSTYDATA","nature_juridique":{"code":"5499","libelle":"Société à responsabilité limitée (sans autre indication)"},"activite_principale":{"code":"62.02A","libelle":"Conseil en systèmes et logiciels informatiques"},"section_activite_principale":"J","etat_administratif":{"code":"A","libelle":"Active"},"date_creation":"2023-10-01","categorie_entreprise":"PME","annee_categorie_entreprise":"2023","tranche_effectif_salarie":{"code":"NN","libelle":"Unité non employeuse"},"economie_sociale_solidaire":false,"complements":{"est_ess":false,"est_entrepreneur_individuel":false},"diffusible":true}}}}}}},"401":{"description":"Clé d'API manquante ou invalide"},"404":{"description":"SIREN ou SIRET introuvable"},"503":{"description":"Service entreprise temporairement indisponible"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/search":{"get":{"tags":["Locations"],"summary":"Rechercher les sites d'un référentiel dans un rayon ou une durée de trajet","description":"Recherche de proximité dans **votre propre référentiel de lieux** (boutiques, restaurants, agences — appelés *sites*), pas dans un référentiel public.\n\nLe centre se donne soit par `lat`+`lon`, soit par `adresse` (résolue par le même moteur que `/address/verify`), jamais les deux.\n\n`adresse` accepte aussi un **nom de commune** ou un code postal seul : le centre est alors celui de la commune. `point_central.precision` dit lequel des trois cas s'applique (`coordonnees`, `adresse`, `commune`) — un rayon de 2 km n'a pas le même sens autour d'un numéro de rue et autour du centre d'une grande ville. Un nom qui ne correspond exactement à aucune commune française est refusé en 422.\n\nLes résultats sont triés du plus proche au plus lointain, chacun portant sa `distance_m` et son bloc `ouverture` calculé dans le fuseau du site.\n\nDeux moteurs de portée, exclusifs l'un de l'autre : `rayon` (à vol d'oiseau, tous plans à partir de STARTER) ou `duree` + `mode` (isochrone — le temps de trajet réel, plan GROWTH) ; `circulation=pointe` (voiture seulement) place l'isochrone à l'heure de pointe du matin, sur des vitesses typiques modélisées — jamais du trafic temps réel. Refus : 422 `circulation_sans_duree`, `circulation_mode_incompatible` ; 503 `circulation_indisponible` tant que `pointe` n'est pas ouvert (`circulation_pointe` de `GET /version`).\n\n**Le tri est toujours à vol d'oiseau**, y compris avec `distances=true` : `duree_s` et `distance_routiere_m` enrichissent la page rendue, ils ne réordonnent pas les résultats.\n\n**Attribution OSM (ODbL) obligatoire** dès que Valhalla est sollicité : avec une `duree` (isochrone), mais aussi avec `distances=true` sur une recherche par `rayon` pur — voir le champ `attribution`.\n\n**Deux sortes de clés.** Une clé secrète (`td_…`) appelle cet endpoint depuis votre serveur. Une clé publiable (`tdp_…`) l'appelle depuis le navigateur de vos visiteurs : elle exige un en-tête `Origin` correspondant à l'un des domaines déclarés sur la clé, n'ouvre aucun autre endpoint, et reçoit une projection réduite des sites (ni `nom_interne`, ni champs techniques).\n\n**Plan** : STARTER et au-delà. `tags`, `duree` et `distances` exigent GROWTH.","operationId":"locations_search_locations_search_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"referentiel","in":"query","required":true,"schema":{"type":"string","description":"Code du référentiel à interroger.","examples":["boutiques"],"title":"Referentiel"},"description":"Code du référentiel à interroger."},{"name":"rayon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":50,"minimum":1},{"type":"null"}],"description":"Rayon de recherche en kilomètres (1–50). Exclusif de `duree`.","examples":[10],"title":"Rayon"},"description":"Rayon de recherche en kilomètres (1–50). Exclusif de `duree`."},{"name":"duree","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"description":"Durée de trajet en minutes (1–30) — zone de chalandise réelle. Exclusif de `rayon`. Plan GROWTH.","examples":[15],"title":"Duree"},"description":"Durée de trajet en minutes (1–30) — zone de chalandise réelle. Exclusif de `rayon`. Plan GROWTH."},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(auto|pieton|velo)$"},{"type":"null"}],"description":"Mode de déplacement de l'isochrone. Défaut `auto`. N'a de sens qu'avec `duree`.","examples":["auto"],"title":"Mode"},"description":"Mode de déplacement de l'isochrone. Défaut `auto`. N'a de sens qu'avec `duree`."},{"name":"circulation","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(fluide|pointe)$"},{"type":"null"}],"description":"Conditions de circulation de l'isochrone. `fluide` (défaut) : circulation libre, vitesse de base du réseau. `pointe` : heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité, pas de trafic temps réel. N'a de sens qu'avec `duree`, et `pointe` seulement en `mode` `auto`. 503 `circulation_indisponible` si le réglage n'est pas encore ouvert sur cette plateforme.","examples":["pointe"],"title":"Circulation"},"description":"Conditions de circulation de l'isochrone. `fluide` (défaut) : circulation libre, vitesse de base du réseau. `pointe` : heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité, pas de trafic temps réel. N'a de sens qu'avec `duree`, et `pointe` seulement en `mode` `auto`. 503 `circulation_indisponible` si le réglage n'est pas encore ouvert sur cette plateforme."},{"name":"distances","in":"query","required":false,"schema":{"type":"boolean","description":"Ajoute la distance et la durée **routières** aux 25 premiers résultats, calculées dans le `mode` de la portée (voiture sur une portée par `rayon`). Le tri, lui, reste à vol d'oiseau. Les durées routières sont toujours calculées en circulation libre, y compris sous une portée `circulation=pointe`. Plan GROWTH.","default":false,"title":"Distances"},"description":"Ajoute la distance et la durée **routières** aux 25 premiers résultats, calculées dans le `mode` de la portée (voiture sur une portée par `rayon`). Le tri, lui, reste à vol d'oiseau. Les durées routières sont toujours calculées en circulation libre, y compris sous une portée `circulation=pointe`. Plan GROWTH."},{"name":"polygone","in":"query","required":false,"schema":{"type":"boolean","description":"Renvoie le contour de l'isochrone dans `portee.polygone` (10–20 Ko).","default":false,"title":"Polygone"},"description":"Renvoie le contour de l'isochrone dans `portee.polygone` (10–20 Ko)."},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90,"minimum":-90},{"type":"null"}],"description":"Latitude WGS84 du centre. Avec lon, et sans adresse.","examples":[48.853],"title":"Lat"},"description":"Latitude WGS84 du centre. Avec lon, et sans adresse."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180,"minimum":-180},{"type":"null"}],"description":"Longitude WGS84 du centre. Avec lat, et sans adresse.","examples":[2.3499],"title":"Lon"},"description":"Longitude WGS84 du centre. Avec lat, et sans adresse."},{"name":"adresse","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Adresse libre du centre, résolue par le moteur d'adresses. Alternative à lat/lon.","examples":["12 rue Scribe 75009 Paris"],"title":"Adresse"},"description":"Adresse libre du centre, résolue par le moteur d'adresses. Alternative à lat/lon."},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Étiquettes exigées — répétable et **conjonctif** : le site doit toutes les porter. Plan GROWTH.","examples":[["musee"]],"title":"Tags"},"description":"Étiquettes exigées — répétable et **conjonctif** : le site doit toutes les porter. Plan GROWTH."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Taille de page (1–200).","default":100,"title":"Limit"},"description":"Taille de page (1–200)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":0,"description":"Décalage de pagination.","default":0,"title":"Offset"},"description":"Décalage de pagination."}],"responses":{"200":{"description":"Résultats. Une clé publiable reçoit une projection réduite : ni `nom_interne`, ni champs techniques.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LocationsRechercheSortie"},{"$ref":"#/components/schemas/LocationsRechercheSortiePublique"}],"title":"Response 200 Locations Search Locations Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/referentiels":{"get":{"tags":["Locations"],"summary":"Lister vos référentiels de lieux","description":"Tous vos référentiels, actifs comme archivés. **Plan** : STARTER et au-delà.","operationId":"locations_lister_referentiels_locations_referentiels_get","responses":{"200":{"description":"Référentiels du compte","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocationsReferentiel"},"type":"array","title":"Response Locations Lister Referentiels Locations Referentiels Get"},"example":[{"code":"BOULANGERIES","nom":"Boulangeries France","statut":"actif","cree_le":"2026-08-24T10:00:00+02:00","modifie_le":"2026-09-02T14:32:00+02:00"},{"code":"DEPOTS-2025","nom":"Dépôts (campagne 2025)","statut":"archive","cree_le":"2025-03-11T09:12:00+01:00","modifie_le":"2026-01-06T17:45:00+01:00"}]}}}},"security":[{"ApiKeyAuth":[]}]},"post":{"tags":["Locations"],"summary":"Créer un référentiel de lieux","description":"Le `code` est un slug stable (minuscules, chiffres, tirets) qui sert d'identifiant dans les URLs : il ne se renomme pas.\n\n**Plan** : STARTER et au-delà.\n\nVotre plan borne le nombre de référentiels actifs : 5 en Starter, 25 en Growth, 100 en Business. Au-delà, la création est refusée en `409` avec un `detail` structuré — `{\"code\": \"capacite_referentiels_depassee\", \"referentiels_actifs\": int, \"maximum\": int}`. Archiver un référentiel (`DELETE`) libère une place ; le `code` archivé, lui, reste pris.\n\nUn `409` dont le `detail` est la chaîne `code_deja_utilise` signale l'autre conflit : ce `code` existe déjà pour votre compte.","operationId":"locations_creer_referentiel_locations_referentiels_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Corps"},"example":{"code":"boutiques","nom":"Mes boutiques"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsReferentiel"}}}},"409":{"description":"Deux refus distincts, que l'on **distingue à la forme du `detail`**.\n\n**`detail` objet — plafond de référentiels du plan.** Votre plan borne le nombre de référentiels *actifs* (5 en Starter, 25 en Growth, 100 en Business), sans tolérance : à la borne, la création suivante est refusée. `{\"code\": \"capacite_referentiels_depassee\", \"referentiels_actifs\": int, \"maximum\": int}`. Changer de `code` n'y change rien — archivez un référentiel (`DELETE`), ce qui libère une place, ou passez au palier supérieur.\n\n**`detail` chaîne — code déjà utilisé.** `\"code_deja_utilise\"` : ce `code` est déjà porté par un référentiel du compte, y compris archivé (l'unicité vaut quel que soit le statut, parce que le `code` identifie vos sites dans les URLs). Choisissez-en un autre.","content":{"application/json":{"schema":{},"examples":{"plafond_atteint":{"summary":"Plafond de référentiels atteint (detail objet)","value":{"detail":{"code":"capacite_referentiels_depassee","referentiels_actifs":5,"maximum":5}}},"code_deja_utilise":{"summary":"Code déjà utilisé (detail chaîne)","value":{"detail":"code_deja_utilise"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/locations/referentiels/{code}":{"get":{"tags":["Locations"],"summary":"Détail d'un référentiel","description":"**Plan** : STARTER et au-delà.","operationId":"locations_detail_referentiel_locations_referentiels__code__get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsReferentiel"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Locations"],"summary":"Renommer un référentiel","description":"Seul `nom` est modifiable — `code` est l'identifiant.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_modifier_referentiel_locations_referentiels__code__patch","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"},"example":{"nom":"Boutiques France"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsReferentiel"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Locations"],"summary":"Archiver un référentiel","description":"Archive le référentiel : il sort des recherches, ses sites restent en base. Rien n'est supprimé.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_archiver_referentiel_locations_referentiels__code__delete","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/referentiels/{code}/sites":{"get":{"tags":["Locations"],"summary":"Lister les sites d'un référentiel","description":"Listing paginé, trié par `id_externe`. `statut=tous` inclut les sites désactivés — c'est ainsi qu'on retrouve ce qu'une synchronisation a mis de côté sans le supprimer.\n\n`q`, `tag` et `geocodage` restreignent la liste ; `total` reflète le compte filtré, pas celui du référentiel.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_lister_sites_locations_referentiels__code__sites_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."},{"name":"statut","in":"query","required":false,"schema":{"type":"string","description":"actifs (défaut) ou tous.","examples":["actifs"],"default":"actifs","title":"Statut"},"description":"actifs (défaut) ou tous."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Taille de page (1–200).","default":50,"title":"Limit"},"description":"Taille de page (1–200)."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":0,"description":"Décalage de pagination.","default":0,"title":"Offset"},"description":"Décalage de pagination."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Fragment recherché dans le nom public, le nom interne et l'identifiant externe (insensible à la casse).","examples":["opéra"],"title":"Q"},"description":"Fragment recherché dans le nom public, le nom interne et l'identifiant externe (insensible à la casse)."},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Ne rend que les sites portant cette étiquette.","examples":["terrasse"],"title":"Tag"},"description":"Ne rend que les sites portant cette étiquette."},{"name":"geocodage","in":"query","required":false,"schema":{"anyOf":[{"enum":["non_requis","en_attente","ok","echec"],"type":"string"},{"type":"null"}],"description":"Ne rend que les sites dans cet état de géocodage.","title":"Geocodage"},"description":"Ne rend que les sites dans cet état de géocodage."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsSiteListe"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/referentiels/{code}/sites/{id_externe}":{"get":{"tags":["Locations"],"summary":"Détail d'un site","description":"Fiche complète : adresse, position, contacts, liens, horaires et bloc `ouverture` calculé dans le fuseau du site. Un site désactivé n'est plus adressable ici.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_detail_site_locations_referentiels__code__sites__id_externe__get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."},{"name":"id_externe","in":"path","required":true,"schema":{"type":"string","description":"Votre identifiant du site.","examples":["PARIS-01"],"title":"Id Externe"},"description":"Votre identifiant du site."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsSite"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Locations"],"summary":"Créer ou remplacer un site","description":"**`PUT` remplace intégralement.** Tout champ absent retombe à sa valeur par défaut, tout sous-objet absent disparaît — utilisez `PATCH` pour compléter.\n\n`statut` n'est pas accepté ici : un `PUT` ne réactive jamais un site que vous avez désactivé.\n\nFournissez des coordonnées **ou** une adresse : sans coordonnées, l'adresse est géocodée en tâche de fond et le site devient cherchable une fois résolu.\n\n**Capacité** : votre plan inclut un nombre de sites (200 / 2 000 / 10 000 selon Starter / Growth / Business). Une écriture qui ferait dépasser ce nombre, tolérance de 10 % comprise, est refusée en `409` : le `detail` porte alors `capacite_sites_depassee`, vos `sites_actifs`, votre `capacite` et le `plafond` toléré. Un refus chiffré, plutôt qu'un dépassement silencieux.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_upserter_site_locations_referentiels__code__sites__id_externe__put","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."},{"name":"id_externe","in":"path","required":true,"schema":{"type":"string","description":"Votre identifiant du site.","examples":["PARIS-01"],"title":"Id Externe"},"description":"Votre identifiant du site."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"},"example":{"nom_public":"Paris Opéra","nom_interne":"PO-1997","ligne_voie":"12 rue Scribe","code_postal":"75009","commune":"Paris","latitude":48.871,"longitude":2.3317,"fuseau":"Europe/Paris","tags":["terrasse"],"contacts":[{"id_externe":"std","type":"telephone","valeur":"+33140000000"}],"liens":[{"id_externe":"carte","url":"https://exemple.fr/carte"}],"horaires_hebdo":[{"jour":1,"debut":"08:00","fin":"19:00"}]}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsSite"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"409":{"description":"L'écriture ferait dépasser la capacité de sites incluse dans votre plan. Le `detail` est un objet, pas une phrase : `{\"code\": \"capacite_sites_depassee\", \"sites_actifs\": int, `capacite`: int, `plafond`: int}` — `capacite` est ce que le plan inclut, `plafond` la tolérance de 10 % au-delà de laquelle l'écriture est refusée. Seule une écriture qui fait **croître** le nombre de sites actifs au-delà du plafond est refusée : un compte déjà au-dessus peut toujours renommer un site ou redescendre. Pour en gérer davantage, désactivez des sites (`PATCH` avec `statut: \"inactif\"`) ou passez au palier supérieur."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Locations"],"summary":"Modifier partiellement un site","description":"**`PATCH` complète.** Seuls les champs transmis sont appliqués ; un sous-objet absent n'est pas touché, et `null` efface explicitement un champ effaçable.\n\nC'est la seule façon de piloter `statut` (`actif` / `inactif`).\n\n**Capacité** : votre plan inclut un nombre de sites (200 / 2 000 / 10 000 selon Starter / Growth / Business). Une écriture qui ferait dépasser ce nombre, tolérance de 10 % comprise, est refusée en `409` : le `detail` porte alors `capacite_sites_depassee`, vos `sites_actifs`, votre `capacite` et le `plafond` toléré. Un refus chiffré, plutôt qu'un dépassement silencieux.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_modifier_site_locations_referentiels__code__sites__id_externe__patch","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."},{"name":"id_externe","in":"path","required":true,"schema":{"type":"string","description":"Votre identifiant du site.","examples":["PARIS-01"],"title":"Id Externe"},"description":"Votre identifiant du site."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"},"example":{"statut":"inactif"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsSite"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"409":{"description":"L'écriture ferait dépasser la capacité de sites incluse dans votre plan. Le `detail` est un objet, pas une phrase : `{\"code\": \"capacite_sites_depassee\", \"sites_actifs\": int, `capacite`: int, `plafond`: int}` — `capacite` est ce que le plan inclut, `plafond` la tolérance de 10 % au-delà de laquelle l'écriture est refusée. Seule une écriture qui fait **croître** le nombre de sites actifs au-delà du plafond est refusée : un compte déjà au-dessus peut toujours renommer un site ou redescendre. Pour en gérer davantage, désactivez des sites (`PATCH` avec `statut: \"inactif\"`) ou passez au palier supérieur."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Locations"],"summary":"Supprimer un site","description":"Suppression définitive. Pour retirer un site des recherches en le conservant, préférez `PATCH` avec `statut: \"inactif\"`.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_supprimer_site_locations_referentiels__code__sites__id_externe__delete","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."},{"name":"id_externe","in":"path","required":true,"schema":{"type":"string","description":"Votre identifiant du site.","examples":["PARIS-01"],"title":"Id Externe"},"description":"Votre identifiant du site."}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/referentiels/{code}/sites:lot":{"post":{"tags":["Locations"],"summary":"Créer ou remplacer des sites par lot","description":"Jusqu'à 1 000 sites en un appel, chacun porté par son `id_externe`. **Une ligne invalide n'annule pas les autres** : le rapport livre ce qui est passé et nomme ce qui a échoué.\n\nConservez `tache_id` : il permet de relire le rapport plus tard via `GET /locations/taches/{id}`.\n\n**Une écriture = un appel compté**, quel que soit le nombre de sites.\n\n**Capacité** : votre plan inclut un nombre de sites (200 / 2 000 / 10 000 selon Starter / Growth / Business). Une écriture qui ferait dépasser ce nombre, tolérance de 10 % comprise, est refusée en `409` : le `detail` porte alors `capacite_sites_depassee`, vos `sites_actifs`, votre `capacite` et le `plafond` toléré. Un refus chiffré, plutôt qu'un dépassement silencieux.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_lot_locations_referentiels__code__sites_lot_post","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"},"example":{"sites":[{"id_externe":"PARIS-01","nom_public":"Paris Opéra","latitude":48.871,"longitude":2.3317},{"id_externe":"LYON-01","nom_public":"Lyon Part-Dieu","ligne_voie":"17 rue du Docteur Bouchut","code_postal":"69003","commune":"Lyon"}]}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsRapportLot"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"409":{"description":"L'écriture ferait dépasser la capacité de sites incluse dans votre plan. Le `detail` est un objet, pas une phrase : `{\"code\": \"capacite_sites_depassee\", \"sites_actifs\": int, `capacite`: int, `plafond`: int}` — `capacite` est ce que le plan inclut, `plafond` la tolérance de 10 % au-delà de laquelle l'écriture est refusée. Seule une écriture qui fait **croître** le nombre de sites actifs au-delà du plafond est refusée : un compte déjà au-dessus peut toujours renommer un site ou redescendre. Pour en gérer davantage, désactivez des sites (`PATCH` avec `statut: \"inactif\"`) ou passez au palier supérieur."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/referentiels/{code}/sites:sync":{"post":{"tags":["Locations"],"summary":"Synchroniser un référentiel avec votre système","description":"La charge utile fait autorité : ce qui n'y figure pas est **désactivé**, jamais supprimé. Un export qui ramène un site le réactive.\n\n**Garde-fou** : une synchronisation qui désactiverait plus de la moitié de vos sites actifs est refusée en `409`, avec le nombre de sites avant et après. Renvoyez avec `confirmer_reduction: true` si c'est voulu. C'est le filet contre l'export tronqué.\n\n**Capacité** : votre plan inclut un nombre de sites (200 / 2 000 / 10 000 selon Starter / Growth / Business). Une écriture qui ferait dépasser ce nombre, tolérance de 10 % comprise, est refusée en `409` : le `detail` porte alors `capacite_sites_depassee`, vos `sites_actifs`, votre `capacite` et le `plafond` toléré. Un refus chiffré, plutôt qu'un dépassement silencieux.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_sync_locations_referentiels__code__sites_sync_post","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","description":"Code du référentiel.","examples":["boutiques"],"title":"Code"},"description":"Code du référentiel."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"},"example":{"sites":[{"id_externe":"PARIS-01","nom_public":"Paris Opéra","latitude":48.871,"longitude":2.3317}],"confirmer_reduction":false}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsRapportSync"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"409":{"description":"L'écriture ferait dépasser la capacité de sites incluse dans votre plan. Le `detail` est un objet, pas une phrase : `{\"code\": \"capacite_sites_depassee\", \"sites_actifs\": int, `capacite`: int, `plafond`: int}` — `capacite` est ce que le plan inclut, `plafond` la tolérance de 10 % au-delà de laquelle l'écriture est refusée. Seule une écriture qui fait **croître** le nombre de sites actifs au-delà du plafond est refusée : un compte déjà au-dessus peut toujours renommer un site ou redescendre. Pour en gérer davantage, désactivez des sites (`PATCH` avec `statut: \"inactif\"`) ou passez au palier supérieur."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locations/taches/{tache_id}":{"get":{"tags":["Locations"],"summary":"Relire le rapport d'une écriture en masse","description":"Rapport d'un `:lot`, d'une `:sync` ou d'un géocodage : ce qui est passé, et la liste nommée de ce qui a échoué.\n\n**Non facturé** — c'est le reçu d'une écriture déjà payée. Il reste lisible même si votre quota est épuisé.\n\n**Plan** : STARTER et au-delà.","operationId":"locations_tache_locations_taches__tache_id__get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"tache_id","in":"path","required":true,"schema":{"type":"string","description":"Identifiant rendu par :lot ou :sync.","title":"Tache Id"},"description":"Identifiant rendu par :lot ou :sync."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsTache"}}}},"400":{"description":"Un identifiant porté par le chemin (`code`, `id_externe` ou `tache_id`) ne peut pas être transmis tel quel : valeur vide, ou segment de chemin `.` / `..` — y compris sous forme encodée (`%2e`, `%252e`, `.%2e`, `a%2f..`) ou dont le décodage ne se stabilise pas dans le budget de la façade. Un identifiant qui contient des points sans *être* un segment point (`v1.2`, `a..b`, `.hidden`) passe intact."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/route/compute":{"post":{"tags":["Route"],"summary":"Compute a route between two endpoints","description":"**Plan minimum** : `BUSINESS` (réservé).\n\nCalcule un itinéraire routier entre deux bornes (origine, destination). Chaque borne peut être fournie soit comme une adresse libre, soit comme un couple de coordonnées WGS84 (`lat`/`lon`) — l'un ou l'autre, pas les deux. Quand une adresse est fournie, elle est résolue via la même chaîne que `/address/verify` et le meilleur candidat est utilisé comme point de départ/arrivée.\n\n**Mode de déplacement** : `mode` vaut `auto` (voiture, défaut), `pieton` ou `velo`. Les consignes reviennent adaptées au mode (« Marchez… », « Pédalez… »). Chaque mode a sa limite de distance : 5 000 km en voiture, 500 km à vélo, 250 km à pied. Au-delà, la réponse est un 422 explicite.\n\n**Sortie** : résumé (distance, durée, bounding box), géométrie encodée en polyline6 (precision 6 — pas 5), et liste des étapes avec consignes de navigation en français.\n\n**Attribution OSM (ODbL) obligatoire** : la réponse inclut un champ `attribution` qui doit être affiché à l'utilisateur final partout où le résultat est restitué (carte, liste d'étapes, export).","operationId":"compute_route_route_compute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteComputeRequest"}}},"required":true},"responses":{"200":{"description":"Itinéraire calculé avec succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteComputeResponse"},"examples":{"address_to_coords":{"summary":"Origine en adresse, destination en coordonnées","value":{"origine":{"adresse":"1 Rue de la Paix, 75002 Paris","source":"address","lat":48.869,"lon":2.331},"destination":{"source":"coordinates","lat":48.785299,"lon":2.317801},"mode":"auto","resume":{"distance_km":12.4,"duree_s":1620,"duree_min":27.0,"bbox":{"min_lat":48.78,"min_lon":2.31,"max_lat":48.87,"max_lon":2.34}},"etapes":[{"consigne":"Partez vers le sud sur la Rue de la Paix.","distance_km":0.2,"duree_s":30,"type":1}]}},"walking":{"summary":"Origine et destination en adresse, à pied","description":"À pied : consignes « Marchez… », et une durée qui n'a rien à voir avec la voiture. Exemple réel, tronqué à 3 étapes sur 32 et à une polyline abrégée.","value":{"origine":{"adresse":"Place Bellecour 69002 Lyon","source":"address","lat":45.757814,"lon":4.832011},"destination":{"adresse":"Parc de la Tête d'Or 69006 Lyon","source":"address","lat":45.777222,"lon":4.852222},"resume":{"distance_km":3.505,"duree_s":2530.788,"duree_min":42.2,"bbox":{"min_lat":45.757826,"min_lon":4.831684,"max_lat":45.777477,"max_lon":4.852398},"geometrie":{"polyline":"cwygvAwl|eH{TwJuEvUgCkASlAs@…","precision":6,"encodage":"polyline6"}},"etapes":[{"consigne":"Marchez vers le nord.","distance_km":0.071,"duree_s":50.787,"type":1,"index_debut":0,"index_fin":2},{"consigne":"Tournez à droite dans l'allée.","distance_km":0.011,"duree_s":7.764,"type":10,"index_debut":2,"index_fin":4},{"consigne":"Tournez à gauche.","distance_km":0.008,"duree_s":5.647,"type":15,"index_debut":4,"index_fin":5}],"mode":"pieton","attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}},"cycling":{"summary":"Origine et destination en adresse, à vélo","description":"À vélo : consignes « Pédalez… ». L'itinéraire cyclable est souvent plus long que le trajet piéton, et bien plus rapide. Exemple réel, tronqué à 3 étapes sur 21 et à une polyline abrégée.","value":{"origine":{"adresse":"Place Bellecour 69002 Lyon","source":"address","lat":45.757814,"lon":4.832011},"destination":{"adresse":"Parc de la Tête d'Or 69006 Lyon","source":"address","lat":45.777222,"lon":4.852222},"resume":{"distance_km":3.913,"duree_s":1049.454,"duree_min":17.5,"bbox":{"min_lat":45.757826,"min_lon":4.829639,"max_lat":45.777763,"max_lon":4.852843},"geometrie":{"polyline":"cwygvAwl|eH{TwJuEvU}Lhn@oA~H…","precision":6,"encodage":"polyline6"}},"etapes":[{"consigne":"Pédalez vers le nord.","distance_km":0.169,"duree_s":39.239,"type":1,"index_debut":0,"index_fin":11},{"consigne":"Tournez à droite dans Place Bellecour.","distance_km":0.03,"duree_s":9.35,"type":10,"index_debut":11,"index_fin":15},{"consigne":"Continuez sur la piste cyclable.","distance_km":0.003,"duree_s":5.099,"type":8,"index_debut":15,"index_fin":16}],"mode":"velo","attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}}}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Business required)"},"422":{"description":"Validation error, unresolvable address, or trip out of range for the requested mode"},"500":{"description":"Internal server error (Valhalla unreachable, parser error...)"}},"security":[{"ApiKeyAuth":[]}]}},"/route/summary":{"post":{"tags":["Route"],"summary":"Compute a distance/duration matrix between origins and destinations","description":"**Plan minimum** : `GROWTH`.\n\nCalcule une matrice N×M de distances et durées routières entre une liste d'origines (1 à 25) et une liste de destinations (1 à 25). Chaque borne peut être fournie sous forme d'adresse libre ou de coordonnées WGS84.\n\n**Aucune géométrie ni consigne n'est renvoyée** — uniquement les métriques agrégées (distance, durée). Cas d'usage : zones de chalandise, filtrage de prospects par temps de trajet, optimisation logistique amont.\n\n**Mode de déplacement** : `mode` vaut `auto` (voiture, défaut), `pieton` ou `velo`, et s'applique à toute la matrice. ⚠️ Les limites de distance de la matrice sont plus basses que celles de `/route/compute` : 1 500 km en voiture, 200 km à pied comme à vélo. Un trajet accepté par `/route/compute` peut donc être refusé ici, en 422.\n\n**Attribution OSM (ODbL) obligatoire** : voir le champ `attribution` de la réponse.","operationId":"compute_matrix_route_summary_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteMatrixRequest"}}},"required":true},"responses":{"200":{"description":"Matrice calculée avec succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteMatrixResponse"},"examples":{"car":{"summary":"1 origine × 2 destinations, en voiture","description":"La forme de base : `matrice[i][j]` est le trajet de `origines[i]` vers `destinations[j]`.","value":{"origines":[{"adresse":"Place Bellecour 69002 Lyon","source":"address","lat":45.757814,"lon":4.832011}],"destinations":[{"adresse":"Parc de la Tête d'Or 69006 Lyon","source":"address","lat":45.777222,"lon":4.852222},{"adresse":"Gare de Lyon-Part-Dieu 69003 Lyon","source":"address","lat":45.760556,"lon":4.859444}],"matrice":[[{"distance_km":9.647,"duree_s":915.0,"duree_min":15.2},{"distance_km":6.981,"duree_s":656.0,"duree_min":10.9}]],"mode":"auto","attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}},"cycling":{"summary":"1 origine × 2 destinations, à vélo","description":"Le même appel à vélo. ⚠️ La matrice plafonne à 200 km en `velo` comme en `pieton`, bien en deçà des 500 / 250 km de `/route/compute` : un trajet accepté là-bas peut être refusé ici.","value":{"origines":[{"adresse":"Place Bellecour 69002 Lyon","source":"address","lat":45.757814,"lon":4.832011}],"destinations":[{"adresse":"Parc de la Tête d'Or 69006 Lyon","source":"address","lat":45.777222,"lon":4.852222},{"adresse":"Gare de Lyon-Part-Dieu 69003 Lyon","source":"address","lat":45.760556,"lon":4.859444}],"matrice":[[{"distance_km":3.912,"duree_s":1049.0,"duree_min":17.5},{"distance_km":2.858,"duree_s":771.0,"duree_min":12.8}]],"mode":"velo","attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}}}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Growth required)"},"422":{"description":"Validation error, unresolvable address, or trip out of range for the requested mode"},"500":{"description":"Internal server error (Valhalla unreachable, parser error...)"}},"security":[{"ApiKeyAuth":[]}]}},"/zone/stats":{"post":{"tags":["Zone"],"summary":"Population, ménages et niveau de vie d'une zone de chalandise","description":"**Plan minimum** : `GROWTH`, ou le plan `ZONES` (Pass Zones). **Un appel compté** quelle que soit la portée, isochrone compris.\n\nRend, pour une zone, ce que l'INSEE sait de ceux qui y habitent : population, ménages, ménages pauvres, **niveau de vie moyen** par personne (une moyenne pondérée — la seule grandeur de revenu que le carroyage permet de sommer), nombre d'IRIS couverts. Les chiffres sont des sommes des carreaux Filosofi 200 m **pondérées par la part de surface** de chaque carreau dans la zone ; `carreaux.estimes` dit combien de carreaux l'INSEE a imputés pour le secret statistique (la norme : ~79 % en métropole). Le bloc `csp` ajoute une **estimation** des huit catégories socioprofessionnelles (`effectif`, `part`, `indice` d'affinité par rapport à la France ou au département dominant de la zone), obtenue en répartissant des données diffusées à l'IRIS sur les carreaux : lire `fiabilite.indices_fiables` avant de citer un indice, et noter que `indice` vaut `null` (mais `effectif` et `part` restent servis) sous le plancher `fiabilite.part_min` — guide « Zone de chalandise », section CSP.\n\nLe bloc `potentiel_depense` donne les unités de consommation reconstituées, le **revenu disponible estimé** (en euros par an, masse et par ménage) et, si `coefficient` est passé, un **potentiel théorique** = revenu × coefficient — une estimation (niveau de vie écrêté, revenus 2021), pas une prévision de chiffre d'affaires ; table de repères par fonction de consommation dans le guide, section « Potentiel de dépense ».\n\nLe bloc `immobilier` donne les **prix de vente immobiliers** de la zone (DVF, DGFiP) : pour les maisons, les appartements et les locaux d'activité, par année sur cinq ans, le nombre de ventes et le prix médian au m² de surface réelle bâtie, le même prix sur le département de référence, une évolution sur la période et un indice (100 = le département). Des prix de vente déclarés, **pas des loyers** ; sous 20 ventes dans l'année le prix n'est pas servi ; Alsace-Moselle et Mayotte sont hors du jeu (`hors_couverture`), les DROM 971-974 y sont — guide « Zone de chalandise », section Prix immobiliers.\n\nLe bloc `activites` compte les **établissements SIRENE** de la zone par famille et sous-famille d'activité (14 familles, toujours présentes ; les sous-familles à zéro sont omises), avec une **densité pour 10 000 habitants** et un indice (100 = la référence). C'est un **plancher** : seuls les actifs géolocalisés sont comptés (`fiabilite.taux_localisation` dit la part vue sur le département de référence) — guide « Zone de chalandise », section Activités.\n\nLe bloc `defaillances` rend, par année depuis 2017 et par activité, les **procédures collectives** (BODACC : liquidation, redressement, sauvegarde — comptées sur chaque établissement de l'entreprise situé dans la zone) et les **arrêts d'activité** (fermetures SIRENE sans reprise de la même activité à la même adresse ni autre établissement du même SIREN), avec deux périodes cumulées de trois années complètes, un **taux pour 100 établissements actifs et par an** et un indice (100 = la référence). « Défaillance » au sens de la Banque de France : redressement + liquidation, la sauvegarde est servie à part. Les procédures sont un plancher, les arrêts un plafond, l'année en cours est partielle — guide « Zone de chalandise », section Défaillances.\n\n**Trois portées, exclusives** — le corps décrit la zone d'une seule façon :\n- `isochrone` : un centre (`adresse` ou `lat`+`lon`) + `duree` (1–30 min) + `mode` (`auto` par défaut, `pieton`, `velo`). Même moteur que `GET /locations/search?duree=` — un contour déjà calculé pour l'un sert à l'autre.\n  `circulation` : `fluide` (défaut, circulation libre) ou `pointe` (heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité de population, jamais du trafic temps réel ; `mode` `auto` seulement). `portee.circulation` répète le réglage retenu.\n- `rayon` : un centre + `rayon` (1–50 km), disque à vol d'oiseau.\n- `polygone` : un contour GeoJSON `Polygon`/`MultiPolygon` WGS84 (≤ 1 Mo, ≤ 50 000 sommets), pris tel quel — par exemple celui rendu par `GET /locations/search?polygone=true`.\n\n`reference` (`france` par défaut, ou `departement`) choisit le référentiel de l'indice d'affinité des blocs `csp` et `activites` — valable pour les trois portées ci-dessus.\n\n`coefficient` (0 exclu à 1) n'est jamais transmis à l'amont : il ne sert qu'au calcul du potentiel.\n\n`adresse` accepte aussi un nom de commune ou un code postal seul ; `point_central.precision` dit lequel des trois cas s'applique (`coordonnees`, `adresse`, `commune`). `point_central` vaut `null` en portée `polygone`. `rendre_polygone: true` renvoie le contour évalué dans `portee.polygone` (sans effet en portée `rayon`).\n\n**Plafond de surface : 10 000 km²** (422 `zone_trop_grande`). Un rayon de 50 km fait 7 850 km², un isochrone de 30 minutes en voiture rarement plus de 3 000.\n\n**Zone vide = 200, pas une erreur** : une zone sans aucun carreau (mer, étranger) rend des zéros et `niveau_de_vie_moyen: null`, `potentiel_depense` à zéro (le montant par ménage `null`, et `potentiel_theorique` `null` sans coefficient) ; un isochrone que le moteur ne sait pas tracer rend de même des zéros, `portee.polygone: null` et `source: null`.\n\n**Attribution obligatoire** : le champ `attribution` (INSEE, Filosofi et Recensement de la population ; IGN, Contours IRIS) est à reproduire avec tout chiffre affiché. La mention OpenStreetMap (ODbL) s'y ajoute en portée `isochrone`, le seul cas où le moteur d'itinéraire est sollicité.\n\n**Erreurs** — `detail` est une chaîne testable :\n- 422 `portee_ambigue` (deux formes à la fois, ou un centre avec un `polygone`), `portee_manquante` (aucune forme complète), `mode_sans_duree`, `circulation_sans_duree` (`circulation` hors portée `isochrone`), `circulation_mode_incompatible` (`pointe` hors `mode` `auto`), `polygone_invalide` (forme, bornes, ou géométrie invalide), `zone_trop_grande`, `zone_invalide` (refus amont sur une borne que la façade ne redéclare pas) ; 422 aussi sur une adresse non résolue et sur toute borne violée (forme Pydantic, avec le nom du champ) ;\n- 403 hors plan ;\n- 503 `moteur_itineraire_indisponible` (moteur d'itinéraire en panne, en portée `isochrone`) ; 503 `circulation_indisponible` si `pointe` n'est pas encore ouvert sur cette plateforme (voir `circulation_pointe` dans `GET /version`) ; 503 générique si le service statistique est indisponible.","operationId":"zone_stats_zone_stats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneStatsRequest"},"examples":{"isochrone":{"summary":"Isochrone — 15 minutes en voiture autour d'une adresse","value":{"adresse":"12 rue de la République 69002 Lyon","duree":15,"mode":"auto"}},"rayon":{"summary":"Rayon — 5 km à vol d'oiseau, indice d'affinité par rapport au département, potentiel de dépense à 15 %","value":{"lat":45.7578,"lon":4.832,"rayon":5,"reference":"departement","coefficient":0.15}},"polygone":{"summary":"Polygone — un contour GeoJSON fourni tel quel","value":{"polygone":{"type":"Polygon","coordinates":[[[4.82,45.75],[4.85,45.75],[4.85,45.77],[4.82,45.77],[4.82,45.75]]]},"rendre_polygone":true}},"isochrone_pointe":{"summary":"Isochrone à l'heure de pointe (15 min en voiture, départ 08:30 un jour ouvré)","value":{"adresse":"1 rue Scribe 75009 Paris","duree":15,"mode":"auto","circulation":"pointe"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneStatsResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Growth or Pass Zones required)"},"422":{"description":"Validation error, ambiguous or missing scope, unresolvable address, invalid polygon, or zone above 10 000 km²"},"503":{"description":"Route engine (isochrone scope) or INSEE zone statistics service unavailable"}},"security":[{"ApiKeyAuth":[]}]}},"/zone/compare":{"post":{"tags":["Zone"],"summary":"Comparer des zones de chalandise et mesurer leur cannibalisation","description":"**Plan minimum** : `GROWTH`, ou le plan `ZONES` (Pass Zones) · **Facturation** : un appel compté, quel que soit le nombre de zones (code `ZONE_COMPARE`).\n\nDe **2 à 10 zones** par appel, chacune décrite comme sur `POST /zone/stats` (isochrone, rayon ou polygone, avec son propre centre), et trois réglages communs : `reference`, `coefficient`, `rendre_polygone`. Chaque zone rend **exactement le bloc de `/zone/stats`** — mêmes clés, mêmes valeurs que si elle avait été demandée seule, `ages`, `sexe`, `menages_profil`, `logements`, `csp`, `potentiel_depense`, `immobilier`, `activites` et `defaillances` compris — plus `id` et `exclusif`. `immobilier`, `activites` et `defaillances` n'entrent ni dans `exclusif`, ni dans `chevauchements`, ni dans les critères de `classement`.\n\n**`exclusif`** : ce que la zone est seule à couvrir, hors de tout chevauchement avec les autres zones de la requête (calculé comme `zone \\ union des autres`, pas comme `total − paires` : à trois zones et plus, un triple recouvrement serait retranché deux fois). **`chevauchements`** : une entrée par paire de zones qui se recouvrent, avec la population, les ménages et le potentiel comptés deux fois. **`classement`** : les identifiants triés sur `critere` (`population` par défaut, `population_exclusive`, `potentiel_theorique`, `potentiel_exclusif`).\n\nLes identifiants : `id` de chaque zone, ou sa position à partir de 1. Une zone inatteignable rend des zéros, n'entre dans aucune paire et se classe dernière.\n\n**Attribution obligatoire** : le champ `attribution` (INSEE, Filosofi et Recensement de la population ; IGN, Contours IRIS) est à reproduire avec tout chiffre affiché. La mention OpenStreetMap (ODbL) s'y ajoute dès qu'une zone de la requête est une isochrone, le seul cas où le moteur d'itinéraire est sollicité.\n\n**Erreurs** — `detail` est une chaîne quand la requête entière est en cause, et `{\"code\", \"zone\"}` quand une zone précise l'est (`zone` porte alors l'identifiant envoyé) :\n- 422 `nombre_zones_invalide`, `identifiants_dupliques`, `coefficient_requis`, `zone_invalide` (chaîne) ; 422 `{code: identifiant_invalide | portee_ambigue | portee_manquante | mode_sans_duree | circulation_sans_duree | circulation_mode_incompatible | polygone_invalide | zone_trop_grande, zone: id}` ; 422 sur une adresse non résolue (avec `zone`) ;\n- 403 hors plan ;\n- 503 `moteur_itineraire_indisponible`, `circulation_indisponible`, ou générique si le service statistique est indisponible.\n\nGuide : « Zone de chalandise », section *Comparer des emplacements*.","operationId":"zone_compare_zone_compare_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneCompareRequest"},"examples":{"trois_candidats":{"summary":"Trois emplacements à Lyon — deux isochrones et un rayon, classés sur le potentiel exclusif","value":{"zones":[{"id":"part-dieu","adresse":"Place Charles Béraudier 69003 Lyon","duree":10,"mode":"auto"},{"id":"bellecour","lat":45.7578,"lon":4.832,"duree":10,"mode":"auto"},{"id":"villeurbanne","adresse":"Gratte-Ciel, Villeurbanne","rayon":3}],"reference":"departement","coefficient":0.048,"critere":"potentiel_exclusif"}},"deux_rayons":{"summary":"Deux rayons sans identifiant — les zones s'appellent \"1\" et \"2\"","value":{"zones":[{"lat":48.853,"lon":2.3499,"rayon":2},{"lat":48.86,"lon":2.36,"rayon":2}]}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneCompareResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Growth or Pass Zones required)"},"422":{"description":"Validation error (request-level code, or {code, zone} for one zone)"},"503":{"description":"Route engine or INSEE zone statistics service unavailable"}},"security":[{"ApiKeyAuth":[]}]}},"/zone/synthese":{"post":{"tags":["Zone"],"summary":"Rédiger un avis de lecture d'une zone de chalandise","description":"**Plan minimum** : `GROWTH`, ou le plan `ZONES` (Pass Zones) · **Facturation** : un appel compté à chaque demande (code `ZONE_SYNTHESE`), y compris quand l'avis est servi depuis le cache (24 h, même zone, mêmes réglages).\n\nLa zone est décrite **comme sur `POST /zone/stats`** (isochrone, rayon ou polygone ; `reference` ; `coefficient` ; `rendre_polygone` ignoré) ; l'API la recalcule elle-même — elle ne prend jamais de chiffres en entrée. S'y ajoutent `activites` (0 à 20 clés de la grille d'activités, lues en priorité) et `contexte` (300 caractères, description de l'activité envisagée).\n\nLa réponse est un **avis structuré en français** rédigé par un modèle de langage à partir des seules données de la zone : `verdict` (une phrase), `points_forts`, `points_attention`, `a_verifier` (1 à 4 entrées chacun), `lecture_activite` (un paragraphe, ou `null` sans activité ni contexte). L'avis nomme ses indicateurs et leurs valeurs, respecte les drapeaux de fiabilité (`fiabilite` dit ce qu'il a lu), ne prévoit jamais un chiffre d'affaires et ne recommande ni d'ouvrir ni de s'abstenir. La `mention` est à afficher avec l'avis. Les chiffres de la zone ne sont pas rendus ici : `/zone/stats` les sert. `synthese.deck` (titre, atouts, vigilances) porte les textes courts d'une slide de présentation, condensés de l'avis — mêmes chiffres, jamais un chiffre nouveau ; `deck` vaut `null` quand le modèle a rendu une slide hors forme ; l'avis reste servi. Un avis mis en cache avant cette version peut ne pas le porter pendant 24 h.\n\nDélai : 15 à 30 secondes, plus le calcul de la zone. Pas de diffusion en continu.\n\n**Erreurs** — `detail` est une chaîne testable : 422 `activite_inconnue`, `activites_trop_nombreuses` (plus de 20 clés), `contexte_trop_long`, et tous les 422 de `/zone/stats` ; 403 hors plan ; 503 `synthese_indisponible` (rédaction impossible pour le moment), 503 `moteur_itineraire_indisponible` et les 503 de `/zone/stats` ; 502 `synthese_invalide` (réponse du modèle hors forme — réessayer).","operationId":"zone_synthese_zone_synthese_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneSyntheseRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneSyntheseResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Forbidden — plan does not have access (Growth or Pass Zones required)"},"422":{"description":"Validation error: scope, unknown activity key, context too long"},"502":{"description":"The model returned an opinion outside the expected shape"},"503":{"description":"Synthesis unavailable, route engine or statistics service unavailable"}},"security":[{"ApiKeyAuth":[]}]}},"/locality/autocomplete":{"get":{"tags":["Localities"],"summary":"Autocompletion of a locality name","description":"**Plan minimum** : `DISCOVERY` · **Réponse enrichie** : avec `details=true`, retourne les chiffres de recensement, élévation, densité, département et région.\n\nTrouve rapidement une localité française à partir de son nom, son code postal ou son code INSEE. Idéal pour les champs de saisie ville.","operationId":"autocomplete_locality_locality_autocomplete_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search query for locality autocomplete","title":"Q"},"description":"Search query for locality autocomplete","examples":{"one_result":{"summary":"One response by name ","value":"wimereux"},"one_result_2":{"summary":"One response by postal code ","value":"62930"},"arrondissement":{"summary":"With district ","value":"Paris"},"sub_locality":{"summary":"With sub locality ","value":"antibes"},"pluri":{"summary":"One postal code multiple localities ","value":"95690"}}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"details","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Details"}}],"responses":{"200":{"description":"Address details retrieved successfully","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AutocompleteLocalityResponse"},{"$ref":"#/components/schemas/AutocompleteLocalityMinimalResponse"}],"title":"Response Autocomplete Locality Locality Autocomplete Get"},"examples":{"with_details":{"summary":"With details ","value":{"status":"OK","message":"Search completed successfully","suggestions":[{"score":1,"id":27238,"destination":"62930 WIMEREUX","nom_commune":"WIMEREUX","code_postal":"62930","ligne_5":"","ligne_6":"WIMEREUX","position":{"lat":50.78028171139647,"lon":1.614473436929318},"surface":{"hectare":826,"km2":8},"elevation":{"min":0,"max":71,"average":24},"density":{"code":4,"label":"Ceintures urbaines"},"population":[{"periode":2022,"totale":6438,"municipale":6307,"comptee_a_part":131},{"periode":2016,"totale":6973,"municipale":6795,"comptee_a_part":178},{"periode":2011,"totale":7492,"municipale":7312,"comptee_a_part":180}],"departement":{"id":"62","libelle":"Pas-de-Calais","chef_lieu":"62041","nom_majus":"PAS DE CALAIS","nom_riche":"Pas-de-Calais","population":[{"periode":2022,"totale":1481487,"municipale":1460184,"comptee_a_part":21303},{"periode":2016,"totale":1494330,"municipale":1470725,"comptee_a_part":23605},{"periode":2011,"totale":1490514,"municipale":1462807,"comptee_a_part":27707}]},"region":{"id":"32","libelle":"Hauts-de-France","chef_lieu":"59350","nom_majus":"HAUTS DE FRANCE","nom_riche":"Hauts-de-France","population":[{"periode":2022,"totale":6088950,"municipale":5998916,"comptee_a_part":90034},{"periode":2016,"totale":6110588,"municipale":6006870,"comptee_a_part":103718},{"periode":2011,"totale":6076213,"municipale":5960124,"comptee_a_part":116089}]},"cog":{"insee":"62893","type":"COM","ctcd":"62D","arr":"623","libelle":"Wimereux","nom_majus":"WIMEREUX","nom_riche":"Wimereux","can":"6213","comparent":""}}]}},"without_details":{"summary":"Without details ","value":{"status":"OK","message":"Search completed successfully","suggestions":[{"score":1,"id":27238,"destination":"62930 WIMEREUX","nom_commune":"WIMEREUX","code_postal":"62930","ligne_5":"","ligne_6":"WIMEREUX","population":[{"periode":2022,"totale":6438,"municipale":6307,"comptee_a_part":131},{"periode":2016,"totale":6973,"municipale":6795,"comptee_a_part":178},{"periode":2011,"totale":7492,"municipale":7312,"comptee_a_part":180}]}]}}}}}},"500":{"description":"Internal server error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/locality/search":{"get":{"tags":["Localities"],"summary":"Advanced search of a locality","description":"**Plan minimum** : `DISCOVERY` · **Réponse enrichie** : avec `details=true`, retourne les chiffres de recensement, élévation, densité, département et région.\n\nRecherche avancée de localités : filtrage par code postal, département (code ou nom), région (code ou nom), et plage de population. Utile pour extraire des cohortes géographiques (ex. toutes les communes de plus de 10 000 habitants en Île-de-France).","operationId":"search_locality_locality_search_get","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Advanced search of a locality","title":"Q"},"description":"Advanced search of a locality","examples":{"one_result":{"summary":"One response by name ","value":"wimereux"}}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}},{"name":"postal_code","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by postal code","title":"Postal Code"},"description":"Filter by postal code"},{"name":"department_code","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/DepartmentCode"}},{"type":"null"}],"description":"Filter by department insee code","title":"Department Code"},"description":"Filter by department insee code"},{"name":"department_name","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/DepartmentName"}},{"type":"null"}],"description":"Filter by department name","title":"Department Name"},"description":"Filter by department name"},{"name":"region_code","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/RegionCode"}},{"type":"null"}],"description":"Filter by region insee code","title":"Region Code"},"description":"Filter by region insee code"},{"name":"region_name","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/RegionName"}},{"type":"null"}],"description":"Filter by region name","title":"Region Name"},"description":"Filter by region name"},{"name":"details","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Details"}},{"name":"population_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum population filter","title":"Population Min"},"description":"Minimum population filter"},{"name":"population_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum population filter","title":"Population Max"},"description":"Maximum population filter"}],"responses":{"200":{"description":"Locality search completed successfully","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SearchLocalityResponse"},{"$ref":"#/components/schemas/SearchLocalityMinimalResponse"}],"title":"Response Search Locality Locality Search Get"},"examples":{"paris":{"summary":"Paris district with at least 180,000 residents ","value":{"status":"OK","message":"Search completed successfully","results":[{"score":1,"id":32622,"destination":"75015 PARIS","nom_commune":"PARIS 15","code_postal":"75015","ligne_5":"","ligne_6":"PARIS","position":{"lat":48.84007157382433,"lon":2.2928415385459964},"surface":{"hectare":10540,"km2":105},"elevation":{"min":28,"max":131,"average":35},"density":{"code":1,"label":"Grands centres urbains"},"population":[{"periode":2022,"totale":230390,"municipale":228754,"comptee_a_part":1636},{"periode":2016,"totale":235469,"municipale":233484,"comptee_a_part":1985},{"periode":2011,"totale":240823,"municipale":238395,"comptee_a_part":2428}],"departement":{"id":"75","libelle":"Paris","chef_lieu":"75056","nom_majus":"PARIS","nom_riche":"Paris","population":[{"periode":2022,"totale":2129257,"municipale":2113705,"comptee_a_part":15552},{"periode":2016,"totale":2210875,"municipale":2190327,"comptee_a_part":20548},{"periode":2011,"totale":2274880,"municipale":2249975,"comptee_a_part":24905}]},"region":{"id":"11","libelle":"Île-de-France","chef_lieu":"75056","nom_majus":"ILE DE FRANCE","nom_riche":"Île-de-France","population":[{"periode":2022,"totale":12489624,"municipale":12380964,"comptee_a_part":108660},{"periode":2016,"totale":12258425,"municipale":12117132,"comptee_a_part":141293},{"periode":2011,"totale":12008865,"municipale":11852851,"comptee_a_part":156014}]},"cog":{"insee":"75115","type":"ARM","ctcd":"75C","arr":"751","libelle":"Paris 15e Arrondissement","nom_majus":"PARIS 15E ARRONDISSEMENT","nom_riche":"Paris 15e Arrondissement","can":"7599","comparent":"75056"}},{"score":1,"id":32626,"destination":"75018 PARIS","nom_commune":"PARIS 18","code_postal":"75018","ligne_5":"","ligne_6":"PARIS","position":{"lat":48.89256652424397,"lon":2.348179158517138},"surface":{"hectare":10540,"km2":105},"elevation":{"min":28,"max":131,"average":35},"density":{"code":1,"label":"Grands centres urbains"},"population":[{"periode":2022,"totale":186541,"municipale":185825,"comptee_a_part":716},{"periode":2016,"totale":196143,"municipale":195060,"comptee_a_part":1083},{"periode":2011,"totale":204546,"municipale":203127,"comptee_a_part":1419}],"departement":{"id":"75","libelle":"Paris","chef_lieu":"75056","nom_majus":"PARIS","nom_riche":"Paris","population":[{"periode":2022,"totale":2129257,"municipale":2113705,"comptee_a_part":15552},{"periode":2016,"totale":2210875,"municipale":2190327,"comptee_a_part":20548},{"periode":2011,"totale":2274880,"municipale":2249975,"comptee_a_part":24905}]},"region":{"id":"11","libelle":"Île-de-France","chef_lieu":"75056","nom_majus":"ILE DE FRANCE","nom_riche":"Île-de-France","population":[{"periode":2022,"totale":12489624,"municipale":12380964,"comptee_a_part":108660},{"periode":2016,"totale":12258425,"municipale":12117132,"comptee_a_part":141293},{"periode":2011,"totale":12008865,"municipale":11852851,"comptee_a_part":156014}]},"cog":{"insee":"75118","type":"ARM","ctcd":"75C","arr":"751","libelle":"Paris 18e Arrondissement","nom_majus":"PARIS 18E ARRONDISSEMENT","nom_riche":"Paris 18e Arrondissement","can":"7599","comparent":"75056"}},{"score":1,"id":32628,"destination":"75020 PARIS","nom_commune":"PARIS 20","code_postal":"75020","ligne_5":"","ligne_6":"PARIS","position":{"lat":48.86345385757646,"lon":2.401166983260629},"surface":{"hectare":10540,"km2":105},"elevation":{"min":28,"max":131,"average":35},"density":{"code":1,"label":"Grands centres urbains"},"population":[{"periode":2022,"totale":188575,"municipale":187694,"comptee_a_part":881},{"periode":2016,"totale":196884,"municipale":195604,"comptee_a_part":1280},{"periode":2011,"totale":199790,"municipale":198042,"comptee_a_part":1748}],"departement":{"id":"75","libelle":"Paris","chef_lieu":"75056","nom_majus":"PARIS","nom_riche":"Paris","population":[{"periode":2022,"totale":2129257,"municipale":2113705,"comptee_a_part":15552},{"periode":2016,"totale":2210875,"municipale":2190327,"comptee_a_part":20548},{"periode":2011,"totale":2274880,"municipale":2249975,"comptee_a_part":24905}]},"region":{"id":"11","libelle":"Île-de-France","chef_lieu":"75056","nom_majus":"ILE DE FRANCE","nom_riche":"Île-de-France","population":[{"periode":2022,"totale":12489624,"municipale":12380964,"comptee_a_part":108660},{"periode":2016,"totale":12258425,"municipale":12117132,"comptee_a_part":141293},{"periode":2011,"totale":12008865,"municipale":11852851,"comptee_a_part":156014}]},"cog":{"insee":"75120","type":"ARM","ctcd":"75C","arr":"751","libelle":"Paris 20e Arrondissement","nom_majus":"PARIS 20E ARRONDISSEMENT","nom_riche":"Paris 20e Arrondissement","can":"7599","comparent":"75056"}}]}},"without_details":{"summary":"One response without details ","value":{"status":"OK","message":"Search completed successfully","results":[{"score":1,"id":27238,"destination":"62930 WIMEREUX","nom_commune":"WIMEREUX","code_postal":"62930","ligne_5":"","ligne_6":"WIMEREUX","population":[{"periode":2022,"totale":6438,"municipale":6307,"comptee_a_part":131},{"periode":2016,"totale":6973,"municipale":6795,"comptee_a_part":178},{"periode":2011,"totale":7492,"municipale":7312,"comptee_a_part":180}]}]}},"without_response":{"summary":"No locality found","value":{"status":"NO_RESULTS","message":"No results found","results":[]}}}}}},"422":{"description":"Validation Error - invalid population parameters","content":{"application/json":{"example":{"detail":[{"type":"value_error","loc":[],"msg":"Value error, population_min must be less than or equal to population_max","input":{"population_min":1500,"population_max":150}}]}}}},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"AccountInfo":{"properties":{"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan","description":"Plan attached to the API key (DISCOVERY / STARTER / GROWTH / BUSINESS)"},"consumption_count":{"type":"integer","title":"Consumption Count","description":"Calls already consumed over the current quota period","default":0},"quota_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Limit","description":"Hard quota ceiling enforced on this key. `null` means no hard ceiling is enforced through this mechanism — not zero."},"services":{"items":{"type":"string"},"type":"array","title":"Services","description":"Services granted by the plan, as enforced by the service itself","default":[]}},"type":"object","title":"AccountInfo","description":"Compte rattaché à la clé d'API appelante.\n\nSert au test de connexion des intégrations tierces (Zapier, Make) : une\nintégration a besoin de connaître le plan AVANT d'appeler un endpoint qu'il\nne couvre pas, pour afficher un message utile plutôt qu'un 403 opaque."},"AddressChoiceMinimal":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the address match"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"}},"type":"object","required":["score"],"title":"AddressChoiceMinimal"},"AddressChoiceSimple":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the address match"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"}},"type":"object","required":["score"],"title":"AddressChoiceSimple"},"AddressChoiceWithAllDetails":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the address match"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"},"statistical_grid":{"anyOf":[{"$ref":"#/components/schemas/StatisticalGrid"},{"type":"null"}],"description":"Statistical grid data of the address"}},"type":"object","required":["score"],"title":"AddressChoiceWithAllDetails"},"AddressChoiceWithGeocoding":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the address match"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"}},"type":"object","required":["score"],"title":"AddressChoiceWithGeocoding"},"AddressChoiceWithGeolocation":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the address match"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"}},"type":"object","required":["score"],"title":"AddressChoiceWithGeolocation"},"AddressDetails":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"}},"type":"object","title":"AddressDetails","description":"Model for individual address choice in autocomplete response","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","rep":"","source_position":"commune"}]},"AddressVerifyRequest":{"properties":{"q":{"type":"string","minLength":4,"title":"Q","description":"Adresse à vérifier (texte libre).","examples":["32 bis rue de Labbeville 95690 Nesles la Vallée"]},"max_results":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max Results","description":"Nombre maximum de candidats renvoyés (1-100).","default":5,"examples":[5]},"details":{"type":"boolean","title":"Details","description":"Inclure les détails enrichis selon le plan attaché à la clé (géolocalisation, géocodage IRIS, grille statistique INSEE). Mettre `false` pour une réponse compacte.","default":true,"examples":[true]}},"type":"object","required":["q"],"title":"AddressVerifyRequest","description":"Request body for address verification","examples":[{"details":true,"max_results":5,"q":"32 bis rue de Labbeville 95690 Nesles la Vallée"},{"details":false,"max_results":3,"q":"1 rue de la Paix Paris"}]},"AddressWithGeocoding":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"}},"type":"object","title":"AddressWithGeocoding","description":"Model combining address details with geocoding data","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","geocoding":{"code_iris":"013530000","iris":"0000","nom_iris":"Sainte-Euphémie","type_iris":"Z"},"id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","source_position":"commune"}]},"AddressWithGeolocation":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"}},"type":"object","title":"AddressWithGeolocation","description":"Model combining address details with geolocation data","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","score":0.99,"source_position":"commune"}]},"AddressWithStatisticalGrid":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"},"statistical_grid":{"anyOf":[{"$ref":"#/components/schemas/StatisticalGrid"},{"type":"null"}],"description":"Statistical grid data of the address"}},"type":"object","title":"AddressWithStatisticalGrid","description":"Model combining address details with statistical grid data","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","geocoding":{"code_iris":"013530000","iris":"0000","nom_iris":"Sainte-Euphémie","type_iris":"Z"},"id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","source_position":"commune","statistical_grid":{"depcom":"01322","groupe":608522,"i_est_1km":0,"i_est_cr":1,"i_pauv":0,"id_car2010":"CRS3035RES200mN2551200E3918000","id_carr1km":"CRS3035RES1000mN2551000E3918000","id_carr_n":"CRS3035RES1000mN2551000E3918000","id_inspire":"CRS3035RES200mN2551200E3918000","ind":2,"ind_0_3":0.1,"ind_11_17":0.2,"ind_18_24":0.1,"ind_25_39":0.3,"ind_40_54":0.5,"ind_4_5":0,"ind_55_64":0.3,"ind_65_79":0.3,"ind_6_10":0,"ind_80p":0.1,"ind_inc":0.1,"ind_snv":53964,"log_45_70":0.1,"log_70_90":0.3,"log_ap90":0.2,"log_av45":0.2,"log_inc":0,"log_soc":0,"men":0.8,"men_1ind":0.1,"men_5ind":0.1,"men_coll":0.1,"men_fmp":0.1,"men_mais":0.7,"men_pauv":0,"men_prop":0.7,"men_surf":92.3}}]},"AutocompleteDiscoveryResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/AddressChoiceSimple"},"type":"array","title":"Suggestions","description":"List of address suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteDiscoveryResponse","description":"Standardized complete response model for autocomplete API"},"AutocompleteFullResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/AddressChoiceWithAllDetails"},"type":"array","title":"Suggestions","description":"List of address suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteFullResponse","description":"Standardized complete response model for autocomplete API"},"AutocompleteGrowthResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/AddressChoiceWithGeocoding"},"type":"array","title":"Suggestions","description":"List of address suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteGrowthResponse","description":"Standardized complete response model for autocomplete API"},"AutocompleteLocalityMinimalResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/LocalityChoiceMinimal"},"type":"array","title":"Suggestions","description":"List of locality suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteLocalityMinimalResponse","description":"Standardized response model for locality autocomplete API"},"AutocompleteLocalityResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/LocalityChoice"},"type":"array","title":"Suggestions","description":"List of locality suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteLocalityResponse","description":"Standardized response model for locality autocomplete API"},"AutocompleteMinimalResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/AddressChoiceMinimal"},"type":"array","title":"Suggestions","description":"List of address suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteMinimalResponse","description":"Standardized complete response model for autocomplete API"},"AutocompleteStarterResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"suggestions":{"items":{"$ref":"#/components/schemas/AddressChoiceWithGeolocation"},"type":"array","title":"Suggestions","description":"List of address suggestions","default":[]}},"type":"object","required":["status","message"],"title":"AutocompleteStarterResponse","description":"Standardized complete response model for autocomplete API"},"Capital":{"properties":{"montant":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Montant"},"devise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Devise"},"variable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Variable"}},"type":"object","title":"Capital"},"CodeLibelle":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle"}},"type":"object","title":"CodeLibelle","description":"Champ codé décodé par base-b2b (NAF, catégorie juridique, EPCI, IDCC…).\n\n``code`` est nullable : base-b2b peut émettre un champ codé sans code\n(ex. qualité de dirigeant RNE non mappée dans ``ref.role_dirigeant``) —\nun ``code: str`` strict faisait tomber toute la fiche en 500."},"CogCommune":{"properties":{"insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insee","description":"INSEE code of the locality"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Type of the locality"},"ctcd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ctcd","description":"Code of the local authority with departmental powers"},"arr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arr","description":"District code"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Full name with article"},"nom_majus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Majus","description":"full name in uppercase"},"nom_riche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Riche","description":"Full name (rich typography)"},"can":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Can","description":"Code of the metropolitan area"},"comparent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comparent","description":"Parent commune INSEE code"}},"type":"object","title":"CogCommune","description":"Model for commune COG details"},"CompanyComplements":{"properties":{"est_ess":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Ess"},"est_societe_mission":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Societe Mission"},"est_entrepreneur_individuel":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Entrepreneur Individuel"}},"type":"object","title":"CompanyComplements"},"CompanySearchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/CompanySearchResult"},"type":"array","title":"Results"},"total_results":{"type":"integer","title":"Total Results","default":0},"total_capped":{"type":"boolean","title":"Total Capped","default":false},"resultats_approches":{"type":"boolean","title":"Resultats Approches","default":false},"classement_pertinence":{"type":"boolean","title":"Classement Pertinence","default":true},"page":{"type":"integer","title":"Page","default":1},"per_page":{"type":"integer","title":"Per Page","default":10}},"type":"object","title":"CompanySearchResponse","description":"Réponse paginée de /company/search — pass-through du wrapper base-b2b."},"CompanySearchResult":{"properties":{"siren":{"type":"string","title":"Siren"},"siret":{"type":"string","title":"Siret"},"nic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nic"},"est_siege":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Siege"},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"enseigne":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enseigne"},"complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"code_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Commune"},"cedex_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex Code"},"cedex_libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex Libelle"},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"categorie_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"tranche_effectifs":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"siege":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Siege"},"distance_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance M"}},"type":"object","required":["siren","siret"],"title":"CompanySearchResult","description":"Hit de recherche : toujours un ÉTABLISSEMENT, même en mode groupé\n(`grouper=true` → 1 hit par SIREN, représenté par son meilleur\nétablissement, siège préféré)."},"CountryCode":{"type":"string","enum":["FR"],"title":"CountryCode","description":"Codes de pays supportés"},"Departement":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Unique identifier for the department"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Full name with article"},"chef_lieu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chef Lieu","description":"Insee code of administrative center"},"nom_majus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Majus","description":"full name in uppercase"},"nom_riche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Riche","description":"Full name (rich typography)"},"population":{"anyOf":[{"items":{"$ref":"#/components/schemas/Population"},"type":"array"},{"type":"null"}],"title":"Population","description":"Population details"}},"type":"object","title":"Departement","description":"Model for department details"},"DepartmentCode":{"type":"string","enum":["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","21","22","23","24","25","26","27","28","29","2A","2B","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","971","972","973","974","976"],"title":"DepartmentCode"},"DepartmentName":{"type":"string","enum":["AIN","AISNE","ALLIER","ALPES DE HAUTE PROVENCE","HAUTES ALPES","ALPES MARITIMES","ARDECHE","ARDENNES","ARIEGE","AUBE","AUDE","AVEYRON","BOUCHES DU RHONE","CALVADOS","CANTAL","CHARENTE","CHARENTE MARITIME","CHER","CORREZE","COTE D OR","COTES D ARMOR","CREUSE","DORDOGNE","DOUBS","DROME","EURE","EURE ET LOIR","FINISTERE","CORSE DU SUD","HAUTE CORSE","GARD","HAUTE GARONNE","GERS","GIRONDE","HERAULT","ILLE ET VILAINE","INDRE","INDRE ET LOIRE","ISERE","JURA","LANDES","LOIR ET CHER","LOIRE","HAUTE LOIRE","LOIRE ATLANTIQUE","LOIRET","LOT","LOT ET GARONNE","LOZERE","MAINE ET LOIRE","MANCHE","MARNE","HAUTE MARNE","MAYENNE","MEURTHE ET MOSELLE","MEUSE","MORBIHAN","MOSELLE","NIEVRE","NORD","OISE","ORNE","PAS DE CALAIS","PUY DE DOME","PYRENEES ATLANTIQUES","HAUTES PYRENEES","PYRENEES ORIENTALES","BAS RHIN","HAUT RHIN","RHONE","HAUTE SAONE","SAONE ET LOIRE","SARTHE","SAVOIE","HAUTE SAVOIE","PARIS","SEINE MARITIME","SEINE ET MARNE","YVELINES","DEUX SEVRES","SOMME","TARN","TARN ET GARONNE","VAR","VAUCLUSE","VENDEE","VIENNE","HAUTE VIENNE","VOSGES","YONNE","TERRITOIRE DE BELFORT","ESSONNE","HAUTS DE SEINE","SEINE SAINT DENIS","VAL DE MARNE","VAL D OISE","GUADELOUPE","MARTINIQUE","GUYANE","LA REUNION","MAYOTTE"],"title":"DepartmentName"},"Dirigeant":{"properties":{"type_dirigeant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Dirigeant"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom"},"prenoms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prenoms"},"denomination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Denomination"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siren"},"qualite":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"date_naissance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Naissance"},"nationalite":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nationalite"},"opposition_prospection":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Opposition Prospection","description":"Opposition **INPI** de la personne à l'usage de ses données à des fins de prospection commerciale (RNE, art. R.123-320 du code de commerce). `true` = la personne s'est opposée, `false` = pas d'opposition enregistrée, `null` = information non renseignée à la source — `null` ne vaut pas `false`. Le dirigeant reste servi dans tous les cas : le champ signale l'opposition, il ne masque rien, parce qu'elle porte sur la prospection et non sur les autres usages (KYC, vérification de signataire, conformité). Il revient à l'appelant, responsable de son propre traitement, d'exclure ces personnes de ses actions de démarchage. ⚠️ La source porte le drapeau sur la formalité, donc au grain SIREN : la valeur est aujourd'hui identique pour tous les dirigeants d'une même entreprise — ne bâtissez aucune logique supposant une granularité par personne. À ne pas confondre avec `diffusible`, qui porte le masquage INSEE de l'entreprise."}},"type":"object","title":"Dirigeant","description":"Dirigeant RNE (personne physique ou morale) — GROWTH+.\n\nDonnées personnelles issues du Registre national des entreprises (INPI),\nservies uniquement dans le bloc ``unite_legale`` de\n``GET /company/view/{id}`` : les hits de ``GET /company/search`` n'en\ncontiennent jamais, et le nom d'un dirigeant n'est pas un critère de\nrecherche. Avant toute réutilisation en prospection commerciale, lire\n``opposition_prospection``."},"EstablishmentDetails":{"properties":{"siret":{"type":"string","title":"Siret"},"siren":{"type":"string","title":"Siren"},"nic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nic"},"est_siege":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Siege"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse"},"numero_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numero Voie"},"indice_repetition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indice Repetition"},"type_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Voie"},"libelle_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Voie"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"libelle_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Commune"},"departement":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"region":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex"},"libelle_cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Cedex"},"liste_enseignes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Liste Enseignes"},"nom_commercial":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commercial"},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"unite_legale":{"anyOf":[{"$ref":"#/components/schemas/UniteLegaleDetails"},{"type":"null"}]}},"type":"object","required":["siret","siren"],"title":"EstablishmentDetails","description":"Fiche, niveau DISCOVERY : identité + adresse complète de l'établissement."},"EstablishmentWithEnrichment":{"properties":{"siret":{"type":"string","title":"Siret"},"siren":{"type":"string","title":"Siren"},"nic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nic"},"est_siege":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Siege"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse"},"numero_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numero Voie"},"indice_repetition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indice Repetition"},"type_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Voie"},"libelle_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Voie"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"libelle_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Commune"},"departement":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"region":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex"},"libelle_cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Cedex"},"liste_enseignes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Liste Enseignes"},"nom_commercial":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commercial"},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"unite_legale":{"anyOf":[{"$ref":"#/components/schemas/UniteLegaleWithEnrichment"},{"type":"null"}]},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"localisation":{"anyOf":[{"$ref":"#/components/schemas/Localisation"},{"type":"null"}],"description":"Provenance et précision de la position ; `null` si `latitude` est `null`. À lire avant tout comptage ou calcul de zone."},"epci":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"conventions_collectives":{"items":{"$ref":"#/components/schemas/CodeLibelle"},"type":"array","title":"Conventions Collectives"}},"type":"object","required":["siret","siren"],"title":"EstablishmentWithEnrichment","description":"Niveau GROWTH : + EPCI et conventions collectives (IDCC du site) ;\nUL + dirigeants et identité RNE."},"EstablishmentWithFinancials":{"properties":{"siret":{"type":"string","title":"Siret"},"siren":{"type":"string","title":"Siren"},"nic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nic"},"est_siege":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Siege"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse"},"numero_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numero Voie"},"indice_repetition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indice Repetition"},"type_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Voie"},"libelle_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Voie"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"libelle_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Commune"},"departement":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"region":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex"},"libelle_cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Cedex"},"liste_enseignes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Liste Enseignes"},"nom_commercial":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commercial"},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"unite_legale":{"anyOf":[{"$ref":"#/components/schemas/UniteLegaleWithFinancials"},{"type":"null"}]},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"localisation":{"anyOf":[{"$ref":"#/components/schemas/Localisation"},{"type":"null"}],"description":"Provenance et précision de la position ; `null` si `latitude` est `null`. À lire avant tout comptage ou calcul de zone."},"epci":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"conventions_collectives":{"items":{"$ref":"#/components/schemas/CodeLibelle"},"type":"array","title":"Conventions Collectives"}},"type":"object","required":["siret","siren"],"title":"EstablishmentWithFinancials","description":"Niveau BUSINESS : UL + finances et procédures collectives."},"EstablishmentWithGeolocation":{"properties":{"siret":{"type":"string","title":"Siret"},"siren":{"type":"string","title":"Siren"},"nic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nic"},"est_siege":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Est Siege"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse"},"numero_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Numero Voie"},"indice_repetition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indice Repetition"},"type_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Voie"},"libelle_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Voie"},"complement_adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement Adresse"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"libelle_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Commune"},"departement":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"region":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cedex"},"libelle_cedex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Cedex"},"liste_enseignes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Liste Enseignes"},"nom_commercial":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commercial"},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"unite_legale":{"anyOf":[{"$ref":"#/components/schemas/UniteLegaleWithCounters"},{"type":"null"}]},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"localisation":{"anyOf":[{"$ref":"#/components/schemas/Localisation"},{"type":"null"}],"description":"Provenance et précision de la position ; `null` si `latitude` est `null`. À lire avant tout comptage ou calcul de zone."}},"type":"object","required":["siret","siren"],"title":"EstablishmentWithGeolocation","description":"Niveau STARTER : + latitude/longitude (WGS84) et leur provenance ;\nUL + TVA/compteurs."},"EtatAdministratif":{"properties":{"code":{"type":"string","title":"Code"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle"},"date_effet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Effet"}},"type":"object","required":["code"],"title":"EtatAdministratif"},"ExerciceFinancier":{"properties":{"annee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Annee"},"date_cloture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Cloture"},"type_bilan":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"chiffre_affaires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chiffre Affaires"},"marge_brute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Marge Brute"},"ebe":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ebe"},"resultat_net":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resultat Net"}},"type":"object","title":"ExerciceFinancier","description":"Exercice financier publié — BUSINESS."},"Geocoding":{"properties":{"iris":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iris","description":"IRIS code"},"code_iris":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Iris","description":"Complete IRIS code. Result of concatenating the INSEE_COM and IRIS attributes."},"nom_iris":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Iris","description":"IRIS name (in lowercase letters with accents). For small municipalities without subdivisions, the IRIS name is the name of the municipality."},"type_iris":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Iris","description":"Type of IRIS area"}},"type":"object","title":"Geocoding"},"Geolocalisation":{"properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat","description":"Latitude of the address"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon","description":"Longitude of the address"},"x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"X","description":"X coordinate of the address"},"y":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Y","description":"Y coordinate of the address"},"type_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Position","description":"Type of geolocation (e.g., 'Point')"}},"type":"object","title":"Geolocalisation","description":"Model for geolocation data","examples":[{"lat":48.8566,"lon":2.3522,"type_position":"Point","x":876646.96,"y":6310120.27}]},"GeolocalisationLocality":{"properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat","description":"Latitude of the locality"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon","description":"Longitude of the locality"}},"type":"object","title":"GeolocalisationLocality","description":"Model for geolocation details"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IdentiteRne":{"properties":{"capital":{"anyOf":[{"$ref":"#/components/schemas/Capital"},{"type":"null"}]},"objet_social":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Objet Social"},"forme_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"date_immatriculation_rcs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Immatriculation Rcs"}},"type":"object","title":"IdentiteRne","description":"Identité RNE (INPI) — GROWTH+."},"JugementBodacc":{"properties":{"date_jugement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Jugement"},"famille":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Famille"},"nature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nature"},"type_avis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Avis"},"tribunal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tribunal"},"date_parution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Parution"},"url_bodacc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Bodacc"}},"type":"object","title":"JugementBodacc"},"Localisation":{"properties":{"source":{"type":"string","enum":["insee","ban"],"title":"Source","description":"`insee` : géolocalisation du stock SIRENE ; `ban` : géocodage complémentaire TrustyData par la Base Adresse Nationale."},"precision":{"type":"string","enum":["adresse","voie","lieu_dit"],"title":"Precision","description":"`adresse` : au numéro (ou position INSEE, à l'accès du bâtiment) ; `voie` : au milieu de la voie ; `lieu_dit` : au lieu-dit. Jamais au centroïde de la commune."}},"type":"object","required":["source","precision"],"title":"Localisation","description":"Provenance et précision de la position d'un établissement."},"LocalityChoice":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the match"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the locality"},"destination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination","description":"Postal code and locality name combined"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"locality name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"ligne_5":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne 5","description":"Additional address line 5"},"ligne_6":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne 6","description":"Additional address line 6"},"position":{"anyOf":[{"$ref":"#/components/schemas/GeolocalisationLocality"},{"type":"null"}],"description":"Geolocation details"},"surface":{"anyOf":[{"$ref":"#/components/schemas/LocalitySurface"},{"type":"null"}],"description":"Surface area details"},"elevation":{"anyOf":[{"$ref":"#/components/schemas/LocalityElevation"},{"type":"null"}],"description":"Elevation details"},"density":{"anyOf":[{"$ref":"#/components/schemas/LocalityDensity"},{"type":"null"}],"description":"Population density details"},"population":{"anyOf":[{"items":{"$ref":"#/components/schemas/Population"},"type":"array"},{"type":"null"}],"title":"Population","description":"Population details"},"departement":{"anyOf":[{"$ref":"#/components/schemas/Departement"},{"type":"null"}],"description":"Department details"},"region":{"anyOf":[{"$ref":"#/components/schemas/Region"},{"type":"null"}],"description":"Region details"},"cog":{"anyOf":[{"$ref":"#/components/schemas/CogCommune"},{"type":"null"}],"description":"COG commune details"}},"type":"object","required":["score"],"title":"LocalityChoice","description":"Model for locality details","examples":[{"code_postal":"62930","cog":{"arr":"623","can":"6213","comparent":"","ctcd":"62D","insee":"62893","libelle":"Wimereux","nom_majus":"WIMEREUX","nom_riche":"Wimereux","type":"COM"},"density":{"code":4,"label":"Ceintures urbaines"},"departement":{"chef_lieu":"62041","id":"62","libelle":"Pas-de-Calais","nom_majus":"PAS DE CALAIS","nom_riche":"Pas-de-Calais","population":[{"comptee_a_part":21303,"municipale":1460184,"periode":2022,"totale":1481487},{"comptee_a_part":23605,"municipale":1470725,"periode":2016,"totale":1494330},{"comptee_a_part":27707,"municipale":1462807,"periode":2011,"totale":1490514}]},"destination":"62930 WIMEREUX","elevation":{"average":24,"max":71,"min":0},"id":27238,"ligne_5":"","ligne_6":"WIMEREUX","nom_commune":"WIMEREUX","population":[{"comptee_a_part":131,"municipale":6307,"periode":2022,"totale":6438},{"comptee_a_part":178,"municipale":6795,"periode":2016,"totale":6973},{"comptee_a_part":180,"municipale":7312,"periode":2011,"totale":7492}],"position":{"lat":50.78028171139647,"lon":1.614473436929318},"region":{"chef_lieu":"59350","id":"32","libelle":"Hauts-de-France","nom_majus":"HAUTS DE FRANCE","nom_riche":"Hauts-de-France","population":[{"comptee_a_part":90034,"municipale":5998916,"periode":2022,"totale":6088950},{"comptee_a_part":103718,"municipale":6006870,"periode":2016,"totale":6110588},{"comptee_a_part":116089,"municipale":5960124,"periode":2011,"totale":6076213}]},"score":1,"surface":{"hectare":826,"km2":8}}]},"LocalityChoiceMinimal":{"properties":{"score":{"type":"number","title":"Score","description":"Ranking score of the match"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the locality"},"destination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination","description":"Postal code and locality name combined"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"locality name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"ligne_5":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne 5","description":"Additional address line 5"},"ligne_6":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne 6","description":"Additional address line 6"},"population":{"anyOf":[{"items":{"$ref":"#/components/schemas/Population"},"type":"array"},{"type":"null"}],"title":"Population","description":"Population details"}},"type":"object","required":["score"],"title":"LocalityChoiceMinimal","description":"Model for locality details","examples":[{"code_postal":"62930","destination":"62930 WIMEREUX","id":27238,"ligne_5":"","ligne_6":"WIMEREUX","nom_commune":"WIMEREUX","population":[{"comptee_a_part":131,"municipale":6307,"periode":2022,"totale":6438},{"comptee_a_part":178,"municipale":6795,"periode":2016,"totale":6973},{"comptee_a_part":180,"municipale":7312,"periode":2011,"totale":7492}],"score":1}]},"LocalityDensity":{"properties":{"code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Code","description":"Density code"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Density description"}},"type":"object","title":"LocalityDensity"},"LocalityElevation":{"properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min","description":"Minimum elevation in meters"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max","description":"Maximum elevation in meters"},"average":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average","description":"Average elevation in meters"}},"type":"object","title":"LocalityElevation"},"LocalitySurface":{"properties":{"hectare":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hectare","description":"Surface area in hectares"},"km2":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Km2","description":"Surface area in square kilometers"}},"type":"object","title":"LocalitySurface"},"LocationsContact":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"type":{"type":"string","title":"Type"},"valeur":{"type":"string","title":"Valeur"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle"},"ordre":{"type":"integer","title":"Ordre","default":0}},"type":"object","required":["id_externe","type","valeur"],"title":"LocationsContact"},"LocationsCreneau":{"properties":{"debut":{"type":"string","format":"time","title":"Debut"},"fin":{"type":"string","format":"time","title":"Fin"}},"type":"object","required":["debut","fin"],"title":"LocationsCreneau"},"LocationsErreurLigne":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"motif":{"type":"string","title":"Motif"}},"type":"object","required":["id_externe","motif"],"title":"LocationsErreurLigne","description":"Un échec nommé par l'identifiant que le client connaît."},"LocationsHoraireException":{"properties":{"date_debut":{"type":"string","format":"date","title":"Date Debut"},"date_fin":{"type":"string","format":"date","title":"Date Fin"},"creneaux":{"items":{"$ref":"#/components/schemas/LocationsCreneau"},"type":"array","title":"Creneaux","default":[]},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle"},"ordre":{"type":"integer","title":"Ordre","default":0}},"type":"object","required":["date_debut","date_fin"],"title":"LocationsHoraireException"},"LocationsHoraireHebdo":{"properties":{"jour":{"type":"integer","title":"Jour"},"debut":{"type":"string","format":"time","title":"Debut"},"fin":{"type":"string","format":"time","title":"Fin"},"ordre":{"type":"integer","title":"Ordre","default":0}},"type":"object","required":["jour","debut","fin"],"title":"LocationsHoraireHebdo"},"LocationsLien":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"url":{"type":"string","title":"Url"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle"},"ordre":{"type":"integer","title":"Ordre","default":0}},"type":"object","required":["id_externe","url"],"title":"LocationsLien"},"LocationsOuverture":{"properties":{"statut":{"type":"string","title":"Statut"},"prochaine_ouverture":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prochaine Ouverture"},"prochaine_fermeture":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prochaine Fermeture"}},"type":"object","required":["statut"],"title":"LocationsOuverture"},"LocationsPagination":{"properties":{"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"total_estime":{"type":"integer","title":"Total Estime"}},"type":"object","required":["limit","offset","total_estime"],"title":"LocationsPagination"},"LocationsPortee":{"properties":{"type":{"type":"string","enum":["rayon","isochrone"],"title":"Type"},"rayon_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rayon Km"},"duree_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duree Min"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"},"circulation":{"anyOf":[{"type":"string","enum":["fluide","pointe"]},{"type":"null"}],"title":"Circulation","description":"Conditions de circulation, en portée `isochrone` — toujours renseigné, `fluide` compris."},"polygone":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Polygone","description":"Contour GeoJSON, présent seulement si `polygone=true`."}},"type":"object","required":["type"],"title":"LocationsPortee","description":"Ce qui a sélectionné les résultats — rayon ou contour.\n\nSymétrique de `point_central.precision` : sans elle, un client qui\nreçoit douze résultats ne peut pas relire ce qui les a retenus, et un\nwidget qui rejoue une URL ne sait pas ce qu'il affiche."},"LocationsRapportLot":{"properties":{"tache_id":{"type":"string","title":"Tache Id"},"total":{"type":"integer","title":"Total"},"crees":{"type":"integer","title":"Crees"},"mis_a_jour":{"type":"integer","title":"Mis A Jour"},"erreurs":{"items":{"$ref":"#/components/schemas/LocationsErreurLigne"},"type":"array","title":"Erreurs","default":[]}},"type":"object","required":["tache_id","total","crees","mis_a_jour"],"title":"LocationsRapportLot","description":"`total` est le nombre de lignes soumises, pas le nombre de réussites :\n`crees + mis_a_jour + len(erreurs) == total`.","examples":[{"crees":238,"erreurs":[{"id_externe":"LYON-VAISE","motif":"code_postal invalide"}],"mis_a_jour":11,"tache_id":"0b6f2d41-9c3e-4a58-8d17-2f4a6c9e3b0d","total":250}]},"LocationsRapportSync":{"properties":{"tache_id":{"type":"string","title":"Tache Id"},"total":{"type":"integer","title":"Total"},"crees":{"type":"integer","title":"Crees"},"mis_a_jour":{"type":"integer","title":"Mis A Jour"},"erreurs":{"items":{"$ref":"#/components/schemas/LocationsErreurLigne"},"type":"array","title":"Erreurs","default":[]},"desactives":{"type":"integer","title":"Desactives"}},"type":"object","required":["tache_id","total","crees","mis_a_jour","desactives"],"title":"LocationsRapportSync","examples":[{"crees":2,"desactives":12,"erreurs":[],"mis_a_jour":236,"tache_id":"7c1e9a53-4b28-42d6-9e05-8a3f1d7b6c24","total":240}]},"LocationsRechercheSortie":{"properties":{"resultats":{"items":{"$ref":"#/components/schemas/LocationsSiteAvecDistance"},"type":"array","title":"Resultats"},"pagination":{"$ref":"#/components/schemas/LocationsPagination"},"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"portee":{"$ref":"#/components/schemas/LocationsPortee"},"attribution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attribution","description":"Mention OpenStreetMap (ODbL) à reproduire visiblement. Présente dès qu'un moteur d'itinéraire a été sollicité."}},"type":"object","required":["resultats","pagination","point_central","portee"],"title":"LocationsRechercheSortie","description":"Enveloppe de la recherche de proximité dans un référentiel de sites.\n\n`point_central` dit où la recherche a effectivement porté. Il compte\nsurtout quand le centre a été donné en `adresse` : son champ `precision`\ndistingue une adresse résolue au numéro d'un simple centre de commune, et\nun rayon de 2 km n'a pas le même sens dans les deux cas.","examples":[{"attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","pagination":{"limit":20,"offset":0,"total_estime":2},"point_central":{"adresse_resolue":"Place Bellecour 69002 Lyon","code_insee":"69382","commune":"Lyon","lat":45.75776,"lon":4.83201,"precision":"adresse"},"portee":{"circulation":"fluide","duree_min":20,"mode":"velo","type":"isochrone"},"resultats":[{"code_postal":"69002","commune":"Lyon","contacts":[{"id_externe":"TEL","libelle":"Boutique","ordre":0,"type":"telephone","valeur":"+33478000002"},{"id_externe":"MAIL","ordre":1,"type":"email","valeur":"bellecour@example.fr"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Boutique et salon de thé, 40 places.","distance_m":241.7,"distance_routiere_m":310.0,"donnees":{"code_erp":"BLC002","surface_m2":180},"duree_s":228,"etag":"9f2c1ab74e5d40c8b3ae61f0d27c8a15","fuseau":"Europe/Paris","geocodage_source":"fourni","geocodage_statut":"non_requis","horaires_exception":[{"creneaux":[],"date_debut":"2026-12-25","date_fin":"2026-12-25","libelle":"Noël","ordre":0}],"horaires_hebdo":[{"debut":"07:00:00","fin":"19:30:00","jour":1,"ordre":0},{"debut":"07:00:00","fin":"19:30:00","jour":2,"ordre":1},{"debut":"07:00:00","fin":"19:30:00","jour":3,"ordre":2},{"debut":"07:00:00","fin":"19:30:00","jour":4,"ordre":3},{"debut":"07:00:00","fin":"19:30:00","jour":5,"ordre":4},{"debut":"07:00:00","fin":"19:30:00","jour":6,"ordre":5}],"id_externe":"LYON-BELLECOUR","latitude":45.757814,"liens":[{"id_externe":"SITE","libelle":"Fiche boutique","ordre":0,"url":"https://example.fr/bellecour"}],"ligne_voie":"12 Place Bellecour","longitude":4.832011,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-002","nom_public":"Boulangerie Bellecour","ouverture":{"prochaine_fermeture":"2026-09-05T19:30:00+02:00","statut":"ouvert"},"pays":"FR","statut":"actif","tags":["boutique","salon-de-the"]},{"code_postal":"69006","commune":"Lyon","contacts":[{"id_externe":"TEL","ordre":0,"type":"telephone","valeur":"+33478000007"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Kiosque, vente à emporter.","distance_m":2534.9,"distance_routiere_m":3912.0,"donnees":{"code_erp":"BLC007","surface_m2":24},"duree_s":1049,"etag":"1d84f6b02c7e49a5ae30b917c4f2e6d3","fuseau":"Europe/Paris","geocodage_le":"2026-08-24T10:03:00+02:00","geocodage_score":0.94,"geocodage_source":"worker","geocodage_statut":"ok","horaires_exception":[],"horaires_hebdo":[{"debut":"07:30:00","fin":"14:00:00","jour":1,"ordre":0},{"debut":"07:30:00","fin":"14:00:00","jour":2,"ordre":1},{"debut":"07:30:00","fin":"14:00:00","jour":3,"ordre":2},{"debut":"07:30:00","fin":"14:00:00","jour":4,"ordre":3},{"debut":"07:30:00","fin":"14:00:00","jour":5,"ordre":4},{"debut":"07:30:00","fin":"14:00:00","jour":6,"ordre":5}],"id_externe":"LYON-TETE-DOR","latitude":45.777222,"liens":[],"ligne_voie":"3 Boulevard des Belges","longitude":4.852222,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-007","nom_public":"Boulangerie Tête d'Or","ouverture":{"prochaine_ouverture":"2026-09-06T07:30:00+02:00","statut":"ferme"},"pays":"FR","statut":"actif","tags":["kiosque"]}]}]},"LocationsRechercheSortiePublique":{"properties":{"resultats":{"items":{"$ref":"#/components/schemas/LocationsSitePublicAvecDistance"},"type":"array","title":"Resultats"},"pagination":{"$ref":"#/components/schemas/LocationsPagination"},"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"portee":{"$ref":"#/components/schemas/LocationsPortee"},"attribution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attribution"}},"type":"object","required":["resultats","pagination","point_central","portee"],"title":"LocationsRechercheSortiePublique","description":"Enveloppe servie à une clé publiable. Identique à\n`LocationsRechercheSortie` hormis la forme des résultats."},"LocationsReferentiel":{"properties":{"code":{"type":"string","title":"Code"},"nom":{"type":"string","title":"Nom"},"statut":{"type":"string","title":"Statut"},"cree_le":{"type":"string","format":"date-time","title":"Cree Le"},"modifie_le":{"type":"string","format":"date-time","title":"Modifie Le"}},"type":"object","required":["code","nom","statut","cree_le","modifie_le"],"title":"LocationsReferentiel","examples":[{"code":"BOULANGERIES","cree_le":"2026-08-24T10:00:00+02:00","modifie_le":"2026-09-02T14:32:00+02:00","nom":"Boulangeries France","statut":"actif"}]},"LocationsSite":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"nom_public":{"type":"string","title":"Nom Public"},"nom_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Interne"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie"},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"pays":{"type":"string","title":"Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"fuseau":{"type":"string","title":"Fuseau"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"donnees":{"additionalProperties":true,"type":"object","title":"Donnees","default":{}},"contacts":{"items":{"$ref":"#/components/schemas/LocationsContact"},"type":"array","title":"Contacts","default":[]},"liens":{"items":{"$ref":"#/components/schemas/LocationsLien"},"type":"array","title":"Liens","default":[]},"horaires_hebdo":{"items":{"$ref":"#/components/schemas/LocationsHoraireHebdo"},"type":"array","title":"Horaires Hebdo","default":[]},"horaires_exception":{"items":{"$ref":"#/components/schemas/LocationsHoraireException"},"type":"array","title":"Horaires Exception","default":[]},"ouverture":{"anyOf":[{"$ref":"#/components/schemas/LocationsOuverture"},{"type":"null"}]},"statut":{"type":"string","title":"Statut"},"geocodage_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Geocodage Source"},"geocodage_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Geocodage Score"},"geocodage_statut":{"type":"string","title":"Geocodage Statut"},"geocodage_le":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Geocodage Le"},"etag":{"type":"string","title":"Etag"},"cree_le":{"type":"string","format":"date-time","title":"Cree Le"},"modifie_le":{"type":"string","format":"date-time","title":"Modifie Le"}},"type":"object","required":["id_externe","nom_public","pays","fuseau","statut","geocodage_statut","etag","cree_le","modifie_le"],"title":"LocationsSite","examples":[{"code_postal":"69002","commune":"Lyon","contacts":[{"id_externe":"TEL","libelle":"Boutique","ordre":0,"type":"telephone","valeur":"+33478000002"},{"id_externe":"MAIL","ordre":1,"type":"email","valeur":"bellecour@example.fr"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Boutique et salon de thé, 40 places.","donnees":{"code_erp":"BLC002","surface_m2":180},"etag":"9f2c1ab74e5d40c8b3ae61f0d27c8a15","fuseau":"Europe/Paris","geocodage_source":"fourni","geocodage_statut":"non_requis","horaires_exception":[{"creneaux":[],"date_debut":"2026-12-25","date_fin":"2026-12-25","libelle":"Noël","ordre":0}],"horaires_hebdo":[{"debut":"07:00:00","fin":"19:30:00","jour":1,"ordre":0},{"debut":"07:00:00","fin":"19:30:00","jour":2,"ordre":1},{"debut":"07:00:00","fin":"19:30:00","jour":3,"ordre":2},{"debut":"07:00:00","fin":"19:30:00","jour":4,"ordre":3},{"debut":"07:00:00","fin":"19:30:00","jour":5,"ordre":4},{"debut":"07:00:00","fin":"19:30:00","jour":6,"ordre":5}],"id_externe":"LYON-BELLECOUR","latitude":45.757814,"liens":[{"id_externe":"SITE","libelle":"Fiche boutique","ordre":0,"url":"https://example.fr/bellecour"}],"ligne_voie":"12 Place Bellecour","longitude":4.832011,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-002","nom_public":"Boulangerie Bellecour","ouverture":{"prochaine_fermeture":"2026-09-05T19:30:00+02:00","statut":"ouvert"},"pays":"FR","statut":"actif","tags":["boutique","salon-de-the"]}]},"LocationsSiteAvecDistance":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"nom_public":{"type":"string","title":"Nom Public"},"nom_interne":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Interne"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie"},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"pays":{"type":"string","title":"Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"fuseau":{"type":"string","title":"Fuseau"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"donnees":{"additionalProperties":true,"type":"object","title":"Donnees","default":{}},"contacts":{"items":{"$ref":"#/components/schemas/LocationsContact"},"type":"array","title":"Contacts","default":[]},"liens":{"items":{"$ref":"#/components/schemas/LocationsLien"},"type":"array","title":"Liens","default":[]},"horaires_hebdo":{"items":{"$ref":"#/components/schemas/LocationsHoraireHebdo"},"type":"array","title":"Horaires Hebdo","default":[]},"horaires_exception":{"items":{"$ref":"#/components/schemas/LocationsHoraireException"},"type":"array","title":"Horaires Exception","default":[]},"ouverture":{"anyOf":[{"$ref":"#/components/schemas/LocationsOuverture"},{"type":"null"}]},"statut":{"type":"string","title":"Statut"},"geocodage_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Geocodage Source"},"geocodage_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Geocodage Score"},"geocodage_statut":{"type":"string","title":"Geocodage Statut"},"geocodage_le":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Geocodage Le"},"etag":{"type":"string","title":"Etag"},"cree_le":{"type":"string","format":"date-time","title":"Cree Le"},"modifie_le":{"type":"string","format":"date-time","title":"Modifie Le"},"distance_m":{"type":"number","title":"Distance M","description":"Distance à vol d'oiseau au centre, en mètres. **C'est elle qui porte le tri**, y compris quand `distances=true`."},"distance_routiere_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Routiere M","description":"Distance routière réelle, en mètres. Présente avec `distances=true`, sur les 25 premiers résultats."},"duree_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duree S","description":"Durée de trajet réelle, en secondes. Ne réordonne pas les résultats."}},"type":"object","required":["id_externe","nom_public","pays","fuseau","statut","geocodage_statut","etag","cree_le","modifie_le","distance_m"],"title":"LocationsSiteAvecDistance","examples":[{"code_postal":"69002","commune":"Lyon","contacts":[{"id_externe":"TEL","libelle":"Boutique","ordre":0,"type":"telephone","valeur":"+33478000002"},{"id_externe":"MAIL","ordre":1,"type":"email","valeur":"bellecour@example.fr"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Boutique et salon de thé, 40 places.","distance_m":241.7,"distance_routiere_m":310.0,"donnees":{"code_erp":"BLC002","surface_m2":180},"duree_s":228,"etag":"9f2c1ab74e5d40c8b3ae61f0d27c8a15","fuseau":"Europe/Paris","geocodage_source":"fourni","geocodage_statut":"non_requis","horaires_exception":[{"creneaux":[],"date_debut":"2026-12-25","date_fin":"2026-12-25","libelle":"Noël","ordre":0}],"horaires_hebdo":[{"debut":"07:00:00","fin":"19:30:00","jour":1,"ordre":0},{"debut":"07:00:00","fin":"19:30:00","jour":2,"ordre":1},{"debut":"07:00:00","fin":"19:30:00","jour":3,"ordre":2},{"debut":"07:00:00","fin":"19:30:00","jour":4,"ordre":3},{"debut":"07:00:00","fin":"19:30:00","jour":5,"ordre":4},{"debut":"07:00:00","fin":"19:30:00","jour":6,"ordre":5}],"id_externe":"LYON-BELLECOUR","latitude":45.757814,"liens":[{"id_externe":"SITE","libelle":"Fiche boutique","ordre":0,"url":"https://example.fr/bellecour"}],"ligne_voie":"12 Place Bellecour","longitude":4.832011,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-002","nom_public":"Boulangerie Bellecour","ouverture":{"prochaine_fermeture":"2026-09-05T19:30:00+02:00","statut":"ouvert"},"pays":"FR","statut":"actif","tags":["boutique","salon-de-the"]}]},"LocationsSiteListe":{"properties":{"resultats":{"items":{"$ref":"#/components/schemas/LocationsSite"},"type":"array","title":"Resultats"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["resultats","total"],"title":"LocationsSiteListe","description":"Enveloppe de la liste paginée des sites d'un référentiel.\n\nContrat volontairement plus simple que celui de la recherche\n(`resultats`/`total` contre `resultats`/`pagination`) : c'est un listing,\npas une recherche classée.","examples":[{"resultats":[{"code_postal":"69002","commune":"Lyon","contacts":[{"id_externe":"TEL","libelle":"Boutique","ordre":0,"type":"telephone","valeur":"+33478000002"},{"id_externe":"MAIL","ordre":1,"type":"email","valeur":"bellecour@example.fr"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Boutique et salon de thé, 40 places.","donnees":{"code_erp":"BLC002","surface_m2":180},"etag":"9f2c1ab74e5d40c8b3ae61f0d27c8a15","fuseau":"Europe/Paris","geocodage_source":"fourni","geocodage_statut":"non_requis","horaires_exception":[{"creneaux":[],"date_debut":"2026-12-25","date_fin":"2026-12-25","libelle":"Noël","ordre":0}],"horaires_hebdo":[{"debut":"07:00:00","fin":"19:30:00","jour":1,"ordre":0},{"debut":"07:00:00","fin":"19:30:00","jour":2,"ordre":1},{"debut":"07:00:00","fin":"19:30:00","jour":3,"ordre":2},{"debut":"07:00:00","fin":"19:30:00","jour":4,"ordre":3},{"debut":"07:00:00","fin":"19:30:00","jour":5,"ordre":4},{"debut":"07:00:00","fin":"19:30:00","jour":6,"ordre":5}],"id_externe":"LYON-BELLECOUR","latitude":45.757814,"liens":[{"id_externe":"SITE","libelle":"Fiche boutique","ordre":0,"url":"https://example.fr/bellecour"}],"ligne_voie":"12 Place Bellecour","longitude":4.832011,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-002","nom_public":"Boulangerie Bellecour","ouverture":{"prochaine_fermeture":"2026-09-05T19:30:00+02:00","statut":"ouvert"},"pays":"FR","statut":"actif","tags":["boutique","salon-de-the"]},{"code_postal":"69006","commune":"Lyon","contacts":[{"id_externe":"TEL","ordre":0,"type":"telephone","valeur":"+33478000007"}],"cree_le":"2026-08-24T10:00:00+02:00","description":"Kiosque, vente à emporter.","donnees":{"code_erp":"BLC007","surface_m2":24},"etag":"1d84f6b02c7e49a5ae30b917c4f2e6d3","fuseau":"Europe/Paris","geocodage_le":"2026-08-24T10:03:00+02:00","geocodage_score":0.94,"geocodage_source":"worker","geocodage_statut":"ok","horaires_exception":[],"horaires_hebdo":[{"debut":"07:30:00","fin":"14:00:00","jour":1,"ordre":0},{"debut":"07:30:00","fin":"14:00:00","jour":2,"ordre":1},{"debut":"07:30:00","fin":"14:00:00","jour":3,"ordre":2},{"debut":"07:30:00","fin":"14:00:00","jour":4,"ordre":3},{"debut":"07:30:00","fin":"14:00:00","jour":5,"ordre":4},{"debut":"07:30:00","fin":"14:00:00","jour":6,"ordre":5}],"id_externe":"LYON-TETE-DOR","latitude":45.777222,"liens":[],"ligne_voie":"3 Boulevard des Belges","longitude":4.852222,"modifie_le":"2026-09-02T14:32:00+02:00","nom_interne":"BLC-007","nom_public":"Boulangerie Tête d'Or","ouverture":{"prochaine_ouverture":"2026-09-06T07:30:00+02:00","statut":"ferme"},"pays":"FR","statut":"actif","tags":["kiosque"]}],"total":2}]},"LocationsSitePublicAvecDistance":{"properties":{"id_externe":{"type":"string","title":"Id Externe"},"nom_public":{"type":"string","title":"Nom Public"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie"},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement"},"code_postal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Postal"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune"},"pays":{"type":"string","title":"Pays"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"fuseau":{"type":"string","title":"Fuseau"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"donnees":{"additionalProperties":true,"type":"object","title":"Donnees","default":{}},"contacts":{"items":{"$ref":"#/components/schemas/LocationsContact"},"type":"array","title":"Contacts","default":[]},"liens":{"items":{"$ref":"#/components/schemas/LocationsLien"},"type":"array","title":"Liens","default":[]},"horaires_hebdo":{"items":{"$ref":"#/components/schemas/LocationsHoraireHebdo"},"type":"array","title":"Horaires Hebdo","default":[]},"horaires_exception":{"items":{"$ref":"#/components/schemas/LocationsHoraireException"},"type":"array","title":"Horaires Exception","default":[]},"ouverture":{"anyOf":[{"$ref":"#/components/schemas/LocationsOuverture"},{"type":"null"}]},"distance_m":{"type":"number","title":"Distance M"},"distance_routiere_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Routiere M"},"duree_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duree S"}},"type":"object","required":["id_externe","nom_public","pays","fuseau","distance_m"],"title":"LocationsSitePublicAvecDistance"},"LocationsTache":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"statut":{"type":"string","title":"Statut"},"total":{"type":"integer","title":"Total"},"traites":{"type":"integer","title":"Traites"},"erreurs":{"items":{"$ref":"#/components/schemas/LocationsErreurLigne"},"type":"array","title":"Erreurs","default":[]},"cree_le":{"type":"string","format":"date-time","title":"Cree Le"},"termine_le":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Termine Le"}},"type":"object","required":["id","type","statut","total","traites","cree_le"],"title":"LocationsTache","examples":[{"cree_le":"2026-09-02T14:30:00+02:00","erreurs":[{"id_externe":"LYON-VAISE","motif":"code_postal invalide"}],"id":"0b6f2d41-9c3e-4a58-8d17-2f4a6c9e3b0d","statut":"termine","termine_le":"2026-09-02T14:30:12+02:00","total":250,"traites":250,"type":"lot"}]},"Population":{"properties":{"periode":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Periode","description":"Year of the population data"},"totale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totale","description":"Total population count"},"municipale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipale","description":"Municipal population count"},"comptee_a_part":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comptee A Part","description":"Counted separately population"}},"type":"object","title":"Population","description":"Model for population details"},"ProceduresCollectives":{"properties":{"procedure_en_cours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Procedure En Cours"},"jugements":{"items":{"$ref":"#/components/schemas/JugementBodacc"},"type":"array","title":"Jugements"}},"type":"object","title":"ProceduresCollectives","description":"Procédures collectives (BODACC) — BUSINESS."},"ProximityAddressDetails":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"distance_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance M","description":"Distance au point central en mètres (haversine, arrondie)"}},"type":"object","title":"ProximityAddressDetails","description":"Résultat de proximité, plan DISCOVERY : payload /address/view + distance.","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","rep":"","source_position":"commune"}]},"ProximityAddressWithGeocoding":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"},"distance_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance M","description":"Distance au point central en mètres (haversine, arrondie)"}},"type":"object","title":"ProximityAddressWithGeocoding","description":"Résultat de proximité, plan GROWTH : payload /address/view + distance.","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","geocoding":{"code_iris":"013530000","iris":"0000","nom_iris":"Sainte-Euphémie","type_iris":"Z"},"id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","source_position":"commune"}]},"ProximityAddressWithGeolocation":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"distance_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance M","description":"Distance au point central en mètres (haversine, arrondie)"}},"type":"object","title":"ProximityAddressWithGeolocation","description":"Résultat de proximité, plan STARTER : payload /address/view + distance.","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","score":0.99,"source_position":"commune"}]},"ProximityAddressWithStatisticalGrid":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"},"statistical_grid":{"anyOf":[{"$ref":"#/components/schemas/StatisticalGrid"},{"type":"null"}],"description":"Statistical grid data of the address"},"distance_m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance M","description":"Distance au point central en mètres (haversine, arrondie)"}},"type":"object","title":"ProximityAddressWithStatisticalGrid","description":"Résultat de proximité, plan BUSINESS : payload /address/view + distance.","examples":[{"adresse":"215 Chemin des Acacias, 01600 Sainte-Euphémie","cad_parcelles":["013530000B0712","013530000B0714","013530000B0713","013530000B0711"],"certification_commune":true,"code_insee":"01353","code_insee_ancienne_commune":"","code_postal":"01600","geocoding":{"code_iris":"013530000","iris":"0000","nom_iris":"Sainte-Euphémie","type_iris":"Z"},"id":"8dce49b2-8e26-4e72-a81d-ff1c1f0072f6","id_ban":"01353_0100_00215","id_fantoir":"01353_0100","libelle_acheminement":"SAINTE-EUPHEMIE","ligne_commune":"01600 Sainte-Euphémie","ligne_voie":"215 Chemin des Acacias","nom_afnor":"CHEMIN DES ACACIAS","nom_ancienne_commune":"","nom_commune":"Sainte-Euphémie","nom_ld":"","nom_voie":"Chemin des Acacias","numero":"215","position":{"lat":45.947598,"lon":4.805424,"type_position":"entrée","x":839847.95,"y":6540253.43},"rep":"","source_position":"commune","statistical_grid":{"depcom":"01322","groupe":608522,"i_est_1km":0,"i_est_cr":1,"i_pauv":0,"id_car2010":"CRS3035RES200mN2551200E3918000","id_carr1km":"CRS3035RES1000mN2551000E3918000","id_carr_n":"CRS3035RES1000mN2551000E3918000","id_inspire":"CRS3035RES200mN2551200E3918000","ind":2,"ind_0_3":0.1,"ind_11_17":0.2,"ind_18_24":0.1,"ind_25_39":0.3,"ind_40_54":0.5,"ind_4_5":0,"ind_55_64":0.3,"ind_65_79":0.3,"ind_6_10":0,"ind_80p":0.1,"ind_inc":0.1,"ind_snv":53964,"log_45_70":0.1,"log_70_90":0.3,"log_ap90":0.2,"log_av45":0.2,"log_inc":0,"log_soc":0,"men":0.8,"men_1ind":0.1,"men_5ind":0.1,"men_coll":0.1,"men_fmp":0.1,"men_mais":0.7,"men_pauv":0,"men_prop":0.7,"men_surf":92.3}}]},"ProximityCenter":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitude WGS84 du point central effectivement utilisé"},"lon":{"type":"number","title":"Lon","description":"Longitude WGS84 du point central effectivement utilisé"},"adresse_resolue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse Resolue","description":"Adresse retenue après résolution, ou nom de la commune si le centre est une commune. Null si le point a été fourni en coordonnées."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Identifiant du document adresse résolu (utilisable avec /address/view/{id}). Null si le point a été fourni en coordonnées ou résolu à la commune."},"precision":{"type":"string","enum":["coordonnees","adresse","commune"],"title":"Precision","description":"Précision du centre effectivement utilisé. `coordonnees` : lat/lon fournis tels quels. `adresse` : adresse résolue au numéro dans le référentiel. `commune` : l'adresse n'a pas été résolue mais la saisie désignait une commune — le centre est le centre de cette commune, à quelques kilomètres près sur une grande ville.","default":"coordonnees"},"commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commune","description":"Nom de la commune servant de centre. Renseigné uniquement quand precision vaut `commune`."},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"Code INSEE de la commune servant de centre (celui de la commune réelle, pas de l'arrondissement). Renseigné uniquement quand precision vaut `commune`."}},"type":"object","required":["lat","lon"],"title":"ProximityCenter","description":"Point central de la recherche, résolu le cas échéant."},"ProximityDiscoveryResponse":{"properties":{"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"resultats":{"items":{"$ref":"#/components/schemas/ProximityAddressDetails"},"type":"array","title":"Resultats","description":"Adresses du rayon, triées par distance croissante"},"pagination":{"$ref":"#/components/schemas/ProximityPagination"}},"type":"object","required":["point_central","resultats","pagination"],"title":"ProximityDiscoveryResponse","description":"Réponse de GET /address/proximity, plan DISCOVERY."},"ProximityFullResponse":{"properties":{"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"resultats":{"items":{"$ref":"#/components/schemas/ProximityAddressWithStatisticalGrid"},"type":"array","title":"Resultats","description":"Adresses du rayon, triées par distance croissante"},"pagination":{"$ref":"#/components/schemas/ProximityPagination"}},"type":"object","required":["point_central","resultats","pagination"],"title":"ProximityFullResponse","description":"Réponse de GET /address/proximity, plan BUSINESS."},"ProximityGrowthResponse":{"properties":{"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"resultats":{"items":{"$ref":"#/components/schemas/ProximityAddressWithGeocoding"},"type":"array","title":"Resultats","description":"Adresses du rayon, triées par distance croissante"},"pagination":{"$ref":"#/components/schemas/ProximityPagination"}},"type":"object","required":["point_central","resultats","pagination"],"title":"ProximityGrowthResponse","description":"Réponse de GET /address/proximity, plan GROWTH."},"ProximityPagination":{"properties":{"offset":{"type":"integer","title":"Offset","description":"Décalage demandé"},"limit":{"type":"integer","title":"Limit","description":"Taille de page demandée"},"total_estime":{"type":"integer","title":"Total Estime","description":"Nombre total estimé d'adresses dans le rayon (estimatedTotalHits Meilisearch — estimation, pas un comptage exact)"},"tronque":{"type":"boolean","title":"Tronque","description":"true si le total estimé atteint le cap parcourable (5000 par défaut) — la zone en contient vraisemblablement davantage : réduire le rayon pour l'exhaustivité"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset","description":"Offset à passer pour obtenir la page suivante ; null quand il n'y a plus de page (fin des résultats ou cap parcourable atteint)"}},"type":"object","required":["offset","limit","total_estime","tronque"],"title":"ProximityPagination","description":"Pagination stateless de la recherche de proximité."},"ProximityStarterResponse":{"properties":{"point_central":{"$ref":"#/components/schemas/ProximityCenter"},"resultats":{"items":{"$ref":"#/components/schemas/ProximityAddressWithGeolocation"},"type":"array","title":"Resultats","description":"Adresses du rayon, triées par distance croissante"},"pagination":{"$ref":"#/components/schemas/ProximityPagination"}},"type":"object","required":["point_central","resultats","pagination"],"title":"ProximityStarterResponse","description":"Réponse de GET /address/proximity, plan STARTER."},"Region":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Unique identifier for the region"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Full name with article"},"chef_lieu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chef Lieu","description":"Insee code of administrative center"},"nom_majus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Majus","description":"full name in uppercase"},"nom_riche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Riche","description":"Full name (rich typography)"},"population":{"anyOf":[{"items":{"$ref":"#/components/schemas/Population"},"type":"array"},{"type":"null"}],"title":"Population","description":"Population details"}},"type":"object","title":"Region","description":"Model for region details"},"RegionCode":{"type":"string","enum":["01","02","03","04","06","11","24","27","28","32","44","52","53","75","76","84","93","94"],"title":"RegionCode","description":"Enum for French region codes"},"RegionName":{"type":"string","enum":["GUADELOUPE","MARTINIQUE","GUYANE","LA REUNION","MAYOTTE","ILE DE FRANCE","CENTRE VAL DE LOIRE","BOURGOGNE FRANCHE COMTE","NORMANDIE","HAUTS DE FRANCE","GRAND EST","PAYS DE LA LOIRE","BRETAGNE","NOUVELLE AQUITAINE","OCCITANIE","AUVERGNE RHONE ALPES","PROVENCE ALPES COTE D AZUR","CORSE"],"title":"RegionName","description":"Enum for French region names"},"ResponseStatus":{"type":"string","enum":["OK","TOO_SHORT","API_ERROR","INTERNAL_ERROR","NO_RESULTS"],"title":"ResponseStatus","description":"Status codes for API responses"},"RouteBBox":{"properties":{"min_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Lat","description":"Latitude minimale"},"min_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Lon","description":"Longitude minimale"},"max_lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Lat","description":"Latitude maximale"},"max_lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Lon","description":"Longitude maximale"}},"type":"object","title":"RouteBBox","description":"Boîte englobante du parcours."},"RouteComputeRequest":{"properties":{"origin":{"$ref":"#/components/schemas/RouteEndpointInput","description":"Borne d'origine"},"destination":{"$ref":"#/components/schemas/RouteEndpointInput","description":"Borne de destination"},"mode":{"type":"string","enum":["auto","pieton","velo"],"title":"Mode","description":"Mode de déplacement. `auto` (voiture, défaut), `pieton` ou `velo`. Les consignes de navigation sont adaptées au mode.","default":"auto","examples":["auto"]}},"type":"object","required":["origin","destination"],"title":"RouteComputeRequest","description":"Requête de calcul d'itinéraire entre deux bornes.","examples":[{"destination":{"lat":48.785299,"lon":2.317801},"origin":{"address":"1 rue de la Paix 75002 Paris"}},{"destination":{"address":"Place Bellecour 69002 Lyon"},"origin":{"lat":48.869,"lon":2.331}},{"destination":{"address":"Parc de la Tête d'Or 69006 Lyon"},"mode":"velo","origin":{"address":"Place Bellecour 69002 Lyon"}}]},"RouteComputeResponse":{"properties":{"origine":{"$ref":"#/components/schemas/RoutePoint","description":"Point d'origine résolu"},"destination":{"$ref":"#/components/schemas/RoutePoint","description":"Point de destination résolu"},"resume":{"$ref":"#/components/schemas/RouteSummary","description":"Résumé du parcours"},"etapes":{"items":{"$ref":"#/components/schemas/RouteManeuver"},"type":"array","title":"Etapes","description":"Liste des manœuvres","default":[]},"mode":{"type":"string","title":"Mode","description":"Mode de déplacement effectivement utilisé (`auto`, `pieton`, `velo`). Une durée sans son mode n'est pas interprétable : ce champ existe pour que le client sache toujours ce qu'il affiche.","default":"auto"},"attribution":{"type":"string","title":"Attribution","description":"Mention d'attribution OpenStreetMap (ODbL) à reproduire visiblement partout où le résultat est restitué à l'utilisateur final.","default":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}},"type":"object","required":["origine","destination","resume"],"title":"RouteComputeResponse","description":"Réponse du calcul d'itinéraire."},"RouteEndpointInput":{"properties":{"address":{"anyOf":[{"type":"string","minLength":4},{"type":"null"}],"title":"Address","description":"Adresse libre. Exclusif avec lat/lon.","examples":["1 rue de la Paix 75002 Paris"]},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat","description":"Latitude WGS84. À fournir avec lon. Exclusif avec address.","examples":[48.869]},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon","description":"Longitude WGS84. À fournir avec lat. Exclusif avec address.","examples":[2.331]}},"type":"object","title":"RouteEndpointInput","description":"Borne (origine ou destination) : adresse OU coordonnées, exclusivement."},"RouteGeometrie":{"properties":{"polyline":{"type":"string","title":"Polyline","description":"Polyline encodée du parcours complet"},"precision":{"type":"integer","title":"Precision","description":"Facteur de précision pour le décodage (6 chez Valhalla)","default":6},"encodage":{"type":"string","title":"Encodage","description":"Identifiant du format d'encodage (encoded polyline, precision 6)","default":"polyline6"}},"type":"object","required":["polyline"],"title":"RouteGeometrie","description":"Tracé du parcours sous forme de polyline encodée.\n\nFormat : encoded polyline algorithm (Google), **precision 6** (Valhalla par défaut,\net non 5 comme Google Maps). Les libs front (`@mapbox/polyline`, `polyline`) doivent\nêtre configurées avec ce facteur de précision lors du décodage."},"RouteManeuver":{"properties":{"consigne":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consigne","description":"Consigne de conduite en français"},"distance_km":{"type":"number","title":"Distance Km","description":"Distance de l'étape en kilomètres"},"duree_s":{"type":"number","title":"Duree S","description":"Durée de l'étape en secondes"},"type":{"type":"integer","title":"Type","description":"Code Valhalla du type de manœuvre"},"index_debut":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index Debut","description":"Index du 1er point de l'étape dans la polyline décodée du parcours"},"index_fin":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index Fin","description":"Index du dernier point de l'étape (exclu) dans la polyline décodée du parcours"}},"type":"object","required":["distance_km","duree_s","type"],"title":"RouteManeuver","description":"Une étape (manœuvre) du parcours."},"RouteMatrixCell":{"properties":{"distance_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Km","description":"Distance en kilomètres, ou null si infaisable"},"duree_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duree S","description":"Durée en secondes, ou null si infaisable"},"duree_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duree Min","description":"Durée en minutes (arrondi 1 décimale), ou null si infaisable"}},"type":"object","title":"RouteMatrixCell","description":"Une cellule de la matrice : trajet d'une origine vers une destination.\n\nPas de géométrie ni d'instructions — uniquement les métriques agrégées.\nSi le trajet est infaisable (pas de route routière entre les deux points),\n`distance_km` et `duree_s`/`duree_min` sont `null`."},"RouteMatrixRequest":{"properties":{"origins":{"items":{"$ref":"#/components/schemas/RouteEndpointInput"},"type":"array","maxItems":25,"minItems":1,"title":"Origins","description":"Liste des origines (1 à 25). Chaque borne : adresse OU coordonnées."},"destinations":{"items":{"$ref":"#/components/schemas/RouteEndpointInput"},"type":"array","maxItems":25,"minItems":1,"title":"Destinations","description":"Liste des destinations (1 à 25). Chaque borne : adresse OU coordonnées."},"mode":{"type":"string","enum":["auto","pieton","velo"],"title":"Mode","description":"Mode de déplacement. `auto` (voiture, défaut), `pieton` ou `velo`. S'applique à toute la matrice.","default":"auto","examples":["auto"]}},"type":"object","required":["origins","destinations"],"title":"RouteMatrixRequest","description":"Requête de matrice distance/durée NxM (origines × destinations).","examples":[{"destinations":[{"address":"Vieux-Port 13001 Marseille"},{"lat":47.218,"lon":-1.553}],"origins":[{"address":"1 rue de la Paix 75002 Paris"},{"address":"Place Bellecour 69002 Lyon"}]},{"destinations":[{"address":"Parc de la Tête d'Or 69006 Lyon"},{"address":"Gare de Lyon-Part-Dieu 69003 Lyon"}],"mode":"velo","origins":[{"address":"Place Bellecour 69002 Lyon"}]}]},"RouteMatrixResponse":{"properties":{"origines":{"items":{"$ref":"#/components/schemas/RoutePoint"},"type":"array","title":"Origines","description":"Origines résolues (mêmes index que la matrice)"},"destinations":{"items":{"$ref":"#/components/schemas/RoutePoint"},"type":"array","title":"Destinations","description":"Destinations résolues (mêmes index que la matrice)"},"matrice":{"items":{"items":{"$ref":"#/components/schemas/RouteMatrixCell"},"type":"array"},"type":"array","title":"Matrice","description":"Matrice origines × destinations. matrice[i][j] = trajet origines[i] → destinations[j]."},"mode":{"type":"string","title":"Mode","description":"Mode de déplacement effectivement utilisé pour toute la matrice (`auto`, `pieton`, `velo`).","default":"auto"},"attribution":{"type":"string","title":"Attribution","description":"Mention d'attribution OpenStreetMap (ODbL) à reproduire visiblement partout où le résultat est restitué à l'utilisateur final.","default":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright"}},"type":"object","required":["origines","destinations","matrice"],"title":"RouteMatrixResponse","description":"Matrice distance/durée NxM (origines × destinations).\n\n`matrice[i][j]` = trajet de `origines[i]` vers `destinations[j]`. Pas de\npolyline ni de manœuvres, uniquement les métriques — accessible dès le plan\nGROWTH pour les usages de scoring data quality (zones de chalandise,\nfiltrage de prospects par temps de trajet).","examples":[{"attribution":"Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","destinations":[{"adresse":"10 Avenue des Champs-Élysées, 75008 Paris","lat":48.8699,"lon":2.3073,"source":"address"},{"adresse":"12 Rue de la République, 69002 Lyon","lat":45.76511,"lon":4.835769,"source":"address"}],"matrice":[[{"distance_km":3.4,"duree_min":9.5,"duree_s":571},{"distance_km":469.057,"duree_min":245.7,"duree_s":14743}],[{"distance_km":470.203,"duree_min":246.7,"duree_s":14800},{"distance_km":1.5,"duree_min":4.0,"duree_s":240}]],"mode":"auto","origines":[{"adresse":"1 Rue de la Paix, 75002 Paris","lat":48.869,"lon":2.331,"source":"address"},{"lat":45.764,"lon":4.835,"source":"coordinates"}]}]},"RoutePoint":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Adresse retenue après résolution. None si la borne a été fournie en coordonnées."},"source":{"type":"string","title":"Source","description":"'address' si la borne a été résolue, 'coordinates' sinon"},"lat":{"type":"number","title":"Lat","description":"Latitude effectivement utilisée pour le calcul"},"lon":{"type":"number","title":"Lon","description":"Longitude effectivement utilisée pour le calcul"}},"type":"object","required":["source","lat","lon"],"title":"RoutePoint","description":"Borne (origine ou destination) résolue, avec coordonnées effectivement utilisées."},"RouteSummary":{"properties":{"distance_km":{"type":"number","title":"Distance Km","description":"Distance totale en kilomètres"},"duree_s":{"type":"number","title":"Duree S","description":"Durée totale en secondes"},"duree_min":{"type":"number","title":"Duree Min","description":"Durée totale en minutes (arrondi 1 décimale)"},"bbox":{"$ref":"#/components/schemas/RouteBBox","description":"Boîte englobante du parcours"},"geometrie":{"anyOf":[{"$ref":"#/components/schemas/RouteGeometrie"},{"type":"null"}],"description":"Tracé du parcours (polyline encodée), à décoder côté client pour l'affichage cartographique"}},"type":"object","required":["distance_km","duree_s","duree_min","bbox"],"title":"RouteSummary","description":"Résumé du parcours : distance, durée, bbox, géométrie."},"SearchLocalityMinimalResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"results":{"items":{"$ref":"#/components/schemas/LocalityChoiceMinimal"},"type":"array","title":"Results","description":"List of locality results","default":[]}},"type":"object","required":["status","message"],"title":"SearchLocalityMinimalResponse","description":"Standardized response model for locality advanced search API"},"SearchLocalityResponse":{"properties":{"status":{"$ref":"#/components/schemas/ResponseStatus","description":"Response status code"},"message":{"type":"string","title":"Message","description":"Human readable message"},"results":{"items":{"$ref":"#/components/schemas/LocalityChoice"},"type":"array","title":"Results","description":"List of locality results","default":[]}},"type":"object","required":["status","message"],"title":"SearchLocalityResponse","description":"Standardized response model for locality advanced search API"},"StatisticalGrid":{"properties":{"id_inspire":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Inspire","description":"Inspire identifier of the 200 m square tile"},"id_carr1km":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Carr1Km","description":"Inspire identifier of the 1 km square to which the 200 m square belongs"},"i_est_cr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"I Est Cr","description":"Equals 1 if the 200 m tile is assigned an approximate value, 0 otherwise"},"id_carr_n":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Carr N","description":"Inspire identifier of the natural level tile to which the 200 m tile belongs"},"groupe":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupe","description":"Number of the group to which the tile belongs"},"depcom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Depcom","description":"Common code, according to the 2019 official geographic code, to which most households in the area are assigned"},"i_pauv":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"I Pauv","description":"Number of 200 m² tiles included in the tile that have been processed to respect confidentiality regarding the number of poor households"},"id_car2010":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Car2010","description":"Inspire identifier for the 200 m grid square included in the 200 m grid database distributed with the RFL2010 source (the number of characters may differ from that of IdINSPIRE)"},"ind":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind","description":"Number of people"},"men":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men","description":"Number of households"},"men_pauv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Pauv","description":"Number of poor households"},"men_1ind":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men 1Ind","description":"Number of single-person households"},"men_5ind":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men 5Ind","description":"Number of households with 5 or more members"},"men_prop":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Prop","description":"Number of owner-occupied households"},"men_fmp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Fmp","description":"Number of single-parent households"},"ind_snv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind Snv","description":"Sum of individuals' winsorized living standards"},"men_surf":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Surf","description":"Total surface area of the dwellings in the block"},"men_coll":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Coll","description":"Number of households in collective housing"},"men_mais":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Men Mais","description":"Number of households in houses"},"log_av45":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log Av45","description":"Number of homes built before 1945"},"log_45_70":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log 45 70","description":"Number of homes built between 1945 and 1969"},"log_70_90":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log 70 90","description":"Number of homes built between 1970 and 1989"},"log_ap90":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log Ap90","description":"Number of housing units built since 1990"},"log_inc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log Inc","description":"Number of dwellings for which the date of construction is unknown"},"log_soc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Log Soc","description":"Number of social housing units"},"ind_0_3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 0 3","description":"Number of individuals aged 0 to 3 years"},"ind_4_5":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 4 5","description":"Number of individuals aged 4 to 5 years"},"ind_6_10":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 6 10","description":"Number of individuals aged 6 to 10 years"},"ind_11_17":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 11 17","description":"Number of individuals aged 11 to 17 years"},"ind_18_24":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 18 24","description":"Number of individuals aged 18 to 24 years"},"ind_25_39":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 25 39","description":"Number of individuals aged 25 to 39 years"},"ind_40_54":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 40 54","description":"Number of individuals aged 40 to 54 years"},"ind_55_64":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 55 64","description":"Number of individuals aged 55 to 64 years"},"ind_65_79":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 65 79","description":"Number of individuals aged 65 to 79 years"},"ind_80p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind 80P","description":"Number of individuals aged 80 or older"},"ind_inc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ind Inc","description":"Number of individuals whose age is unknown"},"i_est_1km":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"I Est 1Km","description":"Equals 1 if the 1 km square to which the 200 m square is attached is assigned an approximate value, 0 otherwise."}},"type":"object","title":"StatisticalGrid"},"SyntheseAvis":{"properties":{"verdict":{"type":"string","maxLength":240,"title":"Verdict"},"points_forts":{"items":{"type":"string"},"type":"array","maxItems":4,"minItems":1,"title":"Points Forts"},"points_attention":{"items":{"type":"string"},"type":"array","maxItems":4,"minItems":1,"title":"Points Attention"},"lecture_activite":{"anyOf":[{"type":"string","maxLength":900},{"type":"null"}],"title":"Lecture Activite"},"a_verifier":{"items":{"type":"string"},"type":"array","maxItems":4,"minItems":1,"title":"A Verifier"},"deck":{"anyOf":[{"$ref":"#/components/schemas/SyntheseDeck"},{"type":"null"}],"description":"Textes courts de la slide de présentation (titre, atouts, vigilances). `deck` vaut `null` quand le modèle a rendu une slide hors forme ; l'avis reste servi."}},"type":"object","required":["verdict","points_forts","points_attention","a_verifier"],"title":"SyntheseAvis"},"SyntheseDeck":{"properties":{"titre":{"type":"string","maxLength":60,"title":"Titre"},"atouts":{"items":{"type":"string"},"type":"array","maxItems":3,"minItems":1,"title":"Atouts"},"vigilances":{"items":{"type":"string"},"type":"array","maxItems":3,"minItems":1,"title":"Vigilances"}},"type":"object","required":["titre","atouts","vigilances"],"title":"SyntheseDeck","description":"Les textes courts de la slide de lecture (spec 2026-10-11 § 4) : un titre\nqui qualifie sans recommander, un à trois atouts et vigilances en\n« Libellé : chiffre » (deux ou trois hors zone vide, c'est le prompt qui\nle demande). Le « : » est la seule forme exigée ; le reste est\nl'affaire du prompt."},"SyntheseFiabilite":{"properties":{"csp":{"type":"boolean","title":"Csp"},"immobilier":{"type":"boolean","title":"Immobilier"},"activites":{"type":"boolean","title":"Activites"},"defaillances":{"type":"boolean","title":"Defaillances"}},"type":"object","required":["csp","immobilier","activites","defaillances"],"title":"SyntheseFiabilite"},"UniteLegaleDetails":{"properties":{"siren":{"type":"string","title":"Siren"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"nom_raison_sociale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Raison Sociale"},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sigle"},"nature_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categorie Entreprise"},"annee_categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Categorie Entreprise"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"economie_sociale_solidaire":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Economie Sociale Solidaire"},"societe_mission":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Societe Mission"},"complements":{"anyOf":[{"$ref":"#/components/schemas/CompanyComplements"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true}},"type":"object","required":["siren"],"title":"UniteLegaleDetails","description":"Unité légale, niveau DISCOVERY : identité complète."},"UniteLegaleWithCounters":{"properties":{"siren":{"type":"string","title":"Siren"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"nom_raison_sociale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Raison Sociale"},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sigle"},"nature_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categorie Entreprise"},"annee_categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Categorie Entreprise"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"economie_sociale_solidaire":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Economie Sociale Solidaire"},"societe_mission":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Societe Mission"},"complements":{"anyOf":[{"$ref":"#/components/schemas/CompanyComplements"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"tva":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva"},"nombre_etablissements":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements"},"nombre_etablissements_ouverts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements Ouverts"}},"type":"object","required":["siren"],"title":"UniteLegaleWithCounters","description":"Niveau STARTER : + TVA intracommunautaire et compteurs d'établissements."},"UniteLegaleWithEnrichment":{"properties":{"siren":{"type":"string","title":"Siren"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"nom_raison_sociale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Raison Sociale"},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sigle"},"nature_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categorie Entreprise"},"annee_categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Categorie Entreprise"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"economie_sociale_solidaire":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Economie Sociale Solidaire"},"societe_mission":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Societe Mission"},"complements":{"anyOf":[{"$ref":"#/components/schemas/CompanyComplements"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"tva":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva"},"nombre_etablissements":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements"},"nombre_etablissements_ouverts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements Ouverts"},"dirigeants":{"items":{"$ref":"#/components/schemas/Dirigeant"},"type":"array","title":"Dirigeants"},"identite_rne":{"anyOf":[{"$ref":"#/components/schemas/IdentiteRne"},{"type":"null"}]}},"type":"object","required":["siren"],"title":"UniteLegaleWithEnrichment","description":"Niveau GROWTH : + dirigeants (RNE) et identité RNE."},"UniteLegaleWithFinancials":{"properties":{"siren":{"type":"string","title":"Siren"},"nom_complet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Complet"},"nom_raison_sociale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Raison Sociale"},"sigle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sigle"},"nature_juridique":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"activite_principale":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"section_activite_principale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Activite Principale"},"etat_administratif":{"anyOf":[{"$ref":"#/components/schemas/EtatAdministratif"},{"type":"null"}]},"date_creation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Creation"},"categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categorie Entreprise"},"annee_categorie_entreprise":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Categorie Entreprise"},"tranche_effectif_salarie":{"anyOf":[{"$ref":"#/components/schemas/CodeLibelle"},{"type":"null"}]},"annee_tranche_effectif_salarie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annee Tranche Effectif Salarie"},"caractere_employeur":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Caractere Employeur"},"economie_sociale_solidaire":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Economie Sociale Solidaire"},"societe_mission":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Societe Mission"},"complements":{"anyOf":[{"$ref":"#/components/schemas/CompanyComplements"},{"type":"null"}]},"diffusible":{"type":"boolean","title":"Diffusible","description":"Statut de diffusion **INSEE** de l'unité légale (SIRENE, art. A.123-96 du code de commerce). `false` = l'unité est *non diffusible* : l'INSEE en masque légalement le nom et l'adresse, que l'API sert donc à `null` — la commune reste visible. Ce n'est pas une donnée manquante ni une erreur : l'entreprise existe et son SIREN est valide. Concerne environ 10 % des unités légales. Porte sur l'**entreprise**, pas sur une personne, et n'exprime **aucune** opposition au démarchage — l'opposition à la prospection est portée, séparément, par `opposition_prospection` sur chaque dirigeant (RNE / INPI).","default":true},"tva":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tva"},"nombre_etablissements":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements"},"nombre_etablissements_ouverts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nombre Etablissements Ouverts"},"dirigeants":{"items":{"$ref":"#/components/schemas/Dirigeant"},"type":"array","title":"Dirigeants"},"identite_rne":{"anyOf":[{"$ref":"#/components/schemas/IdentiteRne"},{"type":"null"}]},"finances":{"items":{"$ref":"#/components/schemas/ExerciceFinancier"},"type":"array","title":"Finances"},"procedures_collectives":{"anyOf":[{"$ref":"#/components/schemas/ProceduresCollectives"},{"type":"null"}]}},"type":"object","required":["siren"],"title":"UniteLegaleWithFinancials","description":"Niveau BUSINESS : + finances et procédures collectives."},"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"},"VerifyBusinessResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Response status: success, no_results, error"},"message":{"type":"string","title":"Message","description":"Human readable message","default":""},"matches":{"items":{"$ref":"#/components/schemas/VerifyChoiceBusiness"},"type":"array","title":"Matches","description":"List of verified address matches","default":[]}},"type":"object","required":["status"],"title":"VerifyBusinessResponse"},"VerifyChoiceBusiness":{"properties":{"score":{"type":"number","title":"Score","description":"Score global de déduplication (0.0 - 1.0)"},"verdict":{"type":"string","title":"Verdict","description":"Verdict de vérification: match_exact ou match_probable"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"},"statistical_grid":{"anyOf":[{"$ref":"#/components/schemas/StatisticalGrid"},{"type":"null"}],"description":"Statistical grid data of the address"}},"type":"object","required":["score","verdict"],"title":"VerifyChoiceBusiness","description":"Résultat de vérification plan BUSINESS"},"VerifyChoiceDiscovery":{"properties":{"score":{"type":"number","title":"Score","description":"Score global de déduplication (0.0 - 1.0)"},"verdict":{"type":"string","title":"Verdict","description":"Verdict de vérification: match_exact ou match_probable"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"}},"type":"object","required":["score","verdict"],"title":"VerifyChoiceDiscovery","description":"Résultat de vérification plan DISCOVERY"},"VerifyChoiceGrowth":{"properties":{"score":{"type":"number","title":"Score","description":"Score global de déduplication (0.0 - 1.0)"},"verdict":{"type":"string","title":"Verdict","description":"Verdict de vérification: match_exact ou match_probable"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"},"geocoding":{"anyOf":[{"$ref":"#/components/schemas/Geocoding"},{"type":"null"}],"description":"Geocoding data of the address"}},"type":"object","required":["score","verdict"],"title":"VerifyChoiceGrowth","description":"Résultat de vérification plan GROWTH"},"VerifyChoiceMinimal":{"properties":{"score":{"type":"number","title":"Score","description":"Score global de déduplication (0.0 - 1.0)"},"verdict":{"type":"string","title":"Verdict","description":"Verdict de vérification: match_exact ou match_probable"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"}},"type":"object","required":["score","verdict"],"title":"VerifyChoiceMinimal","description":"Résultat de vérification minimal"},"VerifyChoiceStarter":{"properties":{"score":{"type":"number","title":"Score","description":"Score global de déduplication (0.0 - 1.0)"},"verdict":{"type":"string","title":"Verdict","description":"Verdict de vérification: match_exact ou match_probable"},"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Full address string"},"ligne_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Voie","description":"Ligne de restitution postale n°1 : `numero` + `rep` + `nom_voie`, séparés par un espace simple. `null` si les trois sont vides.","examples":["215 B Chemin des Acacias"]},"ligne_complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Complement","description":"Ligne de restitution postale n°2 : `nom_ld` (lieu-dit). `null` si vide — ce qui est le cas le plus fréquent, la BAN plaçant souvent le lieu-dit dans `nom_voie`.","examples":["Les Grandes Terres"]},"ligne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligne Commune","description":"Ligne de restitution postale n°3 : `code_postal` + `nom_commune`, séparés par un espace simple. `null` si les deux sont vides.","examples":["01600 Sainte-Euphémie"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id","description":"Unique identifier for the address"},"numero":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Numero","description":"Street number"},"rep":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rep","description":"Address repetition/suffix"},"nom_voie":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Voie","description":"Street name"},"code_postal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Code Postal","description":"Postal code"},"nom_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Commune","description":"Municipality name"},"code_insee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee","description":"INSEE code of the municipality"},"id_fantoir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Fantoir","description":"FANTOIR identifier of the street"},"code_insee_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Insee Ancienne Commune","description":"INSEE code of the former municipality"},"nom_ancienne_commune":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ancienne Commune","description":"Name of the former municipality"},"nom_ld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Ld","description":"Name of the locality"},"libelle_acheminement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle Acheminement","description":"Routing label"},"nom_afnor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom Afnor","description":"AFNOR street name"},"source_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Position","description":"Source of the address position"},"certification_commune":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Certification Commune","description":"Municipality certification status"},"cad_parcelles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cad Parcelles","description":"List of cadastral parcel identifiers"},"id_ban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Ban","description":"Unique identifier in the BAN database"},"position":{"anyOf":[{"$ref":"#/components/schemas/Geolocalisation"},{"type":"null"}],"description":"Geolocation data of the address"}},"type":"object","required":["score","verdict"],"title":"VerifyChoiceStarter","description":"Résultat de vérification plan STARTER"},"VerifyDiscoveryResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Response status: success, no_results, error"},"message":{"type":"string","title":"Message","description":"Human readable message","default":""},"matches":{"items":{"$ref":"#/components/schemas/VerifyChoiceDiscovery"},"type":"array","title":"Matches","description":"List of verified address matches","default":[]}},"type":"object","required":["status"],"title":"VerifyDiscoveryResponse"},"VerifyGrowthResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Response status: success, no_results, error"},"message":{"type":"string","title":"Message","description":"Human readable message","default":""},"matches":{"items":{"$ref":"#/components/schemas/VerifyChoiceGrowth"},"type":"array","title":"Matches","description":"List of verified address matches","default":[]}},"type":"object","required":["status"],"title":"VerifyGrowthResponse"},"VerifyMinimalResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Response status: success, no_results, error"},"message":{"type":"string","title":"Message","description":"Human readable message","default":""},"matches":{"items":{"$ref":"#/components/schemas/VerifyChoiceMinimal"},"type":"array","title":"Matches","description":"List of verified address matches","default":[]}},"type":"object","required":["status"],"title":"VerifyMinimalResponse"},"VerifyStarterResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Response status: success, no_results, error"},"message":{"type":"string","title":"Message","description":"Human readable message","default":""},"matches":{"items":{"$ref":"#/components/schemas/VerifyChoiceStarter"},"type":"array","title":"Matches","description":"List of verified address matches","default":[]}},"type":"object","required":["status"],"title":"VerifyStarterResponse"},"Version":{"properties":{"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform","description":"Version de la plateforme TrustyData — celle citée publiquement. Elle désigne la composition déployée (l'ensemble des services), et change dès qu'une livraison modifie le comportement observable de l'API, quel que soit le composant d'origine. Les autres champs sont les versions techniques de chaque brique, utiles au diagnostic."},"autocomplete":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Autocomplete","description":"Autocomplete API version"},"parser":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parser","description":"Parser API version"},"search_engine":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Engine","description":"Data search engine version"},"auth_service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Service","description":"Authentication service version"},"company_service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Service","description":"Company search service (base-b2b) version"},"locations_service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locations Service","description":"Locations service (trusty-locations) version"},"insee_service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insee Service","description":"INSEE zone statistics service (trusty-insee) version"},"circulation_pointe":{"type":"boolean","title":"Circulation Pointe","description":"Vrai si `circulation=pointe` est ouvert sur les isochrones (`TRUSTY_VALHALLA_POINTE`) — c'est-à-dire si les tuiles Valhalla portent le référentiel de vitesses de pointe.","default":false}},"type":"object","title":"Version","description":"Model for version information of all service components","examples":[{"auth_service":"v2.1.0","autocomplete":"v0.1.0-alpha","circulation_pointe":false,"company_service":"1.0.0","insee_service":"0.1.0","locations_service":"1.0.0","parser":"v1.2.3","search_engine":"1.4.2"}]},"ZoneActiviteFamille":{"properties":{"cle":{"type":"string","title":"Cle","description":"Identifiant stable du poste — c'est lui qu'on stocke, pas le libellé."},"libelle":{"type":"string","title":"Libelle","description":"Nom public du poste."},"etablissements":{"type":"integer","title":"Etablissements","description":"Établissements actifs et géolocalisés du poste dans la zone. Un **plancher** : voir `fiabilite.taux_localisation`."},"part":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part","description":"Pourcentage de `total`, au dixième, calculé avant arrondi. `null` sur une zone sans établissement."},"densite":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Densite","description":"Établissements pour 10 000 habitants de la zone, au dixième. `null` si la zone n'a pas d'habitant."},"reference_densite":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Densite","description":"La même densité sur le territoire de référence. `null` sans référence."},"indice":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indice","description":"100 × `densite` / `reference_densite`, à l'entier. 100 = la référence. `null` sous `fiabilite.etablissements_min` établissements, ou sans référence."},"sous_familles":{"items":{"$ref":"#/components/schemas/ZoneActivitePoste"},"type":"array","title":"Sous Familles","description":"Sous-familles du poste. **Celles à zéro sont omises** ; les 14 familles, elles, sont toujours présentes."}},"type":"object","required":["cle","libelle","etablissements","sous_familles"],"title":"ZoneActiviteFamille"},"ZoneActiviteFiabilite":{"properties":{"taux_localisation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taux Localisation","description":"Pourcentage des établissements actifs du territoire de référence qui portent des coordonnées — donc la part que ce comptage peut voir. Au national 81,4 %, mais il varie fortement : c'est pourquoi il est servi sur le département et non en constante."},"etablissements_min":{"type":"integer","title":"Etablissements Min","description":"Nombre d'établissements dans un poste sous lequel `indice` n'est pas servi."},"indices_fiables":{"type":"boolean","title":"Indices Fiables","description":"Vrai quand la population de la zone atteint 1 000 habitants. En dessous, le dénominateur des densités est trop petit ; elles sont rendues quand même."}},"type":"object","required":["etablissements_min","indices_fiables"],"title":"ZoneActiviteFiabilite"},"ZoneActivitePoste":{"properties":{"cle":{"type":"string","title":"Cle","description":"Identifiant stable du poste — c'est lui qu'on stocke, pas le libellé."},"libelle":{"type":"string","title":"Libelle","description":"Nom public du poste."},"etablissements":{"type":"integer","title":"Etablissements","description":"Établissements actifs et géolocalisés du poste dans la zone. Un **plancher** : voir `fiabilite.taux_localisation`."},"part":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part","description":"Pourcentage de `total`, au dixième, calculé avant arrondi. `null` sur une zone sans établissement."},"densite":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Densite","description":"Établissements pour 10 000 habitants de la zone, au dixième. `null` si la zone n'a pas d'habitant."},"reference_densite":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Densite","description":"La même densité sur le territoire de référence. `null` sans référence."},"indice":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indice","description":"100 × `densite` / `reference_densite`, à l'entier. 100 = la référence. `null` sous `fiabilite.etablissements_min` établissements, ou sans référence."}},"type":"object","required":["cle","libelle","etablissements"],"title":"ZoneActivitePoste"},"ZoneActiviteReference":{"properties":{"niveau":{"type":"string","enum":["france","departement"],"title":"Niveau"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Code du département de référence — celui qui porte le plus d'établissements comptés. `null` en `france`, ou sur une zone vide."},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Nom du département."}},"type":"object","required":["niveau"],"title":"ZoneActiviteReference"},"ZoneActivites":{"properties":{"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"total":{"type":"integer","title":"Total","description":"Établissements comptés dans la zone, tous postes confondus."},"reference":{"anyOf":[{"$ref":"#/components/schemas/ZoneActiviteReference"},{"type":"null"}]},"fiabilite":{"$ref":"#/components/schemas/ZoneActiviteFiabilite"},"familles":{"items":{"$ref":"#/components/schemas/ZoneActiviteFamille"},"type":"array","title":"Familles"}},"additionalProperties":false,"type":"object","required":["total","fiabilite","familles"],"title":"ZoneActivites","description":"Établissements de la zone par activité — SIRENE (INSEE), actifs\ngéolocalisés seulement. Un **plancher**, jamais un total : voir\n`fiabilite.taux_localisation`. Hypothèses et limites : guide « Zone de\nchalandise », section Activités."},"ZoneAges":{"properties":{"0_3":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"0 à 3 ans."},"4_5":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"4 à 5 ans."},"6_10":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"6 à 10 ans."},"11_17":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"11 à 17 ans."},"18_24":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"18 à 24 ans."},"25_39":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"25 à 39 ans."},"40_54":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"40 à 54 ans."},"55_64":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"55 à 64 ans."},"65_79":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"65 à 79 ans."},"80_plus":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"80 ans et plus."},"inconnu":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Âge inconnu — rendu, pas replié dans une tranche."}},"type":"object","required":["0_3","4_5","6_10","11_17","18_24","25_39","40_54","55_64","65_79","80_plus","inconnu"],"title":"ZoneAges","description":"Individus par tranche d'âge (bornes INSEE, âges révolus). Les clés\ncommencent par un chiffre — pas des identifiants Python, d'où les alias ;\nseul endroit du dépôt qui en a besoin. La somme des onze `effectif`\nretombe sur `population` à l'arrondi près."},"ZoneCarreaux":{"properties":{"total":{"type":"integer","title":"Total","description":"Nombre de carreaux Filosofi 200 m intersectés par la zone. Un carreau sans population n'existe pas dans le fichier et n'est pas compté."},"estimes":{"type":"integer","title":"Estimes","description":"Parmi eux, ceux que l'INSEE a imputés pour le secret statistique (drapeau `i_est_200`). C'est la norme, pas un défaut : ~79 % des carreaux métropolitains."}},"type":"object","required":["total","estimes"],"title":"ZoneCarreaux"},"ZoneChevauchement":{"properties":{"zones":{"items":{"type":"string"},"type":"array","maxItems":2,"minItems":2,"title":"Zones","description":"Les deux identifiants, dans l'ordre de la requête."},"population":{"type":"integer","title":"Population","description":"Habitants couverts par les deux zones à la fois."},"menages":{"type":"integer","title":"Menages","description":"Ménages, même règle."},"potentiel_depense":{"$ref":"#/components/schemas/ZoneRegionPotentiel"}},"type":"object","required":["zones","population","menages","potentiel_depense"],"title":"ZoneChevauchement","description":"Une paire de zones qui se recouvrent, et ce qu'elles comptent deux fois."},"ZoneCompareRequest":{"properties":{"zones":{"items":{"$ref":"#/components/schemas/ZoneCompareZone"},"type":"array","maxItems":10,"minItems":2,"title":"Zones","description":"Les zones à comparer, 2 à 10, chacune avec sa propre portée (isochrone, rayon ou polygone) et son `id` optionnel. L'ordre est conservé dans la réponse."},"reference":{"type":"string","enum":["france","departement"],"title":"Reference","description":"Référentiel de l'indice d'affinité du bloc `csp` de chaque zone (le département dominant est celui de chaque zone).","default":"france"},"coefficient":{"anyOf":[{"type":"number","maximum":1.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Coefficient","description":"Part du revenu disponible que votre secteur capte, appliquée à toutes les zones, à leurs exclusifs et aux chevauchements. Requis par les critères `potentiel_*`.","examples":[0.048]},"rendre_polygone":{"type":"boolean","title":"Rendre Polygone","description":"Renvoie le contour évalué de chaque zone dans `zones[].portee.polygone` (10–20 Ko par isochrone). Ni les exclusifs ni les intersections ne sont rendus.","default":false},"critere":{"type":"string","enum":["population","population_exclusive","potentiel_theorique","potentiel_exclusif"],"title":"Critere","description":"Indicateur du `classement`, décroissant : `population` (défaut), `population_exclusive` (hors de tout chevauchement), `potentiel_theorique`, `potentiel_exclusif` — ces deux derniers exigent `coefficient`.","default":"population"}},"type":"object","required":["zones"],"title":"ZoneCompareRequest","description":"De 2 à 10 zones, chacune décrite comme sur `/zone/stats` ; `reference`,\n`coefficient` et `rendre_polygone` valent pour toutes — un potentiel ne se\ncompare qu'à coefficient égal.","examples":[{"coefficient":0.048,"critere":"potentiel_exclusif","reference":"departement","zones":[{"adresse":"Place Charles Béraudier 69003 Lyon","duree":10,"id":"part-dieu","mode":"auto"},{"duree":10,"id":"bellecour","lat":45.7578,"lon":4.832,"mode":"auto"},{"adresse":"Gratte-Ciel, Villeurbanne","id":"villeurbanne","rayon":3}]},{"zones":[{"lat":48.853,"lon":2.3499,"rayon":2},{"lat":48.86,"lon":2.36,"rayon":2}]}]},"ZoneCompareResponse":{"properties":{"zones":{"items":{"$ref":"#/components/schemas/ZoneCompareZoneResponse"},"type":"array","title":"Zones"},"chevauchements":{"items":{"$ref":"#/components/schemas/ZoneChevauchement"},"type":"array","title":"Chevauchements","description":"Une entrée par paire dont l'intersection touche au moins un carreau, dans l'ordre des positions. Une paire disjointe n'apparaît pas."},"classement":{"items":{"type":"string"},"type":"array","title":"Classement","description":"Tous les identifiants, triés sur `critere` décroissant ; ex æquo dans l'ordre envoyé ; une zone vide en dernier."},"critere":{"type":"string","enum":["population","population_exclusive","potentiel_theorique","potentiel_exclusif"],"title":"Critere"},"source":{"anyOf":[{"$ref":"#/components/schemas/ZoneSource"},{"type":"null"}],"description":"Millésimes des couches chargées — les mêmes pour toutes les zones. `null` si aucune zone n'a été lue."},"attribution":{"type":"string","title":"Attribution","description":"Mention à reproduire avec tout chiffre affiché ; OpenStreetMap s'y ajoute dès qu'une zone est une isochrone."}},"type":"object","required":["zones","chevauchements","classement","critere","attribution"],"title":"ZoneCompareResponse","description":"N zones dans l'ordre envoyé, leurs chevauchements deux à deux, un classement.","examples":[{"attribution":"Source : INSEE, Filosofi 2021 (carreaux 200 m) et Recensement de la population 2022 (IRIS) ; IGN, Contours IRIS 2026. Prix immobiliers : DGFiP, Demandes de valeurs foncières (retraitement Etalab, licence ouverte). Activités : SIRENE (INSEE), établissements actifs géolocalisés. Itinéraires : Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","chevauchements":[{"menages":96400,"population":187300,"potentiel_depense":{"coefficient":0.048,"potentiel_theorique":178176000,"revenu_disponible_estime":3712000000},"zones":["part-dieu","bellecour"]}],"classement":["part-dieu"],"critere":"potentiel_exclusif","source":{"contours_iris_millesime":2026,"filosofi_millesime":2021,"recensement_millesime":2022},"zones":[{"activites":{"familles":[{"cle":"commerce_detail_alimentaire","densite":68.0,"etablissements":2802,"indice":186,"libelle":"Commerce de détail alimentaire","part":1.4,"reference_densite":36.6,"sous_familles":[{"cle":"boulangerie_patisserie","densite":16.9,"etablissements":697,"indice":185,"libelle":"Boulangerie, pâtisserie","part":0.3,"reference_densite":9.1}]},{"cle":"commerce_detail_non_alimentaire","densite":268.0,"etablissements":11051,"indice":183,"libelle":"Commerce de détail non alimentaire","part":5.5,"reference_densite":146.8,"sous_familles":[{"cle":"vente_a_distance_et_hors_magasin","densite":116.4,"etablissements":4801,"indice":185,"libelle":"Vente à distance et hors magasin","part":2.4,"reference_densite":62.9}]},{"cle":"cafes_hotels_restaurants","densite":196.6,"etablissements":8106,"indice":238,"libelle":"Cafés, hôtels, restaurants","part":4.1,"reference_densite":82.7,"sous_familles":[{"cle":"restauration_traditionnelle","densite":60.1,"etablissements":2480,"indice":263,"libelle":"Restauration traditionnelle","part":1.2,"reference_densite":22.8}]},{"cle":"services_particuliers","densite":286.2,"etablissements":11801,"indice":173,"libelle":"Services aux particuliers","part":5.9,"reference_densite":165.7,"sous_familles":[{"cle":"autres_services_personnels","densite":54.8,"etablissements":2258,"indice":203,"libelle":"Autres services personnels","part":1.1,"reference_densite":27.0}]},{"cle":"sante_action_sociale","densite":290.2,"etablissements":11965,"indice":212,"libelle":"Santé et action sociale","part":6.0,"reference_densite":136.8,"sous_familles":[{"cle":"reeducation_appareillage","densite":56.5,"etablissements":2330,"indice":203,"libelle":"Rééducation, appareillage et pédicures-podologues","part":1.2,"reference_densite":27.8}]},{"cle":"services_entreprises","densite":1208.9,"etablissements":49850,"indice":239,"libelle":"Services aux entreprises","part":25.0,"reference_densite":506.7,"sous_familles":[{"cle":"nettoyage_et_proprete","densite":197.8,"etablissements":8158,"indice":249,"libelle":"Nettoyage, propreté","part":4.1,"reference_densite":79.6}]},{"cle":"banque_assurance_immobilier","densite":1419.3,"etablissements":58524,"indice":211,"libelle":"Banque, assurance, immobilier","part":29.3,"reference_densite":673.4,"sous_familles":[{"cle":"societes_civiles_immobilieres","densite":1164.2,"etablissements":48007,"indice":212,"libelle":"Sociétés civiles immobilières et location de biens","part":24.1,"reference_densite":548.7}]},{"cle":"construction_batiment","densite":203.3,"etablissements":8383,"indice":132,"libelle":"Construction et artisanat du bâtiment","part":4.2,"reference_densite":153.5,"sous_familles":[{"cle":"promotion_immobiliere","densite":49.0,"etablissements":2021,"indice":249,"libelle":"Promotion immobilière","part":1.0,"reference_densite":19.7}]},{"cle":"commerce_gros","densite":97.0,"etablissements":3998,"indice":154,"libelle":"Commerce de gros et négoce","part":2.0,"reference_densite":62.9,"sous_familles":[{"cle":"intermediaire_du_commerce","densite":27.5,"etablissements":1132,"indice":175,"libelle":"Intermédiaire du commerce, centrale d'achat","part":0.6,"reference_densite":15.7}]},{"cle":"transport_logistique","densite":182.2,"etablissements":7515,"indice":183,"libelle":"Transport et logistique","part":3.8,"reference_densite":99.4,"sous_familles":[{"cle":"poste_et_courrier","densite":114.1,"etablissements":4704,"indice":229,"libelle":"Poste et courrier","part":2.4,"reference_densite":49.7}]},{"cle":"industrie_production","densite":93.1,"etablissements":3841,"indice":124,"libelle":"Industrie et production","part":1.9,"reference_densite":75.4,"sous_familles":[{"cle":"energie","densite":20.6,"etablissements":848,"indice":124,"libelle":"Production et distribution d'énergie","part":0.4,"reference_densite":16.6}]},{"cle":"agriculture","densite":7.1,"etablissements":291,"indice":14,"libelle":"Agriculture, sylviculture, pêche","part":0.1,"reference_densite":48.8,"sous_familles":[{"cle":"sylviculture_et_exploitation_forestiere","densite":2.2,"etablissements":92,"indice":41,"libelle":"Sylviculture, exploitation forestière","part":0.0,"reference_densite":5.5}]},{"cle":"administration_enseignement","densite":517.6,"etablissements":21344,"indice":239,"libelle":"Administration, enseignement, associations","part":10.7,"reference_densite":216.6,"sous_familles":[{"cle":"association_et_organisation","densite":218.0,"etablissements":8989,"indice":222,"libelle":"Associations et organisations","part":4.5,"reference_densite":98.2}]},{"cle":"autres","densite":0.9,"etablissements":38,"indice":430,"libelle":"Autres activités","part":0.0,"reference_densite":0.2,"sous_familles":[{"cle":"organismes_extraterritoriaux","densite":0.9,"etablissements":38,"indice":430,"libelle":"Organismes extraterritoriaux","part":0.0,"reference_densite":0.2}]}],"fiabilite":{"etablissements_min":5,"indices_fiables":true,"taux_localisation":82.2},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"SIRENE (INSEE), établissements actifs géolocalisés","total":199509},"ages":{"0_3":{"effectif":15230,"part":3.7},"11_17":{"effectif":30120,"part":7.3},"18_24":{"effectif":41870,"part":10.2},"25_39":{"effectif":96300,"part":23.4},"40_54":{"effectif":79850,"part":19.4},"4_5":{"effectif":8110,"part":2.0},"55_64":{"effectif":46210,"part":11.2},"65_79":{"effectif":52360,"part":12.7},"6_10":{"effectif":21040,"part":5.1},"80_plus":{"effectif":20900,"part":5.1},"inconnu":{"effectif":360,"part":0.1}},"attribution":"Source : INSEE, Filosofi 2021 (carreaux 200 m) et Recensement de la population 2022 (IRIS) ; IGN, Contours IRIS 2026. Prix immobiliers : DGFiP, Demandes de valeurs foncières (retraitement Etalab, licence ouverte). Activités : SIRENE (INSEE), établissements actifs géolocalisés. Défaillances : BODACC (DILA) et SIRENE (INSEE). Itinéraires : Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","carreaux":{"estimes":312,"total":2107},"csp":{"agriculteurs":{"effectif":210,"part":0.1,"reference_part":0.4},"artisans_commercants":{"effectif":9840,"indice":72,"part":2.8,"reference_part":3.9},"autres_inactifs":{"effectif":37490,"indice":98,"part":10.7,"reference_part":11.0},"cadres":{"effectif":84211,"indice":147,"part":24.1,"reference_part":16.4},"employes":{"effectif":52050,"indice":97,"part":14.9,"reference_part":15.4},"fiabilite":{"indices_fiables":true,"part_iris_communaux":0.0,"part_min":0.5,"population_15_plus":349012},"ouvriers":{"effectif":26980,"indice":58,"part":7.7,"reference_part":13.3},"professions_intermediaires":{"effectif":58120,"indice":111,"part":16.7,"reference_part":14.9},"reference":{"code":"69","libelle":"Rhône","type":"departement"},"retraites":{"effectif":80111,"indice":93,"part":23.0,"reference_part":24.6}},"defaillances":{"annee_en_cours":{"annee":2026,"bodacc_jusqu_au":"2026-09-18","partielle":true,"sirene_jusqu_au":"2026-09-19"},"annees":[2017,2018,2019,2020,2021,2022,2023,2024,2025,2026],"arrets":[31000,30500,31200,34800,36400,32300,45200,66500,64100,23200],"defaillances":[2364,2270,2720,2311,1961,2786,4259,4986,5357,3381],"familles":[{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"commerce_detail_alimentaire","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Commerce de détail alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":129,"reference_taux":2.7,"taux_defaillance":3.5}},"sous_familles":[{"arrets":[248,244,250,278,291,258,362,532,513,186],"cle":"boulangerie_patisserie","defaillances":[19,18,22,18,16,22,34,40,43,27],"libelle":"Boulangerie, pâtisserie","periodes":{"evolution_arrets_pct":70.1,"evolution_defaillances_pct":108.9,"precedente":{"a":2022,"arrets":827,"de":2020,"defaillances":56},"recente":{"a":2025,"arrets":1407,"de":2023,"defaillances":117,"indice":151,"reference_taux":3.7,"taux_defaillance":5.6}}}]},{"arrets":[2170,2135,2184,2436,2548,2261,3164,4655,4487,1624],"cle":"commerce_detail_non_alimentaire","defaillances":[165,159,191,162,137,195,298,349,375,237],"libelle":"Commerce de détail non alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":7245,"de":2020,"defaillances":494},"recente":{"a":2025,"arrets":12306,"de":2023,"defaillances":1022,"indice":89,"reference_taux":3.5,"taux_defaillance":3.1}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"cafes_hotels_restaurants","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Cafés, hôtels, restaurants","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":191,"reference_taux":4.7,"taux_defaillance":9.0}},"sous_familles":[]},{"arrets":[1860,1830,1872,2088,2184,1938,2712,3990,3846,1392],"cle":"services_particuliers","defaillances":[142,136,163,138,118,167,255,299,322,203],"libelle":"Services aux particuliers","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":6210,"de":2020,"defaillances":423},"recente":{"a":2025,"arrets":10548,"de":2023,"defaillances":876,"indice":88,"reference_taux":2.8,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"sante_action_sociale","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Santé et action sociale","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":54,"reference_taux":1.5,"taux_defaillance":0.8}},"sous_familles":[]},{"arrets":[6820,6710,6864,7656,8008,7106,9944,14630,14102,5104],"cle":"services_entreprises","defaillances":[520,499,599,508,431,613,937,1097,1179,744],"libelle":"Services aux entreprises","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":22770,"de":2020,"defaillances":1552},"recente":{"a":2025,"arrets":38676,"de":2023,"defaillances":3213,"indice":57,"reference_taux":3.7,"taux_defaillance":2.1}},"sous_familles":[]},{"arrets":[3720,3660,3744,4176,4368,3876,5424,7980,7692,2784],"cle":"banque_assurance_immobilier","defaillances":[284,272,326,277,235,335,512,598,643,405],"libelle":"Banque, assurance, immobilier","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":12420,"de":2020,"defaillances":847},"recente":{"a":2025,"arrets":21096,"de":2023,"defaillances":1753,"indice":46,"reference_taux":2.2,"taux_defaillance":1.0}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"construction_batiment","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Construction et artisanat du bâtiment","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":178,"reference_taux":4.9,"taux_defaillance":8.7}},"sous_familles":[]},{"arrets":[1240,1220,1248,1392,1456,1292,1808,2660,2564,928],"cle":"commerce_gros","defaillances":[94,90,109,92,78,111,171,199,214,135],"libelle":"Commerce de gros et négoce","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.8,"precedente":{"a":2022,"arrets":4140,"de":2020,"defaillances":281},"recente":{"a":2025,"arrets":7032,"de":2023,"defaillances":584,"indice":152,"reference_taux":3.2,"taux_defaillance":4.9}},"sous_familles":[]},{"arrets":[1550,1525,1560,1740,1820,1615,2260,3325,3205,1160],"cle":"transport_logistique","defaillances":[119,114,136,116,98,140,213,250,268,169],"libelle":"Transport et logistique","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.5,"precedente":{"a":2022,"arrets":5175,"de":2020,"defaillances":354},"recente":{"a":2025,"arrets":8790,"de":2023,"defaillances":731,"indice":79,"reference_taux":4.1,"taux_defaillance":3.2}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"industrie_production","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Industrie et production","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":95,"reference_taux":2.7,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[62,61,62,70,73,65,90,133,128,46],"cle":"agriculture","defaillances":[4,4,5,5,4,5,8,10,11,7],"libelle":"Agriculture, sylviculture, pêche","periodes":{"evolution_arrets_pct":68.8,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":208,"de":2020,"defaillances":14},"recente":{"a":2025,"arrets":351,"de":2023,"defaillances":29,"reference_taux":0.0,"taux_defaillance":3.3}},"sous_familles":[]},{"arrets":[930,915,936,1044,1092,969,1356,1995,1923,696],"cle":"administration_enseignement","defaillances":[71,68,82,69,59,84,128,150,161,102],"libelle":"Administration, enseignement, associations","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":3105,"de":2020,"defaillances":212},"recente":{"a":2025,"arrets":5274,"de":2023,"defaillances":439,"indice":57,"reference_taux":1.2,"taux_defaillance":0.7}},"sous_familles":[]},{"arrets":[16,15,16,17,18,16,23,33,32,12],"cle":"autres","defaillances":[1,1,1,1,1,1,3,3,3,1],"libelle":"Autres activités","periodes":{"evolution_arrets_pct":72.5,"evolution_defaillances_pct":200.0,"precedente":{"a":2022,"arrets":51,"de":2020,"defaillances":3},"recente":{"a":2025,"arrets":88,"de":2023,"defaillances":9,"reference_taux":0.0,"taux_defaillance":7.9}},"sous_familles":[]}],"fiabilite":{"actifs_min":20,"arrets_recents_sous_comptes":true,"defaillances_min":5,"departements_sous_declares":["67"],"procedures_sous_declarees":false,"taux_localisation":82.5},"periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":103500,"de":2020,"defaillances":7058},"recente":{"a":2025,"arrets":175800,"de":2023,"defaillances":14602,"indice":79,"reference_taux":3.1,"taux_defaillance":2.4}},"procedures":{"autres":[3,4,5,2,0,26,38,34,36,2],"liquidation":[1732,1734,2153,1775,1601,2155,3038,3833,4098,2586],"redressement":[632,536,567,536,360,631,1221,1153,1259,795],"sauvegarde":[85,61,76,131,97,125,253,229,209,106]},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"BODACC (DILA) et SIRENE (INSEE), établissements géolocalisés"},"exclusif":{"menages":49780,"part_population":23.8,"population":98120,"potentiel_depense":{"coefficient":0.048,"potentiel_theorique":93744000,"revenu_disponible_estime":1953000000}},"id":"part-dieu","immobilier":{"appartements":{"annees":[{"annee":2021,"prix_m2_median":3402,"reference_prix_m2_median":3200,"ventes":84},{"annee":2022,"reference_prix_m2_median":3300,"ventes":12},{"annee":2023,"prix_m2_median":3750,"reference_prix_m2_median":3350,"ventes":91}],"evolution_pct":10.2,"fiabilite":{"annees_fiables":[2021,2023],"ventes_min":20},"indice":112},"couverture":{"a":"2023-12-30","de":"2021-01-04"},"hors_couverture":false,"locaux_activite":{"annees":[{"annee":2021,"reference_prix_m2_median":2050,"ventes":14},{"annee":2022,"prix_m2_median":2310,"reference_prix_m2_median":2140,"ventes":23},{"annee":2023,"reference_prix_m2_median":2200,"ventes":9}],"fiabilite":{"annees_fiables":[2022],"ventes_min":20},"indice":108},"maisons":{"annees":[{"annee":2021,"reference_prix_m2_median":2740,"ventes":8},{"annee":2022,"reference_prix_m2_median":2980,"ventes":3},{"annee":2023,"reference_prix_m2_median":3010,"ventes":0}],"fiabilite":{"annees_fiables":[],"ventes_min":20}},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"DVF géolocalisé (DGFiP / Etalab), diffusion 2026"},"iris_couverts":187,"logements":{"apres_1990":{"effectif":35800,"part":18.0},"avant_1945":{"effectif":84200,"part":42.4},"de_1945_a_1970":{"effectif":41100,"part":20.7},"de_1970_a_1990":{"effectif":33900,"part":17.1},"periode_inconnue":{"effectif":3420,"part":1.7},"sociaux":{"effectif":39700,"part":20.0},"total":198420},"menages":198420,"menages_pauvres":31210,"menages_profil":{"cinq_personnes_et_plus":{"effectif":9120,"part":4.6},"en_collectif":{"effectif":176400,"part":88.9},"en_maison":{"effectif":22020,"part":11.1},"monoparentaux":{"effectif":17880,"part":9.0},"personnes_seules":{"effectif":92140,"part":46.4},"proprietaires":{"effectif":71300,"part":35.9},"surface_moyenne_m2":63.8},"niveau_de_vie_moyen":24870,"point_central":{"adresse_resolue":"12 Rue de la République 69002 Lyon","id":"69383_2745_00012","lat":45.75776,"lon":4.83201,"precision":"adresse"},"population":412350,"portee":{"circulation":"fluide","duree_min":15,"mode":"auto","type":"isochrone"},"potentiel_depense":{"coefficient":0.15,"potentiel_theorique":1096495836,"revenu_disponible_estime":7309972240,"revenu_disponible_par_menage":36841,"unites_consommation":293928},"sexe":{"femmes":{"effectif":212770,"part":51.4},"hommes":{"effectif":201230,"part":48.6},"population_recensement":414000},"source":{"contours_iris_millesime":2026,"filosofi_millesime":2021,"recensement_millesime":2022},"surface_km2":84.3}]}]},"ZoneCompareZone":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Adresse libre du centre, résolue par le moteur d'adresses ; un nom de commune ou un code postal seul est accepté (le centre est alors celui de la commune). Alternative à `lat`/`lon`.","examples":["12 rue de la République 69002 Lyon"]},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat","description":"Latitude WGS84 du centre. Avec `lon`, et sans `adresse`.","examples":[45.7578]},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon","description":"Longitude WGS84 du centre. Avec `lat`, et sans `adresse`.","examples":[4.832]},"duree":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Duree","description":"Portée **isochrone** : durée de trajet en minutes (1–30) depuis le centre. Exclusif de `rayon` et `polygone`.","examples":[15]},"mode":{"anyOf":[{"type":"string","enum":["auto","pieton","velo"]},{"type":"null"}],"title":"Mode","description":"Mode de déplacement de l'isochrone. Défaut `auto`. N'a de sens qu'avec `duree`.","examples":["auto"]},"circulation":{"anyOf":[{"type":"string","enum":["fluide","pointe"]},{"type":"null"}],"title":"Circulation","description":"Conditions de circulation de l'isochrone. `fluide` (défaut) : circulation libre, vitesse de base du réseau. `pointe` : heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité, pas de trafic temps réel. N'a de sens qu'avec `duree`, et `pointe` seulement en `mode` `auto`.","examples":["pointe"]},"rayon":{"anyOf":[{"type":"number","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Rayon","description":"Portée **rayon** : disque à vol d'oiseau autour du centre, en kilomètres (1–50). Exclusif de `duree` et `polygone`.","examples":[5]},"polygone":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Polygone","description":"Portée **polygone** : contour GeoJSON `Polygon` ou `MultiPolygon` en WGS84 (≤ 1 Mo, ≤ 50 000 sommets), pris tel quel — par exemple le contour rendu par `GET /locations/search?polygone=true`. Exclusif de tout centre, `duree`, `rayon`."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Identifiant de la zone, repris dans `zones[].id`, `chevauchements[].zones`, `classement` et les erreurs. 1 à 40 caractères `[A-Za-z0-9_-]`, unique dans la requête. Sans `id`, la position à partir de 1 (`\"1\"`, `\"2\"`…).","examples":["part-dieu"]}},"type":"object","title":"ZoneCompareZone","description":"Une zone de `POST /zone/compare` : la portée de `/zone/stats`, plus un\nidentifiant optionnel que la réponse et les erreurs reprennent."},"ZoneCompareZoneResponse":{"properties":{"point_central":{"anyOf":[{"$ref":"#/components/schemas/ProximityCenter"},{"type":"null"}],"description":"Centre effectivement utilisé (mêmes règles que `/address/proximity`, `precision` compris). `null` en portée `polygone`, où il n'y a pas de centre."},"portee":{"$ref":"#/components/schemas/ZonePortee"},"surface_km2":{"type":"number","title":"Surface Km2","description":"Surface de la zone effectivement évaluée, en km², arrondie au dixième."},"population":{"type":"integer","title":"Population","description":"Individus, somme des carreaux pondérée par la part de surface de chaque carreau dans la zone, arrondie à l'entier."},"menages":{"type":"integer","title":"Menages","description":"Ménages, même pondération."},"menages_pauvres":{"type":"integer","title":"Menages Pauvres","description":"Ménages sous le seuil de pauvreté, même pondération."},"niveau_de_vie_moyen":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Niveau De Vie Moyen","description":"Niveau de vie **moyen** par personne, en euros par an : somme des niveaux de vie winsorisés divisée par la population, mêmes pondérations — la seule grandeur de revenu que le carroyage permet de sommer. `null` si la population est nulle."},"iris_couverts":{"type":"integer","title":"Iris Couverts","description":"Nombre d'IRIS dont le contour intersecte la zone. Un compte, pas une somme."},"ages":{"$ref":"#/components/schemas/ZoneAges","description":"Individus par tranche d'âge, effectifs et parts de la population."},"sexe":{"$ref":"#/components/schemas/ZoneSexe","description":"Hommes et femmes, effectifs estimés et parts de `population_recensement`. Une estimation par répartition des données IRIS ; les limites sont celles du bloc `csp` (`csp.fiabilite`)."},"menages_profil":{"$ref":"#/components/schemas/ZoneMenagesProfil","description":"Profil des ménages, effectifs et parts des ménages, surface moyenne."},"logements":{"$ref":"#/components/schemas/ZoneLogements","description":"Résidences principales par période de construction et logements sociaux, effectifs et parts du total."},"csp":{"$ref":"#/components/schemas/ZoneCsp","description":"Catégories socioprofessionnelles estimées, parts et indices d'affinité. Une estimation par répartition des données IRIS : lire `fiabilite` avant de citer un indice."},"potentiel_depense":{"$ref":"#/components/schemas/ZonePotentielDepense","description":"Unités de consommation, revenu disponible estimé (masse annuelle et par ménage) et potentiel théorique si un `coefficient` a été passé. Une estimation, pas une prévision."},"immobilier":{"$ref":"#/components/schemas/ZoneImmobilier","description":"Prix de vente immobiliers (DVF) par année et type de bien, médiane au m² comparée au département, évolution sur la période. Des prix de vente, pas des loyers ; lire `fiabilite` avant de citer un prix."},"activites":{"$ref":"#/components/schemas/ZoneActivites","description":"Établissements de la zone par activité — SIRENE (INSEE). Un plancher : seuls les actifs géolocalisés y figurent."},"defaillances":{"$ref":"#/components/schemas/ZoneDefaillances","description":"Procédures collectives (BODACC) et arrêts d'activité (SIRENE) de la zone, par année depuis 2017 et par activité, avec un taux pour 100 établissements actifs et un indice contre la référence. Lire `fiabilite` et `annee_en_cours` avant de citer un chiffre."},"carreaux":{"$ref":"#/components/schemas/ZoneCarreaux"},"source":{"anyOf":[{"$ref":"#/components/schemas/ZoneSource"},{"type":"null"}],"description":"Millésimes des couches chargées, lus à chaque appel. `null` quand rien n'a été lu — isochrone sans zone atteignable."},"attribution":{"type":"string","title":"Attribution","description":"Mention à reproduire avec tout chiffre affiché. La mention OpenStreetMap s'y ajoute en portée `isochrone`."},"id":{"type":"string","title":"Id","description":"L'identifiant envoyé, ou la position à partir de 1."},"exclusif":{"$ref":"#/components/schemas/ZoneExclusif"}},"type":"object","required":["portee","surface_km2","population","menages","menages_pauvres","iris_couverts","ages","sexe","menages_profil","logements","csp","potentiel_depense","immobilier","activites","defaillances","carreaux","attribution","id","exclusif"],"title":"ZoneCompareZoneResponse","description":"Une zone comparée : exactement le bloc de `/zone/stats`, plus `id` et `exclusif`.","examples":[{"activites":{"familles":[{"cle":"commerce_detail_alimentaire","densite":68.0,"etablissements":2802,"indice":186,"libelle":"Commerce de détail alimentaire","part":1.4,"reference_densite":36.6,"sous_familles":[{"cle":"boulangerie_patisserie","densite":16.9,"etablissements":697,"indice":185,"libelle":"Boulangerie, pâtisserie","part":0.3,"reference_densite":9.1}]},{"cle":"commerce_detail_non_alimentaire","densite":268.0,"etablissements":11051,"indice":183,"libelle":"Commerce de détail non alimentaire","part":5.5,"reference_densite":146.8,"sous_familles":[{"cle":"vente_a_distance_et_hors_magasin","densite":116.4,"etablissements":4801,"indice":185,"libelle":"Vente à distance et hors magasin","part":2.4,"reference_densite":62.9}]},{"cle":"cafes_hotels_restaurants","densite":196.6,"etablissements":8106,"indice":238,"libelle":"Cafés, hôtels, restaurants","part":4.1,"reference_densite":82.7,"sous_familles":[{"cle":"restauration_traditionnelle","densite":60.1,"etablissements":2480,"indice":263,"libelle":"Restauration traditionnelle","part":1.2,"reference_densite":22.8}]},{"cle":"services_particuliers","densite":286.2,"etablissements":11801,"indice":173,"libelle":"Services aux particuliers","part":5.9,"reference_densite":165.7,"sous_familles":[{"cle":"autres_services_personnels","densite":54.8,"etablissements":2258,"indice":203,"libelle":"Autres services personnels","part":1.1,"reference_densite":27.0}]},{"cle":"sante_action_sociale","densite":290.2,"etablissements":11965,"indice":212,"libelle":"Santé et action sociale","part":6.0,"reference_densite":136.8,"sous_familles":[{"cle":"reeducation_appareillage","densite":56.5,"etablissements":2330,"indice":203,"libelle":"Rééducation, appareillage et pédicures-podologues","part":1.2,"reference_densite":27.8}]},{"cle":"services_entreprises","densite":1208.9,"etablissements":49850,"indice":239,"libelle":"Services aux entreprises","part":25.0,"reference_densite":506.7,"sous_familles":[{"cle":"nettoyage_et_proprete","densite":197.8,"etablissements":8158,"indice":249,"libelle":"Nettoyage, propreté","part":4.1,"reference_densite":79.6}]},{"cle":"banque_assurance_immobilier","densite":1419.3,"etablissements":58524,"indice":211,"libelle":"Banque, assurance, immobilier","part":29.3,"reference_densite":673.4,"sous_familles":[{"cle":"societes_civiles_immobilieres","densite":1164.2,"etablissements":48007,"indice":212,"libelle":"Sociétés civiles immobilières et location de biens","part":24.1,"reference_densite":548.7}]},{"cle":"construction_batiment","densite":203.3,"etablissements":8383,"indice":132,"libelle":"Construction et artisanat du bâtiment","part":4.2,"reference_densite":153.5,"sous_familles":[{"cle":"promotion_immobiliere","densite":49.0,"etablissements":2021,"indice":249,"libelle":"Promotion immobilière","part":1.0,"reference_densite":19.7}]},{"cle":"commerce_gros","densite":97.0,"etablissements":3998,"indice":154,"libelle":"Commerce de gros et négoce","part":2.0,"reference_densite":62.9,"sous_familles":[{"cle":"intermediaire_du_commerce","densite":27.5,"etablissements":1132,"indice":175,"libelle":"Intermédiaire du commerce, centrale d'achat","part":0.6,"reference_densite":15.7}]},{"cle":"transport_logistique","densite":182.2,"etablissements":7515,"indice":183,"libelle":"Transport et logistique","part":3.8,"reference_densite":99.4,"sous_familles":[{"cle":"poste_et_courrier","densite":114.1,"etablissements":4704,"indice":229,"libelle":"Poste et courrier","part":2.4,"reference_densite":49.7}]},{"cle":"industrie_production","densite":93.1,"etablissements":3841,"indice":124,"libelle":"Industrie et production","part":1.9,"reference_densite":75.4,"sous_familles":[{"cle":"energie","densite":20.6,"etablissements":848,"indice":124,"libelle":"Production et distribution d'énergie","part":0.4,"reference_densite":16.6}]},{"cle":"agriculture","densite":7.1,"etablissements":291,"indice":14,"libelle":"Agriculture, sylviculture, pêche","part":0.1,"reference_densite":48.8,"sous_familles":[{"cle":"sylviculture_et_exploitation_forestiere","densite":2.2,"etablissements":92,"indice":41,"libelle":"Sylviculture, exploitation forestière","part":0.0,"reference_densite":5.5}]},{"cle":"administration_enseignement","densite":517.6,"etablissements":21344,"indice":239,"libelle":"Administration, enseignement, associations","part":10.7,"reference_densite":216.6,"sous_familles":[{"cle":"association_et_organisation","densite":218.0,"etablissements":8989,"indice":222,"libelle":"Associations et organisations","part":4.5,"reference_densite":98.2}]},{"cle":"autres","densite":0.9,"etablissements":38,"indice":430,"libelle":"Autres activités","part":0.0,"reference_densite":0.2,"sous_familles":[{"cle":"organismes_extraterritoriaux","densite":0.9,"etablissements":38,"indice":430,"libelle":"Organismes extraterritoriaux","part":0.0,"reference_densite":0.2}]}],"fiabilite":{"etablissements_min":5,"indices_fiables":true,"taux_localisation":82.2},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"SIRENE (INSEE), établissements actifs géolocalisés","total":199509},"ages":{"0_3":{"effectif":15230,"part":3.7},"11_17":{"effectif":30120,"part":7.3},"18_24":{"effectif":41870,"part":10.2},"25_39":{"effectif":96300,"part":23.4},"40_54":{"effectif":79850,"part":19.4},"4_5":{"effectif":8110,"part":2.0},"55_64":{"effectif":46210,"part":11.2},"65_79":{"effectif":52360,"part":12.7},"6_10":{"effectif":21040,"part":5.1},"80_plus":{"effectif":20900,"part":5.1},"inconnu":{"effectif":360,"part":0.1}},"attribution":"Source : INSEE, Filosofi 2021 (carreaux 200 m) et Recensement de la population 2022 (IRIS) ; IGN, Contours IRIS 2026. Prix immobiliers : DGFiP, Demandes de valeurs foncières (retraitement Etalab, licence ouverte). Activités : SIRENE (INSEE), établissements actifs géolocalisés. Défaillances : BODACC (DILA) et SIRENE (INSEE). Itinéraires : Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","carreaux":{"estimes":312,"total":2107},"csp":{"agriculteurs":{"effectif":210,"part":0.1,"reference_part":0.4},"artisans_commercants":{"effectif":9840,"indice":72,"part":2.8,"reference_part":3.9},"autres_inactifs":{"effectif":37490,"indice":98,"part":10.7,"reference_part":11.0},"cadres":{"effectif":84211,"indice":147,"part":24.1,"reference_part":16.4},"employes":{"effectif":52050,"indice":97,"part":14.9,"reference_part":15.4},"fiabilite":{"indices_fiables":true,"part_iris_communaux":0.0,"part_min":0.5,"population_15_plus":349012},"ouvriers":{"effectif":26980,"indice":58,"part":7.7,"reference_part":13.3},"professions_intermediaires":{"effectif":58120,"indice":111,"part":16.7,"reference_part":14.9},"reference":{"code":"69","libelle":"Rhône","type":"departement"},"retraites":{"effectif":80111,"indice":93,"part":23.0,"reference_part":24.6}},"defaillances":{"annee_en_cours":{"annee":2026,"bodacc_jusqu_au":"2026-09-18","partielle":true,"sirene_jusqu_au":"2026-09-19"},"annees":[2017,2018,2019,2020,2021,2022,2023,2024,2025,2026],"arrets":[31000,30500,31200,34800,36400,32300,45200,66500,64100,23200],"defaillances":[2364,2270,2720,2311,1961,2786,4259,4986,5357,3381],"familles":[{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"commerce_detail_alimentaire","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Commerce de détail alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":129,"reference_taux":2.7,"taux_defaillance":3.5}},"sous_familles":[{"arrets":[248,244,250,278,291,258,362,532,513,186],"cle":"boulangerie_patisserie","defaillances":[19,18,22,18,16,22,34,40,43,27],"libelle":"Boulangerie, pâtisserie","periodes":{"evolution_arrets_pct":70.1,"evolution_defaillances_pct":108.9,"precedente":{"a":2022,"arrets":827,"de":2020,"defaillances":56},"recente":{"a":2025,"arrets":1407,"de":2023,"defaillances":117,"indice":151,"reference_taux":3.7,"taux_defaillance":5.6}}}]},{"arrets":[2170,2135,2184,2436,2548,2261,3164,4655,4487,1624],"cle":"commerce_detail_non_alimentaire","defaillances":[165,159,191,162,137,195,298,349,375,237],"libelle":"Commerce de détail non alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":7245,"de":2020,"defaillances":494},"recente":{"a":2025,"arrets":12306,"de":2023,"defaillances":1022,"indice":89,"reference_taux":3.5,"taux_defaillance":3.1}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"cafes_hotels_restaurants","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Cafés, hôtels, restaurants","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":191,"reference_taux":4.7,"taux_defaillance":9.0}},"sous_familles":[]},{"arrets":[1860,1830,1872,2088,2184,1938,2712,3990,3846,1392],"cle":"services_particuliers","defaillances":[142,136,163,138,118,167,255,299,322,203],"libelle":"Services aux particuliers","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":6210,"de":2020,"defaillances":423},"recente":{"a":2025,"arrets":10548,"de":2023,"defaillances":876,"indice":88,"reference_taux":2.8,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"sante_action_sociale","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Santé et action sociale","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":54,"reference_taux":1.5,"taux_defaillance":0.8}},"sous_familles":[]},{"arrets":[6820,6710,6864,7656,8008,7106,9944,14630,14102,5104],"cle":"services_entreprises","defaillances":[520,499,599,508,431,613,937,1097,1179,744],"libelle":"Services aux entreprises","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":22770,"de":2020,"defaillances":1552},"recente":{"a":2025,"arrets":38676,"de":2023,"defaillances":3213,"indice":57,"reference_taux":3.7,"taux_defaillance":2.1}},"sous_familles":[]},{"arrets":[3720,3660,3744,4176,4368,3876,5424,7980,7692,2784],"cle":"banque_assurance_immobilier","defaillances":[284,272,326,277,235,335,512,598,643,405],"libelle":"Banque, assurance, immobilier","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":12420,"de":2020,"defaillances":847},"recente":{"a":2025,"arrets":21096,"de":2023,"defaillances":1753,"indice":46,"reference_taux":2.2,"taux_defaillance":1.0}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"construction_batiment","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Construction et artisanat du bâtiment","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":178,"reference_taux":4.9,"taux_defaillance":8.7}},"sous_familles":[]},{"arrets":[1240,1220,1248,1392,1456,1292,1808,2660,2564,928],"cle":"commerce_gros","defaillances":[94,90,109,92,78,111,171,199,214,135],"libelle":"Commerce de gros et négoce","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.8,"precedente":{"a":2022,"arrets":4140,"de":2020,"defaillances":281},"recente":{"a":2025,"arrets":7032,"de":2023,"defaillances":584,"indice":152,"reference_taux":3.2,"taux_defaillance":4.9}},"sous_familles":[]},{"arrets":[1550,1525,1560,1740,1820,1615,2260,3325,3205,1160],"cle":"transport_logistique","defaillances":[119,114,136,116,98,140,213,250,268,169],"libelle":"Transport et logistique","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.5,"precedente":{"a":2022,"arrets":5175,"de":2020,"defaillances":354},"recente":{"a":2025,"arrets":8790,"de":2023,"defaillances":731,"indice":79,"reference_taux":4.1,"taux_defaillance":3.2}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"industrie_production","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Industrie et production","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":95,"reference_taux":2.7,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[62,61,62,70,73,65,90,133,128,46],"cle":"agriculture","defaillances":[4,4,5,5,4,5,8,10,11,7],"libelle":"Agriculture, sylviculture, pêche","periodes":{"evolution_arrets_pct":68.8,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":208,"de":2020,"defaillances":14},"recente":{"a":2025,"arrets":351,"de":2023,"defaillances":29,"reference_taux":0.0,"taux_defaillance":3.3}},"sous_familles":[]},{"arrets":[930,915,936,1044,1092,969,1356,1995,1923,696],"cle":"administration_enseignement","defaillances":[71,68,82,69,59,84,128,150,161,102],"libelle":"Administration, enseignement, associations","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":3105,"de":2020,"defaillances":212},"recente":{"a":2025,"arrets":5274,"de":2023,"defaillances":439,"indice":57,"reference_taux":1.2,"taux_defaillance":0.7}},"sous_familles":[]},{"arrets":[16,15,16,17,18,16,23,33,32,12],"cle":"autres","defaillances":[1,1,1,1,1,1,3,3,3,1],"libelle":"Autres activités","periodes":{"evolution_arrets_pct":72.5,"evolution_defaillances_pct":200.0,"precedente":{"a":2022,"arrets":51,"de":2020,"defaillances":3},"recente":{"a":2025,"arrets":88,"de":2023,"defaillances":9,"reference_taux":0.0,"taux_defaillance":7.9}},"sous_familles":[]}],"fiabilite":{"actifs_min":20,"arrets_recents_sous_comptes":true,"defaillances_min":5,"departements_sous_declares":["67"],"procedures_sous_declarees":false,"taux_localisation":82.5},"periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":103500,"de":2020,"defaillances":7058},"recente":{"a":2025,"arrets":175800,"de":2023,"defaillances":14602,"indice":79,"reference_taux":3.1,"taux_defaillance":2.4}},"procedures":{"autres":[3,4,5,2,0,26,38,34,36,2],"liquidation":[1732,1734,2153,1775,1601,2155,3038,3833,4098,2586],"redressement":[632,536,567,536,360,631,1221,1153,1259,795],"sauvegarde":[85,61,76,131,97,125,253,229,209,106]},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"BODACC (DILA) et SIRENE (INSEE), établissements géolocalisés"},"exclusif":{"menages":49780,"part_population":23.8,"population":98120,"potentiel_depense":{"coefficient":0.048,"potentiel_theorique":93744000,"revenu_disponible_estime":1953000000}},"id":"part-dieu","immobilier":{"appartements":{"annees":[{"annee":2021,"prix_m2_median":3402,"reference_prix_m2_median":3200,"ventes":84},{"annee":2022,"reference_prix_m2_median":3300,"ventes":12},{"annee":2023,"prix_m2_median":3750,"reference_prix_m2_median":3350,"ventes":91}],"evolution_pct":10.2,"fiabilite":{"annees_fiables":[2021,2023],"ventes_min":20},"indice":112},"couverture":{"a":"2023-12-30","de":"2021-01-04"},"hors_couverture":false,"locaux_activite":{"annees":[{"annee":2021,"reference_prix_m2_median":2050,"ventes":14},{"annee":2022,"prix_m2_median":2310,"reference_prix_m2_median":2140,"ventes":23},{"annee":2023,"reference_prix_m2_median":2200,"ventes":9}],"fiabilite":{"annees_fiables":[2022],"ventes_min":20},"indice":108},"maisons":{"annees":[{"annee":2021,"reference_prix_m2_median":2740,"ventes":8},{"annee":2022,"reference_prix_m2_median":2980,"ventes":3},{"annee":2023,"reference_prix_m2_median":3010,"ventes":0}],"fiabilite":{"annees_fiables":[],"ventes_min":20}},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"DVF géolocalisé (DGFiP / Etalab), diffusion 2026"},"iris_couverts":187,"logements":{"apres_1990":{"effectif":35800,"part":18.0},"avant_1945":{"effectif":84200,"part":42.4},"de_1945_a_1970":{"effectif":41100,"part":20.7},"de_1970_a_1990":{"effectif":33900,"part":17.1},"periode_inconnue":{"effectif":3420,"part":1.7},"sociaux":{"effectif":39700,"part":20.0},"total":198420},"menages":198420,"menages_pauvres":31210,"menages_profil":{"cinq_personnes_et_plus":{"effectif":9120,"part":4.6},"en_collectif":{"effectif":176400,"part":88.9},"en_maison":{"effectif":22020,"part":11.1},"monoparentaux":{"effectif":17880,"part":9.0},"personnes_seules":{"effectif":92140,"part":46.4},"proprietaires":{"effectif":71300,"part":35.9},"surface_moyenne_m2":63.8},"niveau_de_vie_moyen":24870,"point_central":{"adresse_resolue":"12 Rue de la République 69002 Lyon","id":"69383_2745_00012","lat":45.75776,"lon":4.83201,"precision":"adresse"},"population":412350,"portee":{"circulation":"fluide","duree_min":15,"mode":"auto","type":"isochrone"},"potentiel_depense":{"coefficient":0.15,"potentiel_theorique":1096495836,"revenu_disponible_estime":7309972240,"revenu_disponible_par_menage":36841,"unites_consommation":293928},"sexe":{"femmes":{"effectif":212770,"part":51.4},"hommes":{"effectif":201230,"part":48.6},"population_recensement":414000},"source":{"contours_iris_millesime":2026,"filosofi_millesime":2021,"recensement_millesime":2022},"surface_km2":84.3}]},"ZoneCsp":{"properties":{"reference":{"$ref":"#/components/schemas/ZoneCspReference"},"agriculteurs":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Agriculteurs exploitants."},"artisans_commercants":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Artisans, commerçants, chefs d'entreprise."},"cadres":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Cadres et professions intellectuelles supérieures."},"professions_intermediaires":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Professions intermédiaires."},"employes":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Employés."},"ouvriers":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Ouvriers."},"retraites":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Retraités."},"autres_inactifs":{"$ref":"#/components/schemas/ZoneCspPoste","description":"Autres personnes sans activité professionnelle."},"fiabilite":{"$ref":"#/components/schemas/ZoneCspFiabilite"}},"type":"object","required":["reference","agriculteurs","artisans_commercants","cadres","professions_intermediaires","employes","ouvriers","retraites","autres_inactifs","fiabilite"],"title":"ZoneCsp","description":"Catégories socioprofessionnelles de la zone — une **estimation** : les\nCSP ne sont diffusées qu'à l'IRIS, elles sont réparties sur les carreaux\nFilosofi au prorata de leur population de 15 ans et plus, sous hypothèse\nd'homogénéité interne à l'IRIS. Hypothèses et limites : guide « Zone de\nchalandise », section CSP."},"ZoneCspFiabilite":{"properties":{"population_15_plus":{"type":"integer","title":"Population 15 Plus","description":"Population de 15 ans et plus du recensement répartie sur la zone, somme des huit postes : le dénominateur des parts. Elle diffère de `population` (Filosofi ne compte que les ménages ordinaires, et les millésimes diffèrent). Les huit `effectif` du bloc `csp` sont arrondis séparément : leur somme peut différer de cette valeur de quelques unités."},"part_iris_communaux":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part Iris Communaux","description":"Pourcentage de cette population (recensement, somme des huit postes) porté par des IRIS qui sont une commune entière (communes non découpées en IRIS) : là, la répartition est la plus grossière. `null` sur une zone vide."},"indices_fiables":{"type":"boolean","title":"Indices Fiables","description":"Vrai quand la population de 15 ans et plus atteint 1 000 personnes. En dessous, la zone tient dans un ou deux IRIS et les indices en recopient le profil ; ils sont rendus quand même."},"part_min":{"type":"number","title":"Part Min","description":"Part minimale, en pourcentage de la population de 15 ans et plus, sous laquelle `indice` n'est pas servi sur un poste. Les CSP étant réparties de l'IRIS vers les carreaux au prorata de la population, un poste rare porte une erreur relative trop grande pour être rapportée à une référence ; `effectif` et `part` restent servis."}},"type":"object","required":["population_15_plus","indices_fiables","part_min"],"title":"ZoneCspFiabilite"},"ZoneCspPoste":{"properties":{"effectif":{"type":"integer","title":"Effectif","description":"Personnes de 15 ans et plus du poste, estimation arrondie à l'entier."},"part":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part","description":"Pourcentage de la population de 15 ans et plus du recensement répartie sur la zone (la somme des huit postes), au dixième, calculé avant arrondi. `null` sur une zone vide."},"indice":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indice","description":"100 × part de la zone / part de la référence, à l'entier. 100 = la référence ; 150 = une fois et demie sa part. `null` sur une zone vide, sur une référence absente, et sur tout poste dont la `part` est inférieure à `fiabilite.part_min` — là, l'estimation est trop sensible au découpage de la zone pour qu'un rapport ait un sens."},"reference_part":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Part","description":"Pourcentage du même poste dans la population de 15 ans et plus du territoire de référence, au dixième, calculé avant arrondi — même dénominateur que l'indice. À citer à côté de `part` : un indice de 82 est un écart de 18 %, pas de 18 points. Servi même quand `indice` est `null` sous `fiabilite.part_min`, et sur une zone sans population en référence France. `0.0` pour un poste qui ne compte personne sur le territoire de référence — c'est une valeur, jamais une absence. `null` quand aucune référence n'est connue : isochrone inatteignable (rien lu), ou département de référence indéterminable."}},"type":"object","required":["effectif"],"title":"ZoneCspPoste","description":"Un poste socioprofessionnel : effectif estimé, part de la population de\n15 ans et plus, indice d'affinité par rapport à la référence."},"ZoneCspReference":{"properties":{"type":{"type":"string","enum":["france","departement"],"title":"Type","description":"Référentiel demandé."},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Code du département de référence — celui qui pèse le plus dans la zone en population de 15 ans et plus. `null` en `france`, ou en `departement` sur une zone vide."},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Nom du département de référence, tel que l'INSEE l'écrit (« Rhône », « La Réunion »). `null` en référence `france`, ou sans code."}},"type":"object","required":["type"],"title":"ZoneCspReference"},"ZoneDefaillanceFamille":{"properties":{"cle":{"type":"string","title":"Cle","description":"Identifiant stable du poste — le même que dans `activites`."},"libelle":{"type":"string","title":"Libelle"},"defaillances":{"items":{"type":"integer"},"type":"array","title":"Defaillances","description":"Un entier par année de `annees`."},"arrets":{"items":{"type":"integer"},"type":"array","title":"Arrets","description":"Un entier par année de `annees`."},"periodes":{"$ref":"#/components/schemas/ZoneDefaillancePeriodes"},"sous_familles":{"items":{"$ref":"#/components/schemas/ZoneDefaillancePoste"},"type":"array","title":"Sous Familles","description":"Sous-familles ayant au moins un événement sur la fenêtre ; les 14 familles sont toujours présentes."}},"type":"object","required":["cle","libelle","defaillances","arrets","periodes","sous_familles"],"title":"ZoneDefaillanceFamille"},"ZoneDefaillancePeriodePrecedente":{"properties":{"de":{"type":"integer","title":"De"},"a":{"type":"integer","title":"A"},"defaillances":{"type":"integer","title":"Defaillances"},"arrets":{"type":"integer","title":"Arrets"}},"type":"object","required":["de","a","defaillances","arrets"],"title":"ZoneDefaillancePeriodePrecedente"},"ZoneDefaillancePeriodeRecente":{"properties":{"de":{"type":"integer","title":"De","description":"Première année de la période (incluse)."},"a":{"type":"integer","title":"A","description":"Dernière année de la période (incluse) — la dernière année complète."},"defaillances":{"type":"integer","title":"Defaillances","description":"Redressements + liquidations sur la période (sens Banque de France ; la sauvegarde n'en est pas une)."},"arrets":{"type":"integer","title":"Arrets","description":"Arrêts d'activité sur la période."},"taux_defaillance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taux Defaillance","description":"Défaillances pour 100 établissements actifs **et par an**, au dixième. `null` sous `fiabilite.defaillances_min` défaillances ou sous `fiabilite.actifs_min` actifs."},"reference_taux":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Taux","description":"Le même taux sur le territoire de référence. `null` sans référence."},"indice":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indice","description":"100 × taux de la zone / taux de la référence, calculé sur les bruts. 100 = la référence. `null` aux mêmes conditions que `taux_defaillance`, et quand la référence ne compte aucune défaillance dans le poste (`reference_taux` vaut alors `0.0`)."}},"type":"object","required":["de","a","defaillances","arrets"],"title":"ZoneDefaillancePeriodeRecente"},"ZoneDefaillancePeriodes":{"properties":{"recente":{"$ref":"#/components/schemas/ZoneDefaillancePeriodeRecente","description":"Les trois dernières années complètes."},"precedente":{"$ref":"#/components/schemas/ZoneDefaillancePeriodePrecedente","description":"Les trois années d'avant. ⚠️ Contient le creux Covid (2020-2021) tant que la période récente ne l'a pas dépassé."},"evolution_defaillances_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Evolution Defaillances Pct","description":"(récente − précédente) / précédente × 100, au dixième. `null` si la précédente est à zéro."},"evolution_arrets_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Evolution Arrets Pct","description":"Idem sur les arrêts."}},"type":"object","required":["recente","precedente"],"title":"ZoneDefaillancePeriodes"},"ZoneDefaillancePoste":{"properties":{"cle":{"type":"string","title":"Cle","description":"Identifiant stable du poste — le même que dans `activites`."},"libelle":{"type":"string","title":"Libelle"},"defaillances":{"items":{"type":"integer"},"type":"array","title":"Defaillances","description":"Un entier par année de `annees`."},"arrets":{"items":{"type":"integer"},"type":"array","title":"Arrets","description":"Un entier par année de `annees`."},"periodes":{"$ref":"#/components/schemas/ZoneDefaillancePeriodes"}},"type":"object","required":["cle","libelle","defaillances","arrets","periodes"],"title":"ZoneDefaillancePoste"},"ZoneDefaillances":{"properties":{"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"annees":{"items":{"type":"integer"},"type":"array","title":"Annees","description":"De 2017 à l'année en cours, dans l'ordre de tous les tableaux."},"annee_en_cours":{"$ref":"#/components/schemas/ZoneDefaillancesAnneeEnCours"},"reference":{"anyOf":[{"$ref":"#/components/schemas/ZoneActiviteReference"},{"type":"null"}]},"fiabilite":{"$ref":"#/components/schemas/ZoneDefaillancesFiabilite"},"procedures":{"$ref":"#/components/schemas/ZoneDefaillancesProcedures","description":"Toutes activités confondues, par type de jugement."},"defaillances":{"items":{"type":"integer"},"type":"array","title":"Defaillances","description":"`liquidation` + `redressement`, toutes activités, par année."},"arrets":{"items":{"type":"integer"},"type":"array","title":"Arrets","description":"Arrêts d'activité, toutes activités, par année."},"periodes":{"$ref":"#/components/schemas/ZoneDefaillancePeriodes"},"familles":{"items":{"$ref":"#/components/schemas/ZoneDefaillanceFamille"},"type":"array","title":"Familles"}},"additionalProperties":false,"type":"object","required":["annees","annee_en_cours","fiabilite","procedures","defaillances","arrets","periodes","familles"],"title":"ZoneDefaillances","description":"Procédures collectives (BODACC, projetées sur chaque établissement de\nl'entreprise dans la zone) et arrêts d'activité (fermetures SIRENE sans\nreprise ni déménagement), par année depuis 2017 et par activité. Les\nprocédures sont un **plancher** (établissements positionnés seulement),\nles arrêts un **plafond** (rapprochement par adresse brute). Hypothèses et\nlimites : guide « Zone de chalandise », section Défaillances."},"ZoneDefaillancesAnneeEnCours":{"properties":{"annee":{"type":"integer","title":"Annee"},"partielle":{"type":"boolean","title":"Partielle","description":"Toujours vrai : l'année en cours n'est pas finie, et les fermetures se déclarent avec retard."},"bodacc_jusqu_au":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bodacc Jusqu Au","description":"Date (YYYY-MM-DD) jusqu'à laquelle les procédures collectives sont chargées."},"sirene_jusqu_au":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sirene Jusqu Au","description":"Date jusqu'à laquelle les fermetures SIRENE sont chargées."}},"type":"object","required":["annee","partielle"],"title":"ZoneDefaillancesAnneeEnCours"},"ZoneDefaillancesFiabilite":{"properties":{"taux_localisation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taux Localisation","description":"Part des établissements actifs du territoire de référence qui portent des coordonnées — la part que ces comptes peuvent voir. La même que `activites.fiabilite`."},"defaillances_min":{"type":"integer","title":"Defaillances Min","description":"Défaillances sur la période récente sous lesquelles `taux_defaillance` et `indice` ne sont pas servis."},"actifs_min":{"type":"integer","title":"Actifs Min","description":"Établissements actifs du poste dans la zone sous lesquels `taux_defaillance` et `indice` ne sont pas servis."},"arrets_recents_sous_comptes":{"type":"boolean","title":"Arrets Recents Sous Comptes","description":"Vrai : les arrêts des trois derniers mois sont sous-comptés (délai de déclaration des fermetures à l'INSEE)."},"procedures_sous_declarees":{"type":"boolean","title":"Procedures Sous Declarees","description":"Vrai : le département dominant de la zone publie très peu de procédures collectives au BODACC depuis 2022 (Bas-Rhin, tribunal judiciaire de Strasbourg). Les procédures y sont sous-comptées, et `taux_defaillance`, `indice` et `evolution_defaillances_pct` ne sont pas servis, à aucun niveau. Les arrêts d'activité ne sont pas concernés."},"departements_sous_declares":{"items":{"type":"string"},"type":"array","title":"Departements Sous Declares","description":"Les départements concernés (codes), toujours servis — `[\"67\"]` aujourd'hui."}},"type":"object","required":["defaillances_min","actifs_min","arrets_recents_sous_comptes","procedures_sous_declarees","departements_sous_declares"],"title":"ZoneDefaillancesFiabilite"},"ZoneDefaillancesProcedures":{"properties":{"liquidation":{"items":{"type":"integer"},"type":"array","title":"Liquidation"},"redressement":{"items":{"type":"integer"},"type":"array","title":"Redressement"},"sauvegarde":{"items":{"type":"integer"},"type":"array","title":"Sauvegarde","description":"Servie à part : une sauvegarde n'est pas une défaillance."},"autres":{"items":{"type":"integer"},"type":"array","title":"Autres","description":"Autres jugements d'ouverture (désignation des organes, extensions non typées…)."}},"type":"object","required":["liquidation","redressement","sauvegarde","autres"],"title":"ZoneDefaillancesProcedures"},"ZoneEffectifPart":{"properties":{"effectif":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Effectif","description":"Somme des carreaux pondérée par la part de surface, arrondie à l'entier — la règle de `population`. `null` si le millésime chargé ne porte pas cet indicateur."},"part":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part","description":"Part en pourcentage, au dixième, calculée AVANT arrondi des effectifs ; le dénominateur est celui du bloc (population pour `ages`, ménages pour `menages_profil`, `logements.total` pour `logements`). `null` quand ce dénominateur est nul."}},"type":"object","title":"ZoneEffectifPart","description":"Un indicateur du profil : son effectif et sa part dans le bloc."},"ZoneExclusif":{"properties":{"population":{"type":"integer","title":"Population","description":"Habitants de la zone qu'aucune autre zone de la requête ne couvre."},"menages":{"type":"integer","title":"Menages","description":"Ménages, même règle."},"part_population":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Part Population","description":"`population` exclusive rapportée à la population totale de la zone, en pour cent au dixième. `null` sur une zone vide."},"potentiel_depense":{"$ref":"#/components/schemas/ZoneRegionPotentiel"}},"type":"object","required":["population","menages","potentiel_depense"],"title":"ZoneExclusif","description":"Ce que la zone est seule à couvrir : hors de tout chevauchement avec les\nautres zones de la requête (`zone \\ union des autres`, pas `total − paires`)."},"ZoneImmobilier":{"properties":{"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Jeu et diffusion, ex. « DVF géolocalisé (DGFiP / Etalab), diffusion 2026 ». `null` quand rien n'a été lu."},"couverture":{"anyOf":[{"$ref":"#/components/schemas/ZoneImmobilierCouverture"},{"type":"null"}],"description":"Première et dernière mutation du jeu. `null` quand rien n'a été lu."},"hors_couverture":{"type":"boolean","title":"Hors Couverture","description":"Vrai quand le département de référence est hors du jeu DVF (Bas-Rhin, Haut-Rhin, Moselle — livre foncier — et Mayotte ; les DROM 971-974, eux, sont couverts) : les séries sont alors à zéro, ce n'est pas « aucune vente »."},"reference":{"anyOf":[{"$ref":"#/components/schemas/ZoneImmobilierReference"},{"type":"null"}],"description":"Le département de comparaison. `null` si aucun ne peut être désigné (zone vide, en mer)."},"maisons":{"$ref":"#/components/schemas/ZoneImmobilierSerie","description":"Maisons (code DVF 1)."},"appartements":{"$ref":"#/components/schemas/ZoneImmobilierSerie","description":"Appartements (code DVF 2)."},"locaux_activite":{"$ref":"#/components/schemas/ZoneImmobilierSerie","description":"Locaux industriels, commerciaux ou assimilés (code DVF 4) : boutique, entrepôt, bureau et atelier confondus — un ordre de grandeur, pas un prix de marché ; **jamais un loyer**."}},"type":"object","required":["hors_couverture","maisons","appartements","locaux_activite"],"title":"ZoneImmobilier","description":"Prix de vente immobiliers de la zone — DVF (DGFiP), version géolocalisée\nd'Etalab : par année et pour trois types de bien, le nombre de ventes et le\nprix médian au m² de surface réelle bâtie, comparés au département. Ce\nsont des prix de vente déclarés dans les actes, **pas des loyers**, et\npour les locaux d'activité une catégorie hétérogène (boutique, entrepôt,\nbureau). Hypothèses et limites : guide « Zone de chalandise », section\nPrix immobiliers."},"ZoneImmobilierAnnee":{"properties":{"annee":{"type":"integer","title":"Annee"},"ventes":{"type":"integer","title":"Ventes","description":"Ventes retenues dans la zone cette année-là (ventes et VEFA, un seul type de bien dans l'acte, coordonnées, surface bâtie ≥ 9 m², prix au m² dans les bornes). Sur la dernière année, un sous-compte : les actes s'enregistrent avec des mois de retard."},"prix_m2_median":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prix M2 Median","description":"Prix de vente déclaré, médian, en euros par m² de surface réelle bâtie, à l'unité. `null` sous `fiabilite.ventes_min` ventes : on ne cite pas une médiane sur douze actes."},"reference_prix_m2_median":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reference Prix M2 Median","description":"La même médiane sur tout le département de référence. `null` sans référence, ou si le département compte lui-même moins de `ventes_min` ventes."}},"type":"object","required":["annee","ventes"],"title":"ZoneImmobilierAnnee"},"ZoneImmobilierCouverture":{"properties":{"de":{"type":"string","title":"De","description":"Date de la première mutation du jeu chargé (ISO 8601)."},"a":{"type":"string","title":"A","description":"Date de la dernière mutation du jeu chargé : ce qui dit jusqu'où les ventes sont connues."}},"type":"object","required":["de","a"],"title":"ZoneImmobilierCouverture"},"ZoneImmobilierFiabilite":{"properties":{"ventes_min":{"type":"integer","title":"Ventes Min","description":"Seuil de ventes par année sous lequel le prix médian n'est pas servi."},"annees_fiables":{"items":{"type":"integer"},"type":"array","title":"Annees Fiables","description":"Années où `ventes ≥ ventes_min` — celles sur lesquelles reposent `evolution_pct` et `indice`."}},"type":"object","required":["ventes_min","annees_fiables"],"title":"ZoneImmobilierFiabilite"},"ZoneImmobilierReference":{"properties":{"niveau":{"type":"string","const":"departement","title":"Niveau","description":"Toujours le département : celui qui compte le plus de ventes retenues dans la zone, à défaut celui qui pèse le plus dans ses carreaux."},"code":{"type":"string","title":"Code"},"libelle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Libelle","description":"Nom du département."}},"type":"object","required":["niveau","code"],"title":"ZoneImmobilierReference"},"ZoneImmobilierSerie":{"properties":{"annees":{"items":{"$ref":"#/components/schemas/ZoneImmobilierAnnee"},"type":"array","title":"Annees"},"evolution_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Evolution Pct","description":"Variation du prix médian entre la première et la dernière année fiables, en pour cent au dixième — sur toute la période, pas annualisée. `null` avec moins de deux années fiables."},"indice":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indice","description":"100 × prix médian de la zone / prix médian du département, sur la dernière année fiable. 100 = le département ; 120 = 20 % au-dessus. `null` sans référence ou sans année fiable."},"fiabilite":{"$ref":"#/components/schemas/ZoneImmobilierFiabilite"}},"type":"object","required":["annees","fiabilite"],"title":"ZoneImmobilierSerie","description":"Une série de prix : les années du jeu dans l'ordre (vide sur une isochrone sans zone atteignable), l'évolution et l'indice."},"ZoneLogements":{"properties":{"total":{"type":"integer","title":"Total","description":"Somme des cinq périodes, arrondie. Proche de `menages` mais portée séparément par le fichier."},"avant_1945":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Résidences principales construites avant 1945."},"de_1945_a_1970":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Résidences principales construites de 1945 à 1970."},"de_1970_a_1990":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Résidences principales construites de 1970 à 1990."},"apres_1990":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Résidences principales construites après 1990."},"periode_inconnue":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Résidences principales dont la période de construction est inconnue."},"sociaux":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Logements sociaux — un sous-ensemble du total, pas une sixième période."}},"type":"object","required":["total","avant_1945","de_1945_a_1970","de_1970_a_1990","apres_1990","periode_inconnue","sociaux"],"title":"ZoneLogements","description":"Résidences principales par période de construction ; `sociaux` est un\nsous-ensemble du total. Les parts sont rapportées à `total`."},"ZoneMenagesProfil":{"properties":{"personnes_seules":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Ménages d'une personne."},"cinq_personnes_et_plus":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Ménages de 5 personnes et plus."},"proprietaires":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Ménages propriétaires de leur résidence principale."},"monoparentaux":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Familles monoparentales."},"en_collectif":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Ménages en logement collectif."},"en_maison":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Ménages en maison."},"surface_moyenne_m2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Surface Moyenne M2","description":"Surface moyenne des résidences principales, en m², au dixième : surface cumulée divisée par les ménages, mêmes pondérations. `null` si aucun ménage."}},"type":"object","required":["personnes_seules","cinq_personnes_et_plus","proprietaires","monoparentaux","en_collectif","en_maison"],"title":"ZoneMenagesProfil","description":"Profil des ménages ; les parts sont rapportées à `menages`."},"ZonePortee":{"properties":{"type":{"type":"string","enum":["isochrone","rayon","polygone"],"title":"Type","description":"Forme de la zone."},"duree_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duree Min","description":"Durée de trajet, en portée `isochrone`."},"mode":{"anyOf":[{"type":"string","enum":["auto","pieton","velo"]},{"type":"null"}],"title":"Mode","description":"Mode de déplacement, en portée `isochrone`."},"circulation":{"anyOf":[{"type":"string","enum":["fluide","pointe"]},{"type":"null"}],"title":"Circulation","description":"Conditions de circulation, en portée `isochrone` — toujours renseigné, `fluide` compris."},"rayon_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rayon Km","description":"Rayon, en portée `rayon`."},"polygone":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Polygone","description":"Contour GeoJSON effectivement évalué, présent seulement si `rendre_polygone` et hors portée `rayon`. `null` aussi quand aucune zone n'est atteignable."}},"type":"object","required":["type"],"title":"ZonePortee","description":"La zone telle qu'elle a été évaluée."},"ZonePotentielDepense":{"properties":{"unites_consommation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unites Consommation","description":"Unités de consommation reconstituées de la zone : 1 par ménage, 0,5 par autre personne de 14 ans et plus, 0,3 par enfant de moins de 14 ans (trois septièmes de la tranche 11-17 comptés comme enfants). `null` si le millésime chargé ne porte pas les tranches d'âge."},"revenu_disponible_estime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenu Disponible Estime","description":"Revenu disponible estimé des habitants de la zone, en euros par an : niveau de vie moyen × unités de consommation. Estimation sur un niveau de vie écrêté (Filosofi 2021), sans réévaluation de l'inflation."},"revenu_disponible_par_menage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenu Disponible Par Menage","description":"Le même montant rapporté au nombre de ménages, en euros par an — le chiffre à lire pour juger la zone d'un coup d'œil. `null` si la zone n'a pas de ménage."},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coefficient","description":"Le coefficient reçu dans la requête, renvoyé tel quel ; `null` si aucun n'a été passé."},"potentiel_theorique":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Potentiel Theorique","description":"Revenu disponible estimé × coefficient, en euros par an. Un potentiel **théorique** : ce n'est pas une prévision de chiffre d'affaires — une partie des dépenses des habitants se fait hors de la zone, et la zone reçoit des clients qui n'y habitent pas. `null` sans coefficient."}},"type":"object","title":"ZonePotentielDepense","description":"Ce que les habitants de la zone ont à dépenser — une **estimation** : les\nunités de consommation sont reconstituées depuis les ménages et les tranches\nd'âge (échelle OCDE modifiée), le niveau de vie Filosofi est écrêté et date\nde 2021. Hypothèses et limites : guide « Zone de chalandise », section\n« Potentiel de dépense »."},"ZoneRegionPotentiel":{"properties":{"revenu_disponible_estime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenu Disponible Estime","description":"Revenu disponible estimé des habitants de la région, en euros par an (niveau de vie moyen de la région × ses unités de consommation reconstituées)."},"coefficient":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coefficient","description":"Le coefficient de la requête, renvoyé tel quel ; `null` sans coefficient."},"potentiel_theorique":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Potentiel Theorique","description":"Revenu disponible estimé × coefficient, en euros par an. `null` sans coefficient."}},"type":"object","title":"ZoneRegionPotentiel","description":"Le potentiel d'une région dérivée (exclusif ou chevauchement) : la masse\nseulement — pas de montant par ménage ni d'UC, le contour n'est pas rendu."},"ZoneSexe":{"properties":{"hommes":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Hommes, tous âges : effectif estimé arrondi à l'entier et part de `population_recensement` au dixième."},"femmes":{"$ref":"#/components/schemas/ZoneEffectifPart","description":"Femmes, tous âges : effectif estimé arrondi à l'entier et part de `population_recensement` au dixième."},"population_recensement":{"type":"integer","title":"Population Recensement","description":"Hommes + femmes : la population totale du recensement répartie sur la zone, dénominateur des deux parts. Diffère de `population` (Filosofi, ménages ordinaires, autre millésime) et de `csp.fiabilite.population_15_plus` (15 ans et plus). Les deux `effectif` sont arrondis séparément : leur somme peut différer de cette valeur d'une unité."}},"type":"object","required":["hommes","femmes","population_recensement"],"title":"ZoneSexe","description":"Hommes et femmes de la zone — une **estimation** : le sexe n'est\ndiffusé qu'à l'IRIS (recensement 2022), il est réparti sur les carreaux\nFilosofi au prorata de leur population totale, sous hypothèse d'un\nsex-ratio homogène dans l'IRIS. Les parts sont rapportées à\n`population_recensement`, pas à `population` : deux populations\ndifférentes (recensement 2022, collectivités comprises, contre Filosofi\n2021, ménages ordinaires). Hypothèses et limites : guide « Zone de\nchalandise », section Sexe."},"ZoneSource":{"properties":{"filosofi_millesime":{"type":"integer","title":"Filosofi Millesime","description":"Millésime du carroyage Filosofi chargé."},"contours_iris_millesime":{"type":"integer","title":"Contours Iris Millesime","description":"Édition des Contours IRIS chargée."},"recensement_millesime":{"type":"integer","title":"Recensement Millesime","description":"Millésime du recensement de la population (base infracommunale IRIS) dont viennent les catégories socioprofessionnelles."}},"type":"object","required":["filosofi_millesime","contours_iris_millesime","recensement_millesime"],"title":"ZoneSource"},"ZoneStatsRequest":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Adresse libre du centre, résolue par le moteur d'adresses ; un nom de commune ou un code postal seul est accepté (le centre est alors celui de la commune). Alternative à `lat`/`lon`.","examples":["12 rue de la République 69002 Lyon"]},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat","description":"Latitude WGS84 du centre. Avec `lon`, et sans `adresse`.","examples":[45.7578]},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon","description":"Longitude WGS84 du centre. Avec `lat`, et sans `adresse`.","examples":[4.832]},"duree":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Duree","description":"Portée **isochrone** : durée de trajet en minutes (1–30) depuis le centre. Exclusif de `rayon` et `polygone`.","examples":[15]},"mode":{"anyOf":[{"type":"string","enum":["auto","pieton","velo"]},{"type":"null"}],"title":"Mode","description":"Mode de déplacement de l'isochrone. Défaut `auto`. N'a de sens qu'avec `duree`.","examples":["auto"]},"circulation":{"anyOf":[{"type":"string","enum":["fluide","pointe"]},{"type":"null"}],"title":"Circulation","description":"Conditions de circulation de l'isochrone. `fluide` (défaut) : circulation libre, vitesse de base du réseau. `pointe` : heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité, pas de trafic temps réel. N'a de sens qu'avec `duree`, et `pointe` seulement en `mode` `auto`.","examples":["pointe"]},"rayon":{"anyOf":[{"type":"number","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Rayon","description":"Portée **rayon** : disque à vol d'oiseau autour du centre, en kilomètres (1–50). Exclusif de `duree` et `polygone`.","examples":[5]},"polygone":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Polygone","description":"Portée **polygone** : contour GeoJSON `Polygon` ou `MultiPolygon` en WGS84 (≤ 1 Mo, ≤ 50 000 sommets), pris tel quel — par exemple le contour rendu par `GET /locations/search?polygone=true`. Exclusif de tout centre, `duree`, `rayon`."},"rendre_polygone":{"type":"boolean","title":"Rendre Polygone","description":"Renvoie dans `portee.polygone` le contour effectivement évalué (10–20 Ko pour un isochrone). Sans effet en portée `rayon` : le disque est tracé en base, aucun contour n'est disponible.","default":false},"reference":{"type":"string","enum":["france","departement"],"title":"Reference","description":"Référentiel de l'indice d'affinité des blocs `csp` et `activites` : la France entière (défaut) ou le département qui pèse le plus dans la zone (`csp.reference.code`, `activites.reference.code`). Valable pour les trois portées.","default":"france","examples":["departement"]},"coefficient":{"anyOf":[{"type":"number","maximum":1.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Coefficient","description":"Part du revenu disponible que votre secteur capte, entre 0 exclu et 1. Si présent, `potentiel_depense.potentiel_theorique` = revenu disponible estimé × coefficient. Le guide « Zone de chalandise » donne une table de repères par fonction de consommation (source INSEE). Valable pour les trois portées ; jamais transmis à l'amont.","examples":[0.15]}},"type":"object","title":"ZoneStatsRequest","description":"Une zone, décrite d'une seule des trois façons.\n\n- **isochrone** : un centre + `duree` (+ `mode`) ;\n- **rayon** : un centre + `rayon` ;\n- **polygone** : `polygone`, et rien d'autre.\n\nLe centre est `adresse` **ou** `lat`+`lon`. `adresse` accepte une adresse\ncomplète, un nom de commune ou un code postal seul (repli commune, comme\n`/locations/search`).","examples":[{"adresse":"12 rue de la République 69002 Lyon","duree":15,"mode":"auto"},{"coefficient":0.15,"lat":45.7578,"lon":4.832,"rayon":5,"reference":"departement"},{"polygone":{"coordinates":[[[4.82,45.75],[4.85,45.75],[4.85,45.77],[4.82,45.77],[4.82,45.75]]],"type":"Polygon"},"rendre_polygone":true},{"adresse":"1 rue Scribe 75009 Paris","circulation":"pointe","duree":15,"mode":"auto"}]},"ZoneStatsResponse":{"properties":{"point_central":{"anyOf":[{"$ref":"#/components/schemas/ProximityCenter"},{"type":"null"}],"description":"Centre effectivement utilisé (mêmes règles que `/address/proximity`, `precision` compris). `null` en portée `polygone`, où il n'y a pas de centre."},"portee":{"$ref":"#/components/schemas/ZonePortee"},"surface_km2":{"type":"number","title":"Surface Km2","description":"Surface de la zone effectivement évaluée, en km², arrondie au dixième."},"population":{"type":"integer","title":"Population","description":"Individus, somme des carreaux pondérée par la part de surface de chaque carreau dans la zone, arrondie à l'entier."},"menages":{"type":"integer","title":"Menages","description":"Ménages, même pondération."},"menages_pauvres":{"type":"integer","title":"Menages Pauvres","description":"Ménages sous le seuil de pauvreté, même pondération."},"niveau_de_vie_moyen":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Niveau De Vie Moyen","description":"Niveau de vie **moyen** par personne, en euros par an : somme des niveaux de vie winsorisés divisée par la population, mêmes pondérations — la seule grandeur de revenu que le carroyage permet de sommer. `null` si la population est nulle."},"iris_couverts":{"type":"integer","title":"Iris Couverts","description":"Nombre d'IRIS dont le contour intersecte la zone. Un compte, pas une somme."},"ages":{"$ref":"#/components/schemas/ZoneAges","description":"Individus par tranche d'âge, effectifs et parts de la population."},"sexe":{"$ref":"#/components/schemas/ZoneSexe","description":"Hommes et femmes, effectifs estimés et parts de `population_recensement`. Une estimation par répartition des données IRIS ; les limites sont celles du bloc `csp` (`csp.fiabilite`)."},"menages_profil":{"$ref":"#/components/schemas/ZoneMenagesProfil","description":"Profil des ménages, effectifs et parts des ménages, surface moyenne."},"logements":{"$ref":"#/components/schemas/ZoneLogements","description":"Résidences principales par période de construction et logements sociaux, effectifs et parts du total."},"csp":{"$ref":"#/components/schemas/ZoneCsp","description":"Catégories socioprofessionnelles estimées, parts et indices d'affinité. Une estimation par répartition des données IRIS : lire `fiabilite` avant de citer un indice."},"potentiel_depense":{"$ref":"#/components/schemas/ZonePotentielDepense","description":"Unités de consommation, revenu disponible estimé (masse annuelle et par ménage) et potentiel théorique si un `coefficient` a été passé. Une estimation, pas une prévision."},"immobilier":{"$ref":"#/components/schemas/ZoneImmobilier","description":"Prix de vente immobiliers (DVF) par année et type de bien, médiane au m² comparée au département, évolution sur la période. Des prix de vente, pas des loyers ; lire `fiabilite` avant de citer un prix."},"activites":{"$ref":"#/components/schemas/ZoneActivites","description":"Établissements de la zone par activité — SIRENE (INSEE). Un plancher : seuls les actifs géolocalisés y figurent."},"defaillances":{"$ref":"#/components/schemas/ZoneDefaillances","description":"Procédures collectives (BODACC) et arrêts d'activité (SIRENE) de la zone, par année depuis 2017 et par activité, avec un taux pour 100 établissements actifs et un indice contre la référence. Lire `fiabilite` et `annee_en_cours` avant de citer un chiffre."},"carreaux":{"$ref":"#/components/schemas/ZoneCarreaux"},"source":{"anyOf":[{"$ref":"#/components/schemas/ZoneSource"},{"type":"null"}],"description":"Millésimes des couches chargées, lus à chaque appel. `null` quand rien n'a été lu — isochrone sans zone atteignable."},"attribution":{"type":"string","title":"Attribution","description":"Mention à reproduire avec tout chiffre affiché. La mention OpenStreetMap s'y ajoute en portée `isochrone`."}},"type":"object","required":["portee","surface_km2","population","menages","menages_pauvres","iris_couverts","ages","sexe","menages_profil","logements","csp","potentiel_depense","immobilier","activites","defaillances","carreaux","attribution"],"title":"ZoneStatsResponse","description":"Ce que l'INSEE sait de ceux qui habitent la zone — combien, depuis le\n2026-09-11 qui (âges, ménages, logements), depuis le 2026-09-12 de\nquelle catégorie socioprofessionnelle, depuis le 2026-09-13 ce qu'ils\nont à dépenser, depuis le 2026-09-17 hommes et femmes, depuis le\n2026-09-20 ce que valent les logements et les locaux qui s'y vendent, et\ndepuis le 2026-09-21 (SIRENE, base-b2b) ce qui s'y installe.","examples":[{"activites":{"familles":[{"cle":"commerce_detail_alimentaire","densite":68.0,"etablissements":2802,"indice":186,"libelle":"Commerce de détail alimentaire","part":1.4,"reference_densite":36.6,"sous_familles":[{"cle":"boulangerie_patisserie","densite":16.9,"etablissements":697,"indice":185,"libelle":"Boulangerie, pâtisserie","part":0.3,"reference_densite":9.1}]},{"cle":"commerce_detail_non_alimentaire","densite":268.0,"etablissements":11051,"indice":183,"libelle":"Commerce de détail non alimentaire","part":5.5,"reference_densite":146.8,"sous_familles":[{"cle":"vente_a_distance_et_hors_magasin","densite":116.4,"etablissements":4801,"indice":185,"libelle":"Vente à distance et hors magasin","part":2.4,"reference_densite":62.9}]},{"cle":"cafes_hotels_restaurants","densite":196.6,"etablissements":8106,"indice":238,"libelle":"Cafés, hôtels, restaurants","part":4.1,"reference_densite":82.7,"sous_familles":[{"cle":"restauration_traditionnelle","densite":60.1,"etablissements":2480,"indice":263,"libelle":"Restauration traditionnelle","part":1.2,"reference_densite":22.8}]},{"cle":"services_particuliers","densite":286.2,"etablissements":11801,"indice":173,"libelle":"Services aux particuliers","part":5.9,"reference_densite":165.7,"sous_familles":[{"cle":"autres_services_personnels","densite":54.8,"etablissements":2258,"indice":203,"libelle":"Autres services personnels","part":1.1,"reference_densite":27.0}]},{"cle":"sante_action_sociale","densite":290.2,"etablissements":11965,"indice":212,"libelle":"Santé et action sociale","part":6.0,"reference_densite":136.8,"sous_familles":[{"cle":"reeducation_appareillage","densite":56.5,"etablissements":2330,"indice":203,"libelle":"Rééducation, appareillage et pédicures-podologues","part":1.2,"reference_densite":27.8}]},{"cle":"services_entreprises","densite":1208.9,"etablissements":49850,"indice":239,"libelle":"Services aux entreprises","part":25.0,"reference_densite":506.7,"sous_familles":[{"cle":"nettoyage_et_proprete","densite":197.8,"etablissements":8158,"indice":249,"libelle":"Nettoyage, propreté","part":4.1,"reference_densite":79.6}]},{"cle":"banque_assurance_immobilier","densite":1419.3,"etablissements":58524,"indice":211,"libelle":"Banque, assurance, immobilier","part":29.3,"reference_densite":673.4,"sous_familles":[{"cle":"societes_civiles_immobilieres","densite":1164.2,"etablissements":48007,"indice":212,"libelle":"Sociétés civiles immobilières et location de biens","part":24.1,"reference_densite":548.7}]},{"cle":"construction_batiment","densite":203.3,"etablissements":8383,"indice":132,"libelle":"Construction et artisanat du bâtiment","part":4.2,"reference_densite":153.5,"sous_familles":[{"cle":"promotion_immobiliere","densite":49.0,"etablissements":2021,"indice":249,"libelle":"Promotion immobilière","part":1.0,"reference_densite":19.7}]},{"cle":"commerce_gros","densite":97.0,"etablissements":3998,"indice":154,"libelle":"Commerce de gros et négoce","part":2.0,"reference_densite":62.9,"sous_familles":[{"cle":"intermediaire_du_commerce","densite":27.5,"etablissements":1132,"indice":175,"libelle":"Intermédiaire du commerce, centrale d'achat","part":0.6,"reference_densite":15.7}]},{"cle":"transport_logistique","densite":182.2,"etablissements":7515,"indice":183,"libelle":"Transport et logistique","part":3.8,"reference_densite":99.4,"sous_familles":[{"cle":"poste_et_courrier","densite":114.1,"etablissements":4704,"indice":229,"libelle":"Poste et courrier","part":2.4,"reference_densite":49.7}]},{"cle":"industrie_production","densite":93.1,"etablissements":3841,"indice":124,"libelle":"Industrie et production","part":1.9,"reference_densite":75.4,"sous_familles":[{"cle":"energie","densite":20.6,"etablissements":848,"indice":124,"libelle":"Production et distribution d'énergie","part":0.4,"reference_densite":16.6}]},{"cle":"agriculture","densite":7.1,"etablissements":291,"indice":14,"libelle":"Agriculture, sylviculture, pêche","part":0.1,"reference_densite":48.8,"sous_familles":[{"cle":"sylviculture_et_exploitation_forestiere","densite":2.2,"etablissements":92,"indice":41,"libelle":"Sylviculture, exploitation forestière","part":0.0,"reference_densite":5.5}]},{"cle":"administration_enseignement","densite":517.6,"etablissements":21344,"indice":239,"libelle":"Administration, enseignement, associations","part":10.7,"reference_densite":216.6,"sous_familles":[{"cle":"association_et_organisation","densite":218.0,"etablissements":8989,"indice":222,"libelle":"Associations et organisations","part":4.5,"reference_densite":98.2}]},{"cle":"autres","densite":0.9,"etablissements":38,"indice":430,"libelle":"Autres activités","part":0.0,"reference_densite":0.2,"sous_familles":[{"cle":"organismes_extraterritoriaux","densite":0.9,"etablissements":38,"indice":430,"libelle":"Organismes extraterritoriaux","part":0.0,"reference_densite":0.2}]}],"fiabilite":{"etablissements_min":5,"indices_fiables":true,"taux_localisation":82.2},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"SIRENE (INSEE), établissements actifs géolocalisés","total":199509},"ages":{"0_3":{"effectif":15230,"part":3.7},"11_17":{"effectif":30120,"part":7.3},"18_24":{"effectif":41870,"part":10.2},"25_39":{"effectif":96300,"part":23.4},"40_54":{"effectif":79850,"part":19.4},"4_5":{"effectif":8110,"part":2.0},"55_64":{"effectif":46210,"part":11.2},"65_79":{"effectif":52360,"part":12.7},"6_10":{"effectif":21040,"part":5.1},"80_plus":{"effectif":20900,"part":5.1},"inconnu":{"effectif":360,"part":0.1}},"attribution":"Source : INSEE, Filosofi 2021 (carreaux 200 m) et Recensement de la population 2022 (IRIS) ; IGN, Contours IRIS 2026. Prix immobiliers : DGFiP, Demandes de valeurs foncières (retraitement Etalab, licence ouverte). Activités : SIRENE (INSEE), établissements actifs géolocalisés. Défaillances : BODACC (DILA) et SIRENE (INSEE). Itinéraires : Données cartographiques © les contributeurs OpenStreetMap, sous licence ODbL — https://www.openstreetmap.org/copyright","carreaux":{"estimes":312,"total":2107},"csp":{"agriculteurs":{"effectif":210,"part":0.1,"reference_part":0.4},"artisans_commercants":{"effectif":9840,"indice":72,"part":2.8,"reference_part":3.9},"autres_inactifs":{"effectif":37490,"indice":98,"part":10.7,"reference_part":11.0},"cadres":{"effectif":84211,"indice":147,"part":24.1,"reference_part":16.4},"employes":{"effectif":52050,"indice":97,"part":14.9,"reference_part":15.4},"fiabilite":{"indices_fiables":true,"part_iris_communaux":0.0,"part_min":0.5,"population_15_plus":349012},"ouvriers":{"effectif":26980,"indice":58,"part":7.7,"reference_part":13.3},"professions_intermediaires":{"effectif":58120,"indice":111,"part":16.7,"reference_part":14.9},"reference":{"code":"69","libelle":"Rhône","type":"departement"},"retraites":{"effectif":80111,"indice":93,"part":23.0,"reference_part":24.6}},"defaillances":{"annee_en_cours":{"annee":2026,"bodacc_jusqu_au":"2026-09-18","partielle":true,"sirene_jusqu_au":"2026-09-19"},"annees":[2017,2018,2019,2020,2021,2022,2023,2024,2025,2026],"arrets":[31000,30500,31200,34800,36400,32300,45200,66500,64100,23200],"defaillances":[2364,2270,2720,2311,1961,2786,4259,4986,5357,3381],"familles":[{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"commerce_detail_alimentaire","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Commerce de détail alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":129,"reference_taux":2.7,"taux_defaillance":3.5}},"sous_familles":[{"arrets":[248,244,250,278,291,258,362,532,513,186],"cle":"boulangerie_patisserie","defaillances":[19,18,22,18,16,22,34,40,43,27],"libelle":"Boulangerie, pâtisserie","periodes":{"evolution_arrets_pct":70.1,"evolution_defaillances_pct":108.9,"precedente":{"a":2022,"arrets":827,"de":2020,"defaillances":56},"recente":{"a":2025,"arrets":1407,"de":2023,"defaillances":117,"indice":151,"reference_taux":3.7,"taux_defaillance":5.6}}}]},{"arrets":[2170,2135,2184,2436,2548,2261,3164,4655,4487,1624],"cle":"commerce_detail_non_alimentaire","defaillances":[165,159,191,162,137,195,298,349,375,237],"libelle":"Commerce de détail non alimentaire","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":7245,"de":2020,"defaillances":494},"recente":{"a":2025,"arrets":12306,"de":2023,"defaillances":1022,"indice":89,"reference_taux":3.5,"taux_defaillance":3.1}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"cafes_hotels_restaurants","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Cafés, hôtels, restaurants","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":191,"reference_taux":4.7,"taux_defaillance":9.0}},"sous_familles":[]},{"arrets":[1860,1830,1872,2088,2184,1938,2712,3990,3846,1392],"cle":"services_particuliers","defaillances":[142,136,163,138,118,167,255,299,322,203],"libelle":"Services aux particuliers","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":6210,"de":2020,"defaillances":423},"recente":{"a":2025,"arrets":10548,"de":2023,"defaillances":876,"indice":88,"reference_taux":2.8,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"sante_action_sociale","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Santé et action sociale","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":54,"reference_taux":1.5,"taux_defaillance":0.8}},"sous_familles":[]},{"arrets":[6820,6710,6864,7656,8008,7106,9944,14630,14102,5104],"cle":"services_entreprises","defaillances":[520,499,599,508,431,613,937,1097,1179,744],"libelle":"Services aux entreprises","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":22770,"de":2020,"defaillances":1552},"recente":{"a":2025,"arrets":38676,"de":2023,"defaillances":3213,"indice":57,"reference_taux":3.7,"taux_defaillance":2.1}},"sous_familles":[]},{"arrets":[3720,3660,3744,4176,4368,3876,5424,7980,7692,2784],"cle":"banque_assurance_immobilier","defaillances":[284,272,326,277,235,335,512,598,643,405],"libelle":"Banque, assurance, immobilier","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.0,"precedente":{"a":2022,"arrets":12420,"de":2020,"defaillances":847},"recente":{"a":2025,"arrets":21096,"de":2023,"defaillances":1753,"indice":46,"reference_taux":2.2,"taux_defaillance":1.0}},"sous_familles":[]},{"arrets":[4650,4575,4680,5220,5460,4845,6780,9975,9615,3480],"cle":"construction_batiment","defaillances":[355,340,408,346,294,418,639,748,804,507],"libelle":"Construction et artisanat du bâtiment","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":15525,"de":2020,"defaillances":1058},"recente":{"a":2025,"arrets":26370,"de":2023,"defaillances":2191,"indice":178,"reference_taux":4.9,"taux_defaillance":8.7}},"sous_familles":[]},{"arrets":[1240,1220,1248,1392,1456,1292,1808,2660,2564,928],"cle":"commerce_gros","defaillances":[94,90,109,92,78,111,171,199,214,135],"libelle":"Commerce de gros et négoce","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.8,"precedente":{"a":2022,"arrets":4140,"de":2020,"defaillances":281},"recente":{"a":2025,"arrets":7032,"de":2023,"defaillances":584,"indice":152,"reference_taux":3.2,"taux_defaillance":4.9}},"sous_familles":[]},{"arrets":[1550,1525,1560,1740,1820,1615,2260,3325,3205,1160],"cle":"transport_logistique","defaillances":[119,114,136,116,98,140,213,250,268,169],"libelle":"Transport et logistique","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.5,"precedente":{"a":2022,"arrets":5175,"de":2020,"defaillances":354},"recente":{"a":2025,"arrets":8790,"de":2023,"defaillances":731,"indice":79,"reference_taux":4.1,"taux_defaillance":3.2}},"sous_familles":[]},{"arrets":[620,610,624,696,728,646,904,1330,1282,464],"cle":"industrie_production","defaillances":[48,46,54,47,39,56,85,100,107,68],"libelle":"Industrie et production","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":105.6,"precedente":{"a":2022,"arrets":2070,"de":2020,"defaillances":142},"recente":{"a":2025,"arrets":3516,"de":2023,"defaillances":292,"indice":95,"reference_taux":2.7,"taux_defaillance":2.5}},"sous_familles":[]},{"arrets":[62,61,62,70,73,65,90,133,128,46],"cle":"agriculture","defaillances":[4,4,5,5,4,5,8,10,11,7],"libelle":"Agriculture, sylviculture, pêche","periodes":{"evolution_arrets_pct":68.8,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":208,"de":2020,"defaillances":14},"recente":{"a":2025,"arrets":351,"de":2023,"defaillances":29,"reference_taux":0.0,"taux_defaillance":3.3}},"sous_familles":[]},{"arrets":[930,915,936,1044,1092,969,1356,1995,1923,696],"cle":"administration_enseignement","defaillances":[71,68,82,69,59,84,128,150,161,102],"libelle":"Administration, enseignement, associations","periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":107.1,"precedente":{"a":2022,"arrets":3105,"de":2020,"defaillances":212},"recente":{"a":2025,"arrets":5274,"de":2023,"defaillances":439,"indice":57,"reference_taux":1.2,"taux_defaillance":0.7}},"sous_familles":[]},{"arrets":[16,15,16,17,18,16,23,33,32,12],"cle":"autres","defaillances":[1,1,1,1,1,1,3,3,3,1],"libelle":"Autres activités","periodes":{"evolution_arrets_pct":72.5,"evolution_defaillances_pct":200.0,"precedente":{"a":2022,"arrets":51,"de":2020,"defaillances":3},"recente":{"a":2025,"arrets":88,"de":2023,"defaillances":9,"reference_taux":0.0,"taux_defaillance":7.9}},"sous_familles":[]}],"fiabilite":{"actifs_min":20,"arrets_recents_sous_comptes":true,"defaillances_min":5,"departements_sous_declares":["67"],"procedures_sous_declarees":false,"taux_localisation":82.5},"periodes":{"evolution_arrets_pct":69.9,"evolution_defaillances_pct":106.9,"precedente":{"a":2022,"arrets":103500,"de":2020,"defaillances":7058},"recente":{"a":2025,"arrets":175800,"de":2023,"defaillances":14602,"indice":79,"reference_taux":3.1,"taux_defaillance":2.4}},"procedures":{"autres":[3,4,5,2,0,26,38,34,36,2],"liquidation":[1732,1734,2153,1775,1601,2155,3038,3833,4098,2586],"redressement":[632,536,567,536,360,631,1221,1153,1259,795],"sauvegarde":[85,61,76,131,97,125,253,229,209,106]},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"BODACC (DILA) et SIRENE (INSEE), établissements géolocalisés"},"immobilier":{"appartements":{"annees":[{"annee":2021,"prix_m2_median":3402,"reference_prix_m2_median":3200,"ventes":84},{"annee":2022,"reference_prix_m2_median":3300,"ventes":12},{"annee":2023,"prix_m2_median":3750,"reference_prix_m2_median":3350,"ventes":91}],"evolution_pct":10.2,"fiabilite":{"annees_fiables":[2021,2023],"ventes_min":20},"indice":112},"couverture":{"a":"2023-12-30","de":"2021-01-04"},"hors_couverture":false,"locaux_activite":{"annees":[{"annee":2021,"reference_prix_m2_median":2050,"ventes":14},{"annee":2022,"prix_m2_median":2310,"reference_prix_m2_median":2140,"ventes":23},{"annee":2023,"reference_prix_m2_median":2200,"ventes":9}],"fiabilite":{"annees_fiables":[2022],"ventes_min":20},"indice":108},"maisons":{"annees":[{"annee":2021,"reference_prix_m2_median":2740,"ventes":8},{"annee":2022,"reference_prix_m2_median":2980,"ventes":3},{"annee":2023,"reference_prix_m2_median":3010,"ventes":0}],"fiabilite":{"annees_fiables":[],"ventes_min":20}},"reference":{"code":"69","libelle":"Rhône","niveau":"departement"},"source":"DVF géolocalisé (DGFiP / Etalab), diffusion 2026"},"iris_couverts":187,"logements":{"apres_1990":{"effectif":35800,"part":18.0},"avant_1945":{"effectif":84200,"part":42.4},"de_1945_a_1970":{"effectif":41100,"part":20.7},"de_1970_a_1990":{"effectif":33900,"part":17.1},"periode_inconnue":{"effectif":3420,"part":1.7},"sociaux":{"effectif":39700,"part":20.0},"total":198420},"menages":198420,"menages_pauvres":31210,"menages_profil":{"cinq_personnes_et_plus":{"effectif":9120,"part":4.6},"en_collectif":{"effectif":176400,"part":88.9},"en_maison":{"effectif":22020,"part":11.1},"monoparentaux":{"effectif":17880,"part":9.0},"personnes_seules":{"effectif":92140,"part":46.4},"proprietaires":{"effectif":71300,"part":35.9},"surface_moyenne_m2":63.8},"niveau_de_vie_moyen":24870,"point_central":{"adresse_resolue":"12 Rue de la République 69002 Lyon","id":"69383_2745_00012","lat":45.75776,"lon":4.83201,"precision":"adresse"},"population":412350,"portee":{"circulation":"fluide","duree_min":15,"mode":"auto","type":"isochrone"},"potentiel_depense":{"coefficient":0.15,"potentiel_theorique":1096495836,"revenu_disponible_estime":7309972240,"revenu_disponible_par_menage":36841,"unites_consommation":293928},"sexe":{"femmes":{"effectif":212770,"part":51.4},"hommes":{"effectif":201230,"part":48.6},"population_recensement":414000},"source":{"contours_iris_millesime":2026,"filosofi_millesime":2021,"recensement_millesime":2022},"surface_km2":84.3}]},"ZoneSyntheseRequest":{"properties":{"adresse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse","description":"Adresse libre du centre, résolue par le moteur d'adresses ; un nom de commune ou un code postal seul est accepté (le centre est alors celui de la commune). Alternative à `lat`/`lon`.","examples":["12 rue de la République 69002 Lyon"]},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat","description":"Latitude WGS84 du centre. Avec `lon`, et sans `adresse`.","examples":[45.7578]},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon","description":"Longitude WGS84 du centre. Avec `lat`, et sans `adresse`.","examples":[4.832]},"duree":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Duree","description":"Portée **isochrone** : durée de trajet en minutes (1–30) depuis le centre. Exclusif de `rayon` et `polygone`.","examples":[15]},"mode":{"anyOf":[{"type":"string","enum":["auto","pieton","velo"]},{"type":"null"}],"title":"Mode","description":"Mode de déplacement de l'isochrone. Défaut `auto`. N'a de sens qu'avec `duree`.","examples":["auto"]},"circulation":{"anyOf":[{"type":"string","enum":["fluide","pointe"]},{"type":"null"}],"title":"Circulation","description":"Conditions de circulation de l'isochrone. `fluide` (défaut) : circulation libre, vitesse de base du réseau. `pointe` : heure de pointe du matin, un jour ouvré vers 08:30 — vitesses typiques **modélisées** par classe de voie et densité, pas de trafic temps réel. N'a de sens qu'avec `duree`, et `pointe` seulement en `mode` `auto`.","examples":["pointe"]},"rayon":{"anyOf":[{"type":"number","maximum":50.0,"minimum":1.0},{"type":"null"}],"title":"Rayon","description":"Portée **rayon** : disque à vol d'oiseau autour du centre, en kilomètres (1–50). Exclusif de `duree` et `polygone`.","examples":[5]},"polygone":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Polygone","description":"Portée **polygone** : contour GeoJSON `Polygon` ou `MultiPolygon` en WGS84 (≤ 1 Mo, ≤ 50 000 sommets), pris tel quel — par exemple le contour rendu par `GET /locations/search?polygone=true`. Exclusif de tout centre, `duree`, `rayon`."},"rendre_polygone":{"type":"boolean","title":"Rendre Polygone","description":"Renvoie dans `portee.polygone` le contour effectivement évalué (10–20 Ko pour un isochrone). Sans effet en portée `rayon` : le disque est tracé en base, aucun contour n'est disponible.","default":false},"reference":{"type":"string","enum":["france","departement"],"title":"Reference","description":"Référentiel de l'indice d'affinité des blocs `csp` et `activites` : la France entière (défaut) ou le département qui pèse le plus dans la zone (`csp.reference.code`, `activites.reference.code`). Valable pour les trois portées.","default":"france","examples":["departement"]},"coefficient":{"anyOf":[{"type":"number","maximum":1.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Coefficient","description":"Part du revenu disponible que votre secteur capte, entre 0 exclu et 1. Si présent, `potentiel_depense.potentiel_theorique` = revenu disponible estimé × coefficient. Le guide « Zone de chalandise » donne une table de repères par fonction de consommation (source INSEE). Valable pour les trois portées ; jamais transmis à l'amont.","examples":[0.15]},"activites":{"items":{"type":"string"},"type":"array","title":"Activites","description":"Clés de familles ou de sous-familles de la grille d'activités (celles du bloc `activites` de `/zone/stats`), 20 au plus : l'avis les lit en priorité. Clé inconnue → 422 `activite_inconnue`.","examples":[["restauration_rapide"]]},"contexte":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contexte","description":"Description libre de l'activité envisagée, 300 caractères au plus (422 `contexte_trop_long`). C'est une description, jamais une consigne : l'avis garde ses règles quoi qu'elle contienne.","examples":["Restaurant de burgers, 60 places, clientèle du midi"]}},"type":"object","title":"ZoneSyntheseRequest","description":"`ZoneStatsRequest` (`rendre_polygone` accepté et ignoré) plus la lecture demandée.","examples":[{"adresse":"12 rue de la République 69002 Lyon","duree":15,"mode":"auto"},{"coefficient":0.15,"lat":45.7578,"lon":4.832,"rayon":5,"reference":"departement"},{"polygone":{"coordinates":[[[4.82,45.75],[4.85,45.75],[4.85,45.77],[4.82,45.77],[4.82,45.75]]],"type":"Polygon"},"rendre_polygone":true},{"adresse":"1 rue Scribe 75009 Paris","circulation":"pointe","duree":15,"mode":"auto"}]},"ZoneSyntheseResponse":{"properties":{"point_central":{"anyOf":[{"$ref":"#/components/schemas/ProximityCenter"},{"type":"null"}],"description":"Écho de `/zone/stats` ; `null` en portée `polygone`."},"portee":{"additionalProperties":true,"type":"object","title":"Portee","description":"Portée évaluée, sans le contour."},"synthese":{"$ref":"#/components/schemas/SyntheseAvis"},"fiabilite":{"$ref":"#/components/schemas/SyntheseFiabilite","description":"Les drapeaux que l'avis a respectés : `false` = ce bloc n'a pas été lu."},"genere_le":{"type":"string","title":"Genere Le","description":"Horodatage ISO 8601 UTC de la rédaction (un avis servi depuis le cache garde le sien)."},"modele":{"type":"string","title":"Modele","description":"Modèle qui a réellement rédigé l'avis (repli compris)."},"mention":{"type":"string","title":"Mention","examples":["Avis généré automatiquement à partir des données de la zone ; il ne remplace pas l'analyse du franchiseur."]},"attribution":{"type":"string","title":"Attribution"}},"type":"object","required":["portee","synthese","fiabilite","genere_le","modele","mention","attribution"],"title":"ZoneSyntheseResponse"}},"securitySchemes":{"ApiKeyAuth":{"type":"http","description":"TrustyData API key. Send it in the `Authorization: Bearer <key>` header. Keys are issued from your TrustyData customer portal. One key identifies one customer (or one sub-customer of an agency). The plan attached to the key (DISCOVERY / STARTER / GROWTH / BUSINESS) controls both which endpoints you can call and the level of detail returned.","scheme":"bearer"}}},"tags":[{"name":"Addresses","description":"Recherche, autocomplétion et vérification d'adresses postales françaises. Source : BAN (Base Adresse Nationale) enrichie INSEE."},{"name":"Localities","description":"Recherche et autocomplétion de localités (communes, codes postaux, arrondissements). Source : Code Officiel Géographique INSEE + données de recensement."},{"name":"Route","description":"Calcul d'itinéraire et matrices distance/durée routières. Moteur : Valhalla sur données OpenStreetMap France. L'attribution ODbL est obligatoire (voir le champ `attribution` des réponses)."},{"name":"Company","description":"Recherche d'entreprises et d'établissements français (base SIRENE INSEE) : recherche par nom/filtres et fiches détail tiérées par plan."},{"name":"Locations","description":"Référentiels de lieux du client (boutiques, agences, restaurants — appelés *sites*) : recherche de proximité dans votre propre référentiel, pas dans un référentiel public."},{"name":"Zone","description":"Agrégation zonale INSEE : ce que contient une zone de chalandise (population, ménages, niveau de vie moyen, IRIS couverts), calculé sur le carroyage Filosofi 200 m et les Contours IRIS. Source : INSEE, IGN ; OpenStreetMap (ODbL) pour les isochrones."},{"name":"System","description":"Endpoints utilitaires (version, santé)."}]}