{"id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","type":"API","name":"Zones d'activités en Loire-Atlantique","slug":"zones-dactivites-en-loire-atlantique","description":"Périmètre des zones d'activités complètes et en cours de commercialisation en Loire-Atlantique.","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":"https://data.loire-atlantique.fr/explore/dataset/224400028_zones-dactivites-en-loire-atlantique/","docs_url":"https://data.loire-atlantique.fr/explore/dataset/224400028_zones-dactivites-en-loire-atlantique/","repo_url":null,"status":"ACTIVE","verification_state":"VERIFIED","tags":[],"logo_url":"https://data.loire-atlantique.fr/assets/favicon?tstamp=161130671088","primary_source_url":"https://data.loire-atlantique.fr/explore/dataset/224400028_zones-dactivites-en-loire-atlantique/","extraction_confidence":"0.40","created_at":"2026-07-24T16:38:11.969Z","updated_at":"2026-10-22T02:58:07.402Z","last_verified_at":"2026-10-22T02:58:07.402Z","deprecated_at":null,"ranking_score":58,"last_ranked_at":"2026-10-11T20:32:15.271Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-10-11T20:07:15.420Z","popularity_score":"0.0000","maintenance_score":"0.7000","institution_id":"cfd9d481-96b6-47b5-b2b8-e6ee0dd20c33","institution_type":"REGION","country_code":"FR","official_confidence":40,"proof_summary":"40% - Official domain (loire-atlantique.fr)","source_seed_url":null,"is_public_sector":true,"published_at":"2026-07-25T07:54:00.000Z","geographic_scope":"LOCAL","name_en":"Business and Industrial Zones in Loire-Atlantique","description_en":"This API provides the boundaries of business and industrial activity zones (zones d'activités) in the Loire-Atlantique department, covering both fully developed zones and those currently being marketed for commercial or industrial use. It is published by the Département de Loire-Atlantique and offers geographic data useful for economic development planning, site selection, and local land-use analysis within the department. ​","native_lang":"fr","access_level":"direct","formats":["CSV"],"capability_tier":"live","trust_score":50.75,"merged_into_entry_id":null,"identity_key":"API|https://data.loire-atlantique.fr/explore/dataset/224400028_zones-dactivites-en-loire-atlantique|zones d'activités en loire-atlantique","upstream_ref":"data.loire-atlantique.fr:dataset:224400028_zones-dactivites-en-loire-atlantique","content_changed_at":null,"institution":null,"title_qualifier":null,"access":{"level":"direct","primary":{"kind":"download","label":"Export CSV","method":"GET","url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/exports/csv","format":"CSV","source":"query_example","runnable":true,"direct":true},"actions":[{"kind":"download","label":"Export CSV","method":"GET","url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/exports/csv","format":"CSV","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"List records","method":"GET","url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?limit=20","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"Select & filter","method":"GET","url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?select=num_za%2Cnomzae%2Ccom1&where=nomzae+is+not+null&limit=20","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"Run verified request","method":"GET","url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique","source":"probe","runnable":true},{"kind":"landing","label":"Read the docs","method":"GET","url":"https://data.loire-atlantique.fr/explore/dataset/224400028_zones-dactivites-en-loire-atlantique/","source":"docs","runnable":false}],"formats":["CSV"]},"maturity":{"entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","granularity":"entry","granularity_label":"One unit = one catalog entry. A PROXY for the SCOPE.md §4 ladder, which governs source families, not entries: a family with 400 entries moves this reading 400 times as much as a family with one. Never compare or combine with the source_family reading.","level":"executable","level_index":4,"level_label":"Executable","meaning":"Queries run through Commodity","counts_as_coverage":true,"blocked_by":null,"rungs":[{"level":"discovered","level_index":1,"label":"Discovered","meaning":"Source and metadata recorded","evidence":"membership of the named population the ladder is taken over","counts_as_coverage":false,"met":true,"reached":true,"criterion":"TRUE"},{"level":"verified","level_index":2,"label":"Verified","meaning":"Access tested successfully","evidence":"entries.verification_state = 'VERIFIED'","counts_as_coverage":false,"met":true,"reached":true,"criterion":"entries.verification_state = 'VERIFIED'"},{"level":"profiled","level_index":3,"label":"Profiled","meaning":"Schema, dimensions and licence understood","evidence":"a data profile with at least one field (entry_data_profiles.field_count > 0)","counts_as_coverage":false,"met":true,"reached":true,"criterion":"EXISTS (SELECT 1 FROM entry_data_profiles p WHERE p.entry_id = entries.id AND COALESCE(p.field_count, 0) > 0)"},{"level":"executable","level_index":4,"label":"Executable","meaning":"Queries run through Commodity","evidence":"entries.capability_tier = 'live' — today's proxy for \"queryable through us\"","counts_as_coverage":true,"met":true,"reached":true,"criterion":"entries.capability_tier = 'live'"},{"level":"joinable","level_index":5,"label":"Joinable","meaning":"Canonical identifiers and concepts mapped","evidence":"a field link to a canonical identifier whose sampled VALUES match its format","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_field_links efl WHERE efl.entry_id = entries.id AND efl.identifier_id IS NOT NULL AND efl.value_status = 'match')"},{"level":"reproducible","level_index":6,"label":"Reproducible","meaning":"Snapshots and transformation evidence retained","evidence":"at least one retained evidence manifest (migration 078)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM evidence_manifests em WHERE em.entry_id = entries.id)"},{"level":"guaranteed","level_index":7,"label":"Guaranteed","meaning":"Monitored against an operational reliability target","evidence":"an active reliability target with a named monitor (migration 096)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_reliability_targets rt WHERE rt.entry_id = entries.id AND rt.is_active = true)"}],"officialness":{"basis":"catalog_inherited","label":"Inherited from the upstream catalog: this item came from a trusted official government catalog, and that provenance — not per-item proof — is the warrant. Its own proof score is below 80 or it matched no registered institution (apps/worker/src/connectors/catalog/qualify-store.ts).","proof_confidence":40,"proven_threshold":80,"institution_id":"cfd9d481-96b6-47b5-b2b8-e6ee0dd20c33","definition":"CASE WHEN COALESCE(entries.is_public_sector, false) IS NOT TRUE THEN 'not_official' WHEN COALESCE(entries.official_confidence, 0) >= 80 AND entries.institution_id IS NOT NULL THEN 'per_item_proven' ELSE 'catalog_inherited' END"},"source_family":{"key":"data.loire-atlantique.fr","label":"One unit = one source family, approximated by the serving host of the entry's primary source URL (e.g. bdl.stat.gov.pl). A COMPUTED stand-in for the curated families of SCOPE.md §5, which no table holds yet. A family sits at the highest level any of its entries has reached, because a family is integrated to the depth of its deepest working integration. Never compare or combine with the entry reading."},"generated_at":"2026-10-22T23:13:55.961Z"},"api_details":{"id":"ce59a5e2-4c9b-42cc-9e8b-4d0f17f7223e","entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","base_url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique","openapi_url":null,"graphql_url":null,"api_version":null,"spec_format":null,"endpoints_count":null,"endpoints":[],"rate_limit_info":null,"free_tier_limits":null,"ping_url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique","created_at":"2026-07-24T16:38:12.134Z","updated_at":"2026-07-24T16:38:12.134Z"},"dataset_details":{"id":"f3aacd51-7617-4701-9531-30009347da8b","entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","upstream_issued":null,"upstream_modified":"2026-10-09T23:53:08.025Z","themes":[],"update_frequency":"irregular","temporal_start":null,"temporal_end":null,"spatial_coverage":null,"landing_page":null,"license_id":null,"license_raw":null,"has_documentation":false,"has_data_dictionary":false,"has_versioning":false,"source_portal":"opendatasoft","source_portal_url":"https://data.loire-atlantique.fr","created_at":"2026-07-24T16:40:02.750Z","updated_at":"2026-10-20T17:22:10.087Z","publisher":null,"publisher_url":null,"distributions":[],"license":null},"license":{"id":"lo-2.0","spdx_id":"etalab-2.0","name":"Licence Ouverte 2.0 (France / Etalab)","url":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","is_open":true,"is_redistributable":true,"requires_attribution":true,"category":"national","notes":null,"created_at":"2026-06-12T16:29:19.729Z"},"reuse":{"license_id":"lo-2.0","license_name":"Licence Ouverte 2.0 (France / Etalab)","license_url":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","commercial_use":{"status":"yes","value":true},"redistribution":{"status":"yes","value":true},"attribution_required":{"status":"yes","value":true},"share_alike":{"status":"no","value":false},"personal_data_warning":{"status":"yes","value":true},"cache_and_mirror":{"status":"yes","value":true},"undetermined":[],"basis":"licence_text","confidence":0.95,"confidence_tier":"high","source_text":"Texte de la licence - le reutilisateur est libre \"de la communiquer, la reproduire, la copier ; de l'adapter, la modifier, l'extraire et la transformer, notamment pour creer des Informations derivees ; de la diffuser, la redistribuer, la publier et la transmettre, de l'exploiter a titre commercial\". Seule obligation : \"mentionner la paternite de l'Information : sa source (a minima le nom du Concedant) et la date de la derniere mise a jour\". Le texte rappelle que le reutilisateur doit respecter \"le cadre legal relatif a la protection des donnees a caractere personnel\". Aucune clause de partage a l'identique n'est imposee.","source_url":"https://github.com/etalab/licence-ouverte/blob/master/LO.md","reviewed_at":null},"license_raw":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","latest_check":{"id":"97946c87-a5df-486c-b19d-8dbb8d8d6a20","entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","status":"VERIFIED","last_checked_at":"2026-10-22T02:58:07.170Z","p50_latency_ms":1540,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-07-25T08:07:01.560Z","updated_at":"2026-10-22T02:58:07.170Z","consecutive_successes":30,"probe_url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json; charset=utf-8","probe_succeeded_at":"2026-10-22T02:58:07.170Z"},"data_profile":{"id":"c943372e-7b78-40db-84b5-4177b3ccf413","entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","profile_source":"opendatasoft","profile_kind":"dataset","dataset_id":"224400028_zones-dactivites-en-loire-atlantique","fields":[{"name":"num_za","type":"int","label":"Identifiant","filterable":true,"description":null,"description_en":"Unique identifier of the business zone."},{"name":"nomzae","type":"text","label":"Nom","filterable":true,"description":null,"description_en":"Name of the business activity zone."},{"name":"com1","type":"text","label":"Commune","filterable":true,"description":null,"description_en":"Municipality where the zone is located."},{"name":"epci","type":"text","label":"Intercommunalité","filterable":true,"description":null,"description_en":"Intercommunal grouping (EPCI) the zone belongs to."},{"name":"surftot","type":"double","label":"Surface (ha)","filterable":true,"description":null,"description_en":"Total surface area of the zone, in hectares."},{"name":"geo_shape","type":"geo_shape","label":"Forme géographique","filterable":false,"description":null,"description_en":"Geographic polygon outlining the zone's boundary."},{"name":"geo_point_2d","type":"geo_point_2d","label":"Localisation","filterable":false,"description":null,"description_en":"Geographic coordinates (latitude and longitude) of the zone."}],"field_count":7,"sample_records":[{"com1":"La Chapelle-sur-Erdre","epci":"Nantes Métropole","nomzae":"Métairie Rouge","num_za":684,"surftot":16.9,"geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-1.5441486092645027,47.27509186458556],[-1.542577123791319,47.27462790971915],[-1.5422949327882187,47.27454374553229],[-1.5420273686770296,47.27448800290681],[-1.541445212015845,47.274323796270934],[-1.5411895864248262,47.274154096345285],[-1.5413862389272073,47.27353745680287],[-1.5426583614990326,47.27042031490204],[-1.5429856282058179,47.269448249258396],[-1.5440212774698918,47.26937681616836],[-1.5445049458222029,47.270542732508815],[-1.5445799146339605,47.270962575008745],[-1.5445216013681753,47.2711423249581],[-1.544877574579076,47.271292438680824],[-1.5451778019340876,47.27153564170753],[-1.54617560973769,47.27143399951754],[-1.5467925395819693,47.27340274127895],[-1.5467419353508176,47.273443501661006],[-1.5465778713829565,47.27388575115094],[-1.5465884860718877,47.27411694129939],[-1.5465186463631193,47.27426524606985],[-1.5463951497332056,47.27435803882496],[-1.5460064040173698,47.27450113408243],[-1.5457150231680585,47.27478594940235],[-1.5455295085854703,47.27502078957987],[-1.5454278493615592,47.27517526770525],[-1.5453092606154089,47.275247688332335],[-1.545048429701248,47.27532164836038],[-1.5448493984343998,47.27529606304605],[-1.5441486092645027,47.27509186458556]]]},"properties":{}},"geo_point_2d":{"lat":47.27274107983086,"lon":-1.5440139736643037}},{"com1":"La Chapelle-sur-Erdre","epci":"Nantes Métropole","nomzae":"Gesvrine","num_za":510,"surftot":26,"geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-1.5480355779030281,47.263229179122014],[-1.5477335050795198,47.263226562671],[-1.5472106469978062,47.26301524397091],[-1.546830781311158,47.26249941840989],[-1.5470365277771054,47.261880644186284],[-1.5484546330346332,47.26027620038014],[-1.5490490148101173,47.26063077917402],[-1.550558206270753,47.25901907664215],[-1.5505010263908099,47.258821214734034],[-1.551087569326026,47.258227050854316],[-1.5519932195585555,47.25813221708836],[-1.5529642762403177,47.25887945495082],[-1.5533821147637858,47.259377497964735],[-1.5537615977852208,47.26042499776709],[-1.5547594180910367,47.26169781193086],[-1.5542953036043892,47.26264084266978],[-1.5540658344564509,47.262641369415846],[-1.554553575994258,47.26378416785231],[-1.5540070611386356,47.2639849805174],[-1.5546374741899973,47.26483363908416],[-1.5543336423147047,47.26494378254031],[-1.5548500444666464,47.26573800990583],[-1.5534272454584648,47.26626881947627],[-1.5528424908783718,47.2655434878766],[-1.5528115140152758,47.26536971121491],[-1.552172004239406,47.26447973126638],[-1.552091111547391,47.264508934701],[-1.549779169900449,47.262096291432634],[-1.548920933719363,47.26256375811876],[-1.5480355779030281,47.263229179122014]]]},"properties":{}},"geo_point_2d":{"lat":47.26186248349156,"lon":-1.5515946710778925}},{"com1":"Saint-Mars-du-Désert","epci":"CC Erdre et Gesvres","nomzae":"Jacopière","num_za":559,"surftot":52.7,"geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-1.4803399725009114,47.33840318991728],[-1.4787467204019007,47.33755650918199],[-1.4781938710124913,47.33712735722887],[-1.4764868776336388,47.3385246258787],[-1.4743517215164297,47.341056320108706],[-1.473939284993011,47.34060219877779],[-1.473546497315537,47.340420563824665],[-1.473225712778071,47.340283856744996],[-1.4728270660024467,47.3401550966412],[-1.472575818278834,47.34011373808367],[-1.4700405416922804,47.341743404073014],[-1.4693945462155809,47.341433455167014],[-1.4689560096691021,47.341183721211735],[-1.46871808766792,47.34104113289441],[-1.4663517981297909,47.34014860429217],[-1.4655283824806034,47.3386204112055],[-1.4685128322838792,47.338428345589584],[-1.4683371114318007,47.3374447752793],[-1.4695420324410822,47.33744230778012],[-1.469973089024922,47.337459083014345],[-1.469898054202192,47.33716557655959],[-1.4697536938156823,47.33630896056267],[-1.4701111014803838,47.33627619123992],[-1.4709118733024367,47.336283184907124],[-1.471754911108731,47.33689530327],[-1.471785221265148,47.33697782108589],[-1.4739926441205515,47.33750351142878],[-1.4743508496744704,47.337611428002035],[-1.4758228622495813,47.33603591112625],[-1.4769338205081988,47.33463962791752],[-1.47807104457751,47.33217664321086],[-1.477848466888396,47.33101244451641],[-1.47945691397021,47.33119438063724],[-1.4797645769356682,47.33122953322063],[-1.480837662325438,47.33151931751846],[-1.4807568948547263,47.332764327402785],[-1.48097549636718,47.33351945092986],[-1.4811515114619398,47.33471928280572],[-1.4819699539603397,47.33577020808767],[-1.482421249110913,47.336883795275796],[-1.4811130949993536,47.33689327808406],[-1.4813206601485087,47.33835287693029],[-1.480734638111507,47.338382352158895],[-1.4803399725009114,47.33840318991728]]]},"properties":{}},"geo_point_2d":{"lat":47.337147027130854,"lon":-1.4749337124003707}},{"com1":"Herbignac / F rel","epci":"CAP Atlantique","nomzae":"Le Poteau","num_za":697,"surftot":14.3,"geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-2.299326028441455,47.5017558606689],[-2.300219099368282,47.50417927140169],[-2.300488777724978,47.50505735306257],[-2.300454005277167,47.50520743743454],[-2.3003778282840797,47.505339012973444],[-2.300240073319043,47.5055150853604],[-2.3001183637917637,47.5056075552015],[-2.2984133874531656,47.50620716480329],[-2.298143368844208,47.5063441419758],[-2.298033329361453,47.50636367748665],[-2.297631167101936,47.50645037352581],[-2.2976430716634897,47.50652074340289],[-2.2967733020168097,47.50685463189414],[-2.2965037678978866,47.506799146654814],[-2.296135515973226,47.50695471650342],[-2.2957241885513833,47.507136319388245],[-2.295541856754974,47.50711565717749],[-2.2946088948164545,47.50701367212509],[-2.2948442292685787,47.50598791615135],[-2.295347793480864,47.50595908243456],[-2.2954279900869716,47.50593870626219],[-2.29648695910884,47.506004477136905],[-2.296622900071927,47.5060131527643],[-2.2969142225160426,47.50598762181001],[-2.296940135527077,47.50594548293689],[-2.2969946771524024,47.50573685047689],[-2.296999844916976,47.505582491103596],[-2.297002004629157,47.505518007344534],[-2.2970768738832485,47.505384142848364],[-2.2977814893313635,47.504270151627736],[-2.2987117839658056,47.50278005743724],[-2.299326028441455,47.5017558606689]]]},"properties":{}},"geo_point_2d":{"lat":47.50501891235448,"lon":-2.2981684598061753}},{"com1":"Thouaré-sur-Loire","epci":"Nantes Métropole","nomzae":"Baudinière","num_za":239,"surftot":14.2,"geo_shape":{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-1.4377199882403067,47.28816241709265],[-1.437241277583132,47.287412376021805],[-1.4388492766638865,47.28665106558499],[-1.4393180569255037,47.28640508790532],[-1.4395631751111337,47.286634585578945],[-1.4396423725132994,47.286707563278796],[-1.439809737485198,47.286625061584495],[-1.439554869368465,47.286267050424065],[-1.439925088950894,47.28611376275198],[-1.4397905179400041,47.28592706489116],[-1.439733962698002,47.285769842717194],[-1.4397122820733794,47.28557965157327],[-1.4395534617513437,47.28532537241351],[-1.4397225309759996,47.28475529932652],[-1.4403771069935343,47.28461408140718],[-1.440797687801404,47.28514592277059],[-1.4412009152060605,47.28550848972802],[-1.4428536835345909,47.284831104896824],[-1.4429175205178832,47.28497452806208],[-1.443677446234612,47.284649864788065],[-1.443896601683975,47.28483015389443],[-1.4448153232549634,47.2844725820734],[-1.4449054759337827,47.28532630484688],[-1.444202249512475,47.28564104969799],[-1.4444504534390923,47.28690283028462],[-1.4423214183667366,47.28794943099719],[-1.4422466694516654,47.28797170289848],[-1.4420395001878514,47.28804684818206],[-1.4418468604821022,47.28808965969384],[-1.4405327350272816,47.28817791531682],[-1.4404025694696996,47.28818654747987],[-1.4402609310896268,47.28819938339551],[-1.4398365264723771,47.288214911336674],[-1.4377199882403067,47.28816241709265]]]},"properties":{}},"geo_point_2d":{"lat":47.286567319546144,"lon":-1.4413719890952796}}],"record_count":"407","data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?limit=20","curl":"curl -s 'https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?limit=20' -H 'Accept: application/json'","label":"List records","method":"GET","description":"First 20 records of the dataset as JSON."},{"url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?select=num_za%2Cnomzae%2Ccom1&where=nomzae+is+not+null&limit=20","curl":"curl -s 'https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/records?select=num_za%2Cnomzae%2Ccom1&where=nomzae+is+not+null&limit=20' -H 'Accept: application/json'","label":"Select & filter","method":"GET","description":"Project specific fields (num_za, nomzae, com1) and filter with ODSQL where clauses."},{"url":"https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/exports/csv","curl":"curl -sL 'https://data.loire-atlantique.fr/api/explore/v2.1/catalog/datasets/224400028_zones-dactivites-en-loire-atlantique/exports/csv' -o dataset.csv","label":"Export CSV","method":"GET","description":"Full dataset export as CSV (also available: json, parquet, xlsx)."}],"status":"ok","error_message":null,"profiled_at":"2026-10-20T17:22:08.913Z","run_id":"70fbdb63-1259-4524-a58b-9c9a5170fd06","created_at":"2026-07-24T16:40:02.272Z","updated_at":"2026-10-20T17:22:08.913Z","license_raw":"https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf","license_id":"lo-2.0","consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":true,"personal_data":{"status":"none","basis":"no_person_column_cited","grain":"none","allowed":true,"columns":{"direct_identifiers":[],"family_names":[],"given_names":[],"attributes":[],"unresolved_names":[],"measures":[],"entity_identifiers":[]},"publication":null,"publication_evidence":null,"notice":"personal data: no cited column names a natural person (the cited columns are all this reads)"}},"datasets":[],"limits":[{"id":"45ef463f-7d19-4662-bc3f-e425b312c2ed","entry_id":"5355bd50-0c8f-4265-945b-a2f486a36ec5","limit_type":"requests_per_day","value":"50000","unit":"requests","period":"day","scope":"per-ip","source_id":null,"claim_type":"measured","confidence":"0.90","observed_at":"2026-10-20T17:22:10.241Z"}],"source_access":{"status":"accessed_despite_disallow","host":"data.loire-atlantique.fr","requested_path_prefix":"/api/explore/","robots_url":"https://data.loire-atlantique.fr/robots.txt","user_agent_group":"*","robots_rule":"Disallow: /api/","robots_read_at":"2026-08-25T11:29:19.955Z","decision_ref":"owner decision 2026-08-22, recorded in docs/PROGRESS.md NEEDS-HUMAN: public-sector open-data portals whose purpose is machine access; the directive is an Opendatasoft vendor default reflecting no publisher intent. Concern raised and overruled; see the row.","note":"This answer is derived from a host whose robots.txt DISALLOWS the path Commodity requests, and Commodity requests it anyway under the decision named in `decision_ref`. The rule is quoted verbatim so you can read it yourself. Commodity does not send a user-agent it is not, so any `Allow` granted to a named crawler in that file is not claimed here."},"field_provenance_source_access":{"status":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"THIS PLATFORM’S READING OF ITS OWN CONDUCT: that it requests a path this host forbids. No publisher asserts it and none was asked to","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"host":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"the host Commodity addressed, lowercased and stripped of scheme and port by this platform so that one host has one row and one reading","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"requested_path_prefix":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"THE PATH THE VERDICT IS ABOUT, derived from the base URLs this platform stores for the host — not `/`, and not an assumed `/api/`. A verdict about a path we do not call would describe someone else’s traffic","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_url":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"where the file was fetched from — composed by this platform from the host, at the one location the protocol fixes, so it can be re-fetched and the reading disputed","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"user_agent_group":{"basis":"stored_sample","derived":false,"upstream_field":"the `User-agent` line the deciding rule sits under","transform":"the group heading that made the rule OURS, verbatim from the stored file. Where it is `*` the directive addresses everyone; a group naming another crawler was not applied, because Commodity does not send a user-agent it is not","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_rule":{"basis":"stored_sample","derived":false,"upstream_field":"the directive line of the matching group","transform":"THE PUBLISHER’S OWN LINE, QUOTED AND UNCUT, as read from robots.txt at the moment below and stored — not fetched for this request, and not part of this response’s payload. It is here so the verdict beside it can be checked rather than taken from us","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"robots_read_at":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"OUR CLOCK when the file was read, never a `Date` header the origin sent. It bounds how stale this reading may be: a publisher can have changed the file since","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"decision_ref":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"WHO DECIDED TO CALL IT ANYWAY, AND WHEN. Recorded by this platform and required by the database before the exception may exist at all, so it can never be anonymous","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}},"note":{"basis":"platform_computed","derived":true,"upstream_field":null,"transform":"this platform’s sentence explaining what the reader is holding. Written here, by us, and not a quotation of anybody","cells":{"rows":1,"delivered":1,"empty":0,"stringified":0,"truncated":0}}},"manifest":{"answer_sha256":"6996448618ed3471e37750affea48ea368b0d0e063fb661cf51a8fec45579429","answer_sha256_rule":"sha256 (hex, UTF-8) of JSON.stringify(this body) after deleting the keys listed in manifest.stamped_keys from manifest, and deleting manifest itself if it is then empty. The hash was computed before the stamp existed, so no field of the stamp is inside it.","stamped_keys":["answer_sha256","answer_sha256_rule","stamped_keys","row_count","row_count_basis","live","live_basis","created_at","created_at_basis","durable_citation"],"row_count":28,"row_count_basis":"Objects that are elements of a JSON array anywhere in this body, excluding manifest. Not a claim about which collection is the answer. Largest single collection: maturity.rungs[] (7 rows).","live":false,"live_basis":"This body was replayed from the worker edge cache (x-edge-cache: hit); the bytes, and therefore answer_sha256, are those of the execution that filled the cache.","created_at":"2026-10-22T23:15:08.068Z","created_at_basis":"When this response body was assembled, deliberately OUTSIDE the hashed bytes so the same answer hashes identically on every request. Not the upstream read time — that is provenance[].retrieved_at. A zone-cached replay carries the assembly time, not your receipt time.","durable_citation":"This manifest is produced at response time and is NOT stored. A durable, replayable citation is persisted only on an explicit cite: GET /api/v1/entries/{id-or-slug}/evidence, or the MCP cite_query tool. Both are entry-scoped, because evidence_manifests is entry-shaped; a domain answer spanning several sources has no single entry and cannot be persisted through that path."}}