Vai al contenuto

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-Options rimosso — neutralizzato nel caso in cui un reverse proxy aggiunga un DENY/SAMEORIGIN. Sui browser moderni prevale frame-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.