API open data · v1
Open data
Memorie della Resistenza censite in Italia, percorsi, fotografie e trascrizioni delle epigrafi. JSON, sola lettura, nessuna autenticazione.
curl 'https://memo.anpi.it/api/opendata/v1/monument/?limit=1'
{
"count": 6226,
"next": "https://memo.anpi.it/api/opendata/v1/monument/?limit=1&offset=1",
"previous": null,
"results": [
{
"id": 1,
"title": "Monumento de La Speranza",
"longitude": 11.965897314155585,
"latitude": 43.5506308687373,
"type": "monumento",
"municipality": "Arezzo",
"municipality_id": 8105,
"text_list": ["soffermati e onora o viandante\r\nla memoria dei patriotti"],
"picture_list": [
{
"author": "Giovanni Baldini",
"year": 2007,
"url": "/media/fotografie/monumenti/875_monumento-de-la-speranza_1.jpg",
"license": "Creative Commons - Attribuzione 4.0"
}
],
"memo_url": "/monumenti/1/monumento-de-la-speranza/"
}
]
}
/api/opendata/v1/monument/<id>/
/api/opendata/v1/pathway/
i percorsi — una scheda sola a /api/opendata/v1/pathway/<id>/
/api/schema/
lo schema OpenAPI, generato dal codice che serve i dati: YAML, o JSON con ?format=json
Richieste
Gli elenchi arrivano dentro una busta: le schede stanno in results, count è il totale del pubblicato e non della pagina, next e previous sono null agli estremi. Seguire next finché non è null scarica tutto. La scheda singola invece è nuda, senza busta.
| parametro | di serie | effetto |
|---|---|---|
| limit | 10 | Quante schede per pagina, fino a 50. Oltre il tetto non è un errore: ?limit=500 risponde 200 con 50 schede. |
| offset | 0 | Da quale scheda partire. |
| lat, lon | — | Gradi decimali WGS84. Riordinano l'elenco dal più vicino al punto e riempiono distance_m. Vanno passati insieme. Sui percorsi la distanza è misurata dal tracciato, non dal punto di partenza. |
/api/opendata/v1/monument/?lat=45.07&lon=7.68&limit=20
Il limite di frequenza è di una richiesta al secondo per indirizzo IP, e vale per entrambe le rotte.
Errori
Codice HTTP appropriato e corpo JSON con la sola chiave detail.
| codice | causa | corpo |
|---|---|---|
| 400 | lat senza lon o viceversa; oppure valori fuori scala (lat da -90 a 90, lon da -180 a 180). |
{"detail": "lat e lon vanno passati insieme."} |
| 404 | Identificativo inesistente, o scheda non pubblica. | {"detail": "No Monument matches the given query."} |
| 429 | Superata la richiesta al secondo. La risposta porta Retry-After con i secondi da aspettare. |
{"detail": "La richiesta è stata limitata (throttled)…"} |
Licenze
I dati hanno doppia licenza, a scelta di chi li usa: CC BY 4.0 oppure ODbL 1.0.
Le fotografie no: ognuna porta la licenza scelta da chi l'ha scattata, nel campo license, e va rispettata una per una. Fra queste c'è Tutti i diritti riservati, che significa nessun riuso fuori da MEMO.
Se costruite qualcosa con questi dati scrivetecelo: memo@anpi.it
I campi di una memoria
| chiave | tipo | descrizione | esempio |
|---|---|---|---|
| id | int | Identificativo univoco. | 73 |
| title | string | Il nome della memoria. | Monumento ai fratelli Rosselli |
| year | int | null | Alias di inauguration_year, se avvalorato. |
2007 |
| inauguration_year | int | null | L'anno di inaugurazione, se conosciuto. | 2007 |
| longitude | float | null | Longitudine, EPSG:4326 (WGS84). Nulla nelle rarissime memorie di cui non si conosce la posizione. | 12.572634 |
| latitude | float | null | Latitudine, EPSG:4326 (WGS84). Vale quanto detto per la longitudine. | 41.870144 |
| distance_m | int | null | Distanza in metri dal punto chiesto con lat e lon; null se la richiesta non li indica. |
227 |
| monument_author | string | L'autore dell'opera, se indicato. | Giò Pomodoro |
| elevation | int | null | Altezza sul livello del mare, se conosciuta. | 562 |
| municipality | string | Nome del comune, vuoto se non disponibile. | Anghiari |
| municipality_id | int | null | Identificativo univoco del comune, se in Italia. | 8105 |
| province | string | Nome della provincia (o istituzione di pari livello), vuoto se non disponibile. | Torino |
| province_id | int | null | Identificativo univoco della provincia, se in Italia. | 45 |
| region | string | Nome della regione, vuoto se non disponibile. | Veneto |
| region_id | int | null | Identificativo univoco della regione, se in Italia. | 7 |
| nation | string | Nome dello stato, vuoto se non disponibile. | Italia |
| nation_id | int | null | Identificativo univoco dello stato. | 110 |
| type | string | Tipologia della memoria, in formato slug: lapide, cippo, monumento, sacrario, cimitero, croce, murale, albero, area, complesso, pietra_inciampo, incisioni_rupestri. Le parole sono unite dal trattino basso. |
lapide |
| memo_url | string | Indirizzo della scheda su MEMO, relativo alla radice del sito. | /monumenti/2/cippo-a-brocherel/ |
| text_list | list(string) | Le trascrizioni di ciò che è inciso, ciascuna come stringa con gli a capo indicati da \r\n. Lista vuota se non ce ne sono, e nessun metadato per ogni trascrizione. |
["AI CADUTI\r\nPER LA LIBERTÀ"] |
| is_still_existing | bool | Se questa memoria esiste ancora. | true |
| is_in_place | bool | Se questa memoria è nel luogo dove sono accaduti i fatti che ricorda. | true |
| is_complex | bool | Se questa memoria è un complesso monumentale. | false |
| in_complex | int | null | Se questa memoria è parte di un complesso monumentale, l'identificativo del complesso. | 42 |
| picture_list | list(obj) | Le fotografie, ognuna con i campi descritti più sotto. Lista vuota se non ce ne sono. | |
| author | string | Cognome e nome di chi ha censito la memoria. | Mario Rossi |
I campi di una fotografia
Sono gli oggetti dentro picture_list, uguali per le memorie e per i percorsi.
| chiave | tipo | descrizione | esempio |
|---|---|---|---|
| author | string | Cognome e nome di chi ha scattato la foto. Vuoto se ha chiesto di restare anonimo. | Mario Rossi |
| year | int | null | Anno dello scatto, se conosciuto. | 2022 |
| url | string | Indirizzo dell'immagine, relativo alla radice del sito. | /media/fotografie/monumenti/000_monumento.jpg |
| license | string | La licenza della fotografia, per esteso e in italiano — cosa diversa dalla licenza dei dati. Oggi si sceglie fra Creative Commons - Attribuzione 4.0, Pubblico dominio e Tutti i diritti riservati; su materiale più vecchio si incontrano altre licenze Creative Commons che allora si potevano scegliere. | Creative Commons - Attribuzione 4.0 |
I campi di un percorso
Gli itinerari della memoria, con la stessa licenza, la stessa busta di risposta, la stessa paginazione e lo stesso limite di una richiesta al secondo. Vale anche qui ?lat= e ?lon=, ma la distanza in distance_m è misurata dal tracciato, cioè dal punto in cui il percorso passa più vicino a voi — non da dove comincia, che per un anello di trenta chilometri direbbe tutt'altro.
La traccia non è dentro l'elenco: un percorso lungo sono decine di migliaia di punti, e spedirli dieci alla volta a chi sta cercando altro non ha senso. Ogni scheda porta invece in track_url i tre indirizzi da cui scaricarla nel formato che serve.
Le unità di misura stanno nel nome della chiave, perché un numero da solo non dice se sono metri o chilometri, minuti oppure ore. Le misure che si ricavano dalla traccia sono null finché non è stata calcolata.
| chiave | tipo | descrizione | esempio |
|---|---|---|---|
| id | int | Identificativo univoco, lo stesso che compare nell'indirizzo della pagina. | 1 |
| title | string | Nome del percorso. | L'anello dei partigiani di Ca' Malanca |
| description | string | Descrizione del percorso. | I luoghi che ospitarono la battaglia di Purocielo. |
| distance_m | int | null | Distanza in metri dal punto chiesto con lat e lon, misurata dal tracciato; null se la richiesta non li conteneva. |
2462 |
| length_m | int | null | Lunghezza del percorso, in metri. | 9072 |
| uphill_m | int | null | Dislivello complessivo in salita, in metri. | 702 |
| downhill_m | int | null | Dislivello complessivo in discesa, in metri. | 702 |
| min_elevation_m | int | null | Quota minima toccata, in metri sul livello del mare. | 334 |
| max_elevation_m | int | null | Quota massima toccata, in metri sul livello del mare. | 1036 |
| journey_time_min | int | null | Tempo di percorrenza stimato in minuti, con la regola d'esperienza del CAI. Sono tempi di marcia: le soste sono escluse. | 187 |
| reversed_journey_time_min | int | null | Lo stesso tempo percorrendo l'itinerario nel verso opposto: dove si sale molto più di quanto si scende, i due numeri sono diversi. | 151 |
| difficulty | string | Difficoltà nella scala CAI: T, E, EE o EEA. Stringa vuota se non è stata indicata, ed è il caso di circa un percorso su sette. |
E |
| difficulty_label | string | La stessa difficoltà per esteso, da mostrare a chi legge. Vuota quando lo è difficulty. |
Escursionistico |
| travel_modes | list(string) | Come il percorso è pensato per essere percorso: hiking, cycling, mountain_biking, horse_riding, car, boat, wheelchair, pets. |
["hiking"] |
| has_trail_signage | bool | null | Se sul terreno c'è segnaletica. null vuol dire che non lo sappiamo, ed è diverso da false. |
true |
| has_information_boards | bool | null | Se lungo il percorso ci sono cartelli informativi. Vale la stessa distinzione fra null e false. |
true |
| starting_point_name | string | Luogo di partenza, quando è stato censito. | Chiesa di Santa Maria in Purocielo |
| ending_point_name | string | Luogo di arrivo, quando è stato censito. | Ca' Malanca |
| stage_count | int | Numero di tappe. Zero vuol dire percorso di una tappa sola: chi è diviso in tappe ne ha almeno due. | 0 |
| municipality_list | list(obj) | I comuni attraversati, ciascuno con id e name. |
[{"id": 3801, "name": "Brisighella"}] |
| province_list | list(obj) | Le province attraversate: come i comuni, più abbreviation con la sigla. |
[{"id": 146, "name": "Ravenna", "abbreviation": "RA"}] |
| region_list | list(obj) | Le regioni attraversate, con id e name. |
[{"id": 8, "name": "Emilia-Romagna"}] |
| nation_list | list(obj) | Gli stati attraversati, con id e name. |
[{"id": 110, "name": "Italia"}] |
| year | int | null | Anno a cui risalgono le informazioni sul percorso. | 2021 |
| warnings | string | Avvertenze per chi lo percorre. | Alcuni tratti sono esposti. |
| url | string | Sito ufficiale del percorso, se ne ha uno. | https://www.camalanca.it/sentiero-dei-partigiani/ |
| memo_url | string | Indirizzo della pagina su MEMO, relativo alla radice del sito. | /percorsi/1/lanello-dei-partigiani-di-ca-malanca/ |
| track_url | obj | Gli indirizzi da cui scaricare la traccia, con le chiavi gpx, kml e geojson. |
{"gpx": "/percorsi/gpx/1/…", …} |
| picture_list | list(obj) | Le fotografie, con gli stessi campi di quelle delle memorie. | [] |
| author | string | Cognome e nome di chi ha inserito il percorso in MEMO. | Mario Rossi |