Embed pubblico AIT¶
L'area AIT espone due pagine pubbliche che un comune integra in iframe sul proprio sito, per i suoi abitanti, senza l'app bat-id: una mappa interattiva in sola lettura e l'elenco delle messe all'inchiesta. Disaccoppiate da qualsiasi sessione AIT.
Sola lettura, nessun dato privato
Route pubbliche: nessuna autenticazione, nessuna sessione AIT, nessuna Policy. Nessuna zona di allerta, nessun identificativo bat-id, nessun dato privato. Nessuna scrittura possibile.
Endpoint¶
| Metodo | Route | Contenuto |
|---|---|---|
GET | /ait/embed/{municipality} | Mappa interattiva (forme geometriche del comune) |
GET | /ait/embed-alerts/{municipality} | Elenco delle messe all'inchiesta (avvisi BO) |
{municipality} = identificativo del comune (route-model binding). Lingua opzionale sulla mappa:
GET /ait/embed/{municipality}?lang=fr (o lang=de ; predefinito = locale dell'applicazione, ripiego fr)
Mappa interattiva — /ait/embed/{municipality}¶
Diffonde le forme geometriche pubblicate dal comune.
- Payload per forma: titolo, informazione, colore, pubblici di destinazione, pittogrammi, limiti di validità (
valid_from,valid_until). - Fascia temporale (
past/present/future) calcolata lato server; filtro per periodo applicato lato client. - Filtri client sui pubblici di destinazione e sui pittogrammi effettivamente presenti.
- Geometrie servite in GeoJSON (
FeatureCollection).
Solo forme valide
Il server espone unicamente forme destinate alla diffusione pubblica. Nessuna zona di allerta né dato nominativo nel payload.
Elenco degli avvisi — /ait/embed-alerts/{municipality}¶
Avvisi del Bollettino ufficiale del comune (fino a 300, dai più recenti), senza mappa. Per voce: data, anzianità in giorni, particelle interessate, rubrica, titolo, fonte, link al PDF. Menzione discreta di bat-id che incoraggia la geolocalizzazione. Attiva per impostazione predefinita per tutti i comuni.
Integrazione iframe¶
Header configurati solo per queste due route:
Content-Security-Policy: frame-ancestors *— consente l'integrazione da parte di qualsiasi sito comunale di terze parti.X-Frame-Optionsrimosso — neutralizzato nel caso in cui un reverse proxy aggiunga unDENY/SAMEORIGIN. Sui browser moderni prevaleframe-ancestors; entrambi i casi sono coperti.
Perimetro degli header
Limitati alle due route di embed. Nessun middleware globale di header viene toccato.
Esempio 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>
Per l'elenco degli avvisi, sostituire il percorso con /ait/embed-alerts/{ID_COMMUNE}.
Buone pratiche
loading="lazy" + contenitore con rapporto fisso per evitare lo spostamento del layout. Il dominio dipende dall'ambiente (demo / produzione) — verificare l'URL esatto nell'area AIT.