Embed public AIT¶
L'espace AIT expose deux pages publiques qu'une commune intègre en iframe sur son propre site, pour ses habitants, sans l'app bat-id : une carte interactive en lecture seule et la liste des mises à l'enquête. Découplées de toute session AIT.
Lecture seule, aucune donnée privée
Routes publiques : pas d'authentification, pas de session AIT, pas de Policy. Aucune zone d'alerte, aucun identifiant bat-id, aucune donnée privée. Aucune écriture possible.
Endpoints¶
| Méthode | Route | Contenu |
|---|---|---|
GET | /ait/embed/{municipality} | Carte interactive (formes géométriques de la commune) |
GET | /ait/embed-alerts/{municipality} | Liste des mises à l'enquête (annonces BO) |
{municipality} = identifiant de la commune (route-model binding). Langue optionnelle sur la carte :
Carte interactive — /ait/embed/{municipality}¶
Diffuse les formes géométriques publiées par la commune.
- Payload par forme : titre, information, couleur, publics cibles, pictogrammes, bornes de validité (
valid_from,valid_until). - Tranche temporelle (
past/present/future) calculée côté serveur ; filtre par période appliqué côté client. - Filtres client sur les publics cibles et pictogrammes réellement présents.
- Géométries servies en GeoJSON (
FeatureCollection).
Formes valides uniquement
Le serveur n'expose que des formes destinées à la diffusion publique. Aucune zone d'alerte ni donnée nominative dans le payload.
Liste des alertes — /ait/embed-alerts/{municipality}¶
Annonces du Bulletin officiel de la commune (jusqu'à 300, les plus récentes d'abord), sans carte. Par entrée : date, ancienneté en jours, parcelles concernées, rubrique, titre, source, lien vers le PDF. Mention bat-id sobre incitant à la géolocalisation. Active par défaut pour toutes les communes.
Intégration iframe¶
En-têtes configurés pour ces deux routes uniquement :
Content-Security-Policy: frame-ancestors *— autorise l'intégration par tout site communal tiers.X-Frame-Optionsretiré — neutralisé au cas où un reverse-proxy ajouterait unDENY/SAMEORIGIN. Sur navigateurs modernes,frame-ancestorsprévaut ; les deux sont couverts.
Périmètre des en-têtes
Limités aux deux routes d'embed. Aucun middleware global de headers n'est touché.
Exemple responsive¶
<div style="position:relative; width:100%; padding-top:62.5%;">
<iframe
src="https://demo.bat-id.ch/ait/embed/{ID_COMMUNE}?lang=fr"
title="Carte des mises à l'enquête"
loading="lazy"
style="position:absolute; inset:0; width:100%; height:100%; border:0;"
referrerpolicy="no-referrer">
</iframe>
</div>
Pour la liste des alertes, remplacer le chemin par /ait/embed-alerts/{ID_COMMUNE}.
Bonnes pratiques
loading="lazy" + conteneur à ratio fixe pour éviter le décalage de mise en page. Le domaine dépend de l'environnement (démo / production) — vérifier l'URL exacte côté espace AIT.