API del sistema Viaggiatreno

Fabrizio Tarizzo edited this page Jan 12, 2016 · 8 revisions

N.B. Queste note sono frutto di ricerca personale e non di fonti FS. Non se ne garantisce la completezza e la validità nel tempo.

Le API sono accessibili all'URL http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/NOMEFUNZIONE/PARAMETRI... (metodo HTTP GET)

Informazioni sull'andamento del treno

http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/andamentoTreno/IDStazionePartenza/numeroTreno (esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/andamentoTreno/S00228/4640)

Specificare la stazione di partenza è necessario perché, contrariamente a quanto si potrebbe pensare, il numero del treno non è univoco (ad esempio, con riferimento all'orario valido dal 15 dicembre 2015, il numero 88 identifica sia un regionale Brescia-Iseo sia un Eurocity Verona-Brennero-Monaco).

Il dato è disponibile solo per la giornata in corso (ciò signfica che non è possibile monitorare per intero il percorso dei treni notturni che viaggiano a cavallo della mezzanotte).

Output: JSON

Campi principali (gli orari sono espressi in timestamp UNIX con millisecondi e arrotondati ai 30 secondi per difetto, i ritardi sono in minuti interi arrotondati per eccesso):

  • idOrigine e idDestinazione: codici delle stazioni di partenza e destinazione
  • origine e destinazione: nomi delle stazioni di partenza e destinazione
  • orarioPartenza e orarioArrivo: orari programmati di partenza da origine e arrivo a destinazione in timestamp
  • compOrarioArrivo e compOrarioPartenza: orari programmati di partenza da origine e arrivo a destinazione in formato HH:MM
  • compRitardo e compRitardoAndamento: descrizione testuale del ritardo in varie lingue
  • oraUltimoRilevamento e stazioneUltimoRilevamento: orario in timestamp e nome della stazione dell'ultimo rilevamento, valgono rispettivamente null e "--" se il treno non è ancora partito oppure è stato soppresso
  • origineEstera, destinazioneEstera, oraPartenzaEstera, oraArrivoEstera: valorizzati solo per treni internazionali
  • tipoTreno e provvedimento codificano lo stato del treno:
    • tipoTreno vale 'PG' e provvedimento vale 0: treno regolare
    • tipoTreno vale 'ST' e provvedimento vale 1: treno soppresso (in questo caso l'array fermate ha lunghezza 0)
    • tipoTreno vale 'PP' oppure 'SI' oppure 'SF' e provvedimento vale 0 oppure 2: treno parzialmente soppresso (in questo caso uno o più elementi dell'array fermate hanno il campo actualFermataType uguale a 3)
    • tipoTreno vale 'DV' e provvedimento vale 3: treno deviato (da approfondire)
  • subTitle se il treno è parzialmente soppresso (tipoTreno in ('PP', 'SI', 'SF')) contiene una descrizione della tratta cancellata (ad esempio: Treno cancellato da NOVI LIGURE a ALESSANDRIA. Parte da ALESSANDRIA)
  • fermate: array, un elemento per ogni fermata, con i seguenti campi principali:
    • id e stazione: codice e nome della stazione
    • tipoFermata: 'P' (stazione di origine), 'A' (stazione di destinazione), 'F' (fermata intermedia)
    • ritardoArrivo e ritardoPartenza: ritardo in minuti di arrivo e partenza alla stazione, in minuti interi
    • ritardo: ritardo in partenza (se tipoFermata=='P') e di arrivo altrimenti, in minuti interi
    • arrivoReale e partenzaReale: orari effettivi di arrivo e partenza nella stazione, in timestamp
    • partenza_teorica e arrivo_teorico: orari teorici di partenza e arrivo nella stazione, in timestamp - sono presenti dal 12 marzo 2015
    • programmata: orario programmato di partenza (se tipoFermata=='P') e di arrivo altrimenti, in timestamp
    • programmataZero: di solito vale null, è valorizzato in caso di orario riprogrammato
    • actualFermataType:
      • 1 fermata regolare
      • 2 fermata non prevista
      • 3 fermata soppressa (se tipoTreno in ('PP', 'SI', 'SF'))
      • 0 Dato non disponibile (arrivoReale e/o partenzaReale valgono null, può essere perché il treno è ancora in viaggio e deve ancora arrivare nella fermata oppure perché il dato non è stato rilevato)
    • partenzaTeoricaZero e arrivoTeoricoZero: da approfondire

Esempio d'uso: https://github.com/bluviolin/TrainMonitor/blob/master/demo-trainstatus.py

http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/tratteCanvas/IDStazionePartenza/numeroTreno (esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/tratteCanvas/S04203/2544)

Output JSON simile all'array fermate visto sopra

Altre API

Ricerca delle soluzioni di viaggio tra due stazioni: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/soluzioniViaggioNew/IDStazionePartenza/IDStazioneArrivo/data-ora

Output: JSON

Gli ID delle stazioni vanno specificati senza il prefisso S e gli 0 iniziali (228 anziché S00228) e l'orario desiderato di partenza va indicato in formato YYYY-MM-DDTHH:MM:SS (esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/soluzioniViaggioNew/228/458/2015-01-26T00:00:00)


Ricavare la stazione di partenza dal numero del treno: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/numeroTreno
Output: stringa di una o più righe esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/4600 restituisce una riga
4600 - ASTI|4600-S00462 (4600 è il numero del treno, ASTI è il nome della stazione di partenza, S00462 il codice stazione da usare nelle chiamate ad andamentoTreno e alle altre API

Se il numero del treno non è univoco, l'output sarà di più righe nello stesso formato: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/88
88 - VERONA PORTA NUOVA|88-S02430
88 - BRESCIA|88-N00201


Elenco stazioni: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/STRINGA

Restituisce l'elenco delle stazioni che iniziano con STRINGA, formato NOME STAZIONE|CODICE (esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/T restituisce tutte le stazioni che iniziano per T, per prime le più importanti e le altre in ordine alfabetico)
esempio output:
TORINO P.NUOVA|S00219
TAGGIA ARMA|S04506
TAGLIACOZZO|S08522
TAINO ANGERA|S01122
TALAMONA|S01426
TALAMONE|S08002
TAORMINA|S12317
...

http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/cercaStazione/STRINGA restituisce le informazioni di autocompletaStazione arricchite e in formato JSON


Trovare la regione di appartenenza di una stazione: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/regione/IDStazione restituisce il codice numerico della regione (vedi elenco: https://github.com/sabas/trenitalia/blob/master/regioni.tsv)


Dettagli stazione, tra cui le coordinate geografiche: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/dettaglioStazione/IDStazione/CodiceRegione (occorre passare il codice regione ottenuto chiamando l'API precedente - esempio: http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/dettaglioStazione/S00462/3 - S00462=Asti, 3=Piemonte) output: JSON

In questo gist https://gist.github.com/bluviolin/b73a5166085ad2a4df9e ho messo un dump completo dei dati delle stazioni in formati csv e geojson


Per la descrizione di altre funzioni, vedi https://github.com/sabas/trenitalia e https://github.com/Razorphyn/Informazioni-Treni-Italiani

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.