API Italo - SimoDax/Italo-API GitHub Wiki

Tutte le risposte e il corpo delle richieste dell'api sono in formato json, i campi di cui non sono riuscito a capire l'utilizzo sono stati omessi. Purtroppo sono meno intuitive delle API Trenitalia, alcune descrizioni dei campi sono un po' euristiche e frutto di trial and error. In ogni caso i messaggi di errore sono molto specifici e aiutano a capire eventuali campi mancanti o non validi

Login

Tutte le chiamate sono autenticate tramite un campo Signature nel body della richiesta, per ottenere tale stringa si usa:

POST: https://big.ntvspa.it/BIG/v7/Rest/SessionManager.svc/Login

Con i seguenti parametri:

(Chissà che azienda ha sviluppato il sistema)

Risposta

Oggetto con un solo campo, Signature, da passare alle richieste successive



Ricerca soluzioni

POST: https://big.ntvspa.it/BIG/v7/Rest/BookingManager.svc/GetAvailableTrains

Con il seguente oggetto nel corpo della richiesta:

Signature: il codice restituito dalla chiamata di login
SourceSystem: settatelo a 2
GetAvailableTrains:
(
    DepartureStation: sigla a 3 caratteri della stazione di partenza (vedi sotto)
    ArrivalStation: sigla a 3 caratteri della stazione di arrivo (vedi sotto)
    IntervalStartDateTime: inizio intervallo temporale di ricerca soluzioni, formato: "/Date(<timestamp in millisecondi>+0000)/"
    IntervalEndDateTime: fine intervallo temporale di ricerca soluzioni, formato come sopra
    AdultNumber: intero, numero di adulti per la ricerca
    ChildNumber: intero, numero di bambini (0-13 anni)
    InfantNumber: intero, numero di neonati (0-36 mesi)
    SeniorNumber: intero, numero di over 60 per la ricerca
    OverrideIntervalTimeRestriction: true, altrimenti le ricerche su intervalli temporali di svariate ore non vengono accettate
    CurrencyCode: stringa per indicare la valuta, "EUR" per gli euro
    IsGuest: legato al tipo di autenticazione, mettetelo true
    RoundTrip: se true cerca soluzioni A/R, ma richiede che vengano settati altri due campi per la finestra di ricerca del viaggio di ritorno, rispettivamente RoundTripIntervalStartDateTime e RoundTripIntervalEndDateTime
)

La conversione tra i nomi delle stazioni e le sigle è:

["Bologna Centrale" , "Brescia" , "Ferrara" , "Firenze S. M. Novella" , "Milano Centrale" , "Rho-Fiera Milano" , "Milano Rogoredo" , "Napoli Centrale" , "Padova" , "Reggio Emilia AV" , "Roma Termini" , "Roma Tiburtina" , "Salerno" , "Torino Porta Nuova" , "Torino Porta Susa" , "Venezia Mestre" , "Venezia S. Lucia" , "Verona Porta Nuova" , "Milano ( tutte le stazioni )" , "Roma ( tutte le stazioni )"]

["BC_" , "BSC" , "F__" , "SMN" , "MC_" , "RRO" , "RG_" , "NAC" , "PD_" , "AAV" , "RMT" , "RTB" , "SAL" , "TOP" , "OUE" , "VEM" , "VSL" , "VPN" , "MI0" , "RM0"]

Risposta

Oggetto con i seguenti campi:

JourneyDateMarkets: array di giorni in cui sono suddivise le soluzioni trovate
[
(
    DepartureDate: giorno di partenza, formato: "/Date(<timestamp in millisecondi>+<fuso in cui è espresso il timestamp>)/", occhio che pur essendo un timestamp è significativa solo la data
    Journeys: array di soluzioni per il dato giorno
    [
        (
            JourneySellKey: identificatore della soluzione
            Segments: array di treni che compongono la soluzione
            [
                (
                    STD: orario di partenza, formato: "/Date(<timestamp in millisecondi>+<fuso in cui è espresso il timestamp>)/"
                    STA: orario di arrivo, formato: "/Date(<timestamp in millisecondi>+<fuso in cui è espresso il timestamp>)/"
                    TrainNumber: stringa con numero del treno
                    NoStopTrain: booleano, indica se è un diretto
                    Legs: array di fermate, ogni elemento ha i campi DepartureStation, ArrivalStation, STD e STA
                    Fares: array di tariffe, vedi sotto
                )
            ]
        )
    ]
)]

L'oggetto Fares ha campi che si spiegano da soli perciò non li elenco, basta guardare una risposta per capirli. Fa eccezione ProductClass, che codifica la classe del servizio: S corrisponde a Smart, T a comforT, P a Prima e C a Club.

Query d'esempio

⚠️ **GitHub.com Fallback** ⚠️