Aller au contenu

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 :

GET /ait/embed/{municipality}?lang=fr   (ou lang=de ; défaut = locale applicative, repli fr)

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-Options retiré — neutralisé au cas où un reverse-proxy ajouterait un DENY/SAMEORIGIN. Sur navigateurs modernes, frame-ancestors pré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.