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>/
/opendata/memo_memorie.json
l'archivio intero delle memorie in un solo file, rigenerato ogni notte — anche in .geojson e .csv; i percorsi a /opendata/memo_percorsi.json; di ogni file esiste la variante compressa aggiungendo .gz
/opendata/catalog.ttl
il catalogo DCAT-AP_IT: i metadati di questi dataset in Turtle, per i cataloghi di dati aperti che li raccolgono
/api/schema/
lo schema OpenAPI, generato dal codice che serve i dati: YAML, o JSON con ?format=json
/api/docs/
lo stesso schema da sfogliare: ogni rotta coi suoi parametri, gli esempi di risposta e un pulsante per provarla
Richieste
Gli elenchi arrivano dentro un involucro: 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 arriva da sola, senza involucro.
| 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 senza il consenso esplicito ricevuto da chi ha scattato la foto.
Se costruite qualcosa con questi dati ci fa piacere saperlo, 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 | Chi ha realizzato l'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 struttura 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.
| 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 l'algoritmo dei Sentieri Svizzeri. 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. | [] |