Komma igång
Fråga: Jag har registrerat mig på sajten och fått en unik identifierare. Behövs något mer för att jag skall kunna använda reseplanerartjänsten?
Svar: För att du skall kunna börja använda just reseplanerartjänsten krävs f.n. en manuell aktivering av Västtrafik. Kontakta webmaster@vasttrafik.se för att meddela att du väntar på aktivering. Du kommer därefter meddelas via e-post så snart ditt konto har aktiverats. Övriga tjänster på labs.vasttrafik.se aktiveras automatiskt vid registrering, så dem kan du börja använda med en gång.
Fråga: Vilka resurser finns det för att få hjälp när jag kör fast?
Svar: Förutom referensdokumentationen av HAFAS REST API, som dokumenterar samtliga dess funktioner, finns det ett forum här på labs.vasttrafik.se där du kan ställa frågor till andra utvecklare. Västtrafik svarar på frågor i mån av tid och kan därför tyvärr inte garantera att återkomma inom en viss tid. Slutligen finns denna FAQ som det kan vara bra att ögna igenom innan du påbörjar utveckling mot API:t. Här finns en del svar av typen tips & trix.
Fråga: Hur hanteras nya versioner av API:t?
Svar: Tillägg som inte påverkar bakåtkompatibilitet kan förekomma utan att en ny version av API:t släpps. Applikationer måste därför kodas så att de kan hantera tillägg till svarsformaten utan att påverkas. Då en ny version släpps kommer tidigare version finnas i drift parallellt i ca ett år, för att applikationer skall kunna uppdateras. I nuläget är det inte fastställt exakt hur nya versioner kommer hanteras rent tekniskt, utan detta meddelas när det blir aktuellt.
Fråga: På vilka format kan jag få svar på mina frågor mot API:t?
Svar: Vi har strävat efter att följa "good practices" för REST API:er, och det är därför möjligt att få svar i XML-, JSON- och JSONP-format. XML-format är standardval, så för att välja JSON får du lägga till "...&format=json" i anropssträngen. Om du dessutom vill få svaret inbakat i ett JavaScriptfunktionsanrop (JSONP) lägger du till "...&format=json&jsonp=<funktionsnamn>", där <funktionsnamn> är namnet på den funktion som du har definierat för att ta hand om svaret.
Fråga: Finns det någon referensimplementation i t.ex. JavaScript som använder sig av REST-API:t?
Svar: Nej, det finns tyvärr inte i nuläget, även om det naturligtvis hade varit väldigt användbart. Men, om någon vänligt sinnad utvecklare vill dela med sig av källkoden till en egen implementation lägger vi mer än gärna upp länkar till den här på labs.vasttrafik.se (och ändrar i det här svaret).
Ställa resvägsfrågor
Fråga: Hur hämtar man fler sökresultat än de som returneras av en trip request?
Svar: För att hämta fler resultat senare än dem som presenterats, skapar du en ny sökfråga där du söker efter resor som avgår tidigast en minut efter den sista i resultatet du har sedan tidigare. På samma sätt skapar du resultat med tidigare resor genom att söka resor som ankommer senast en minut tidigare än den tidigast ankommande resan i resultatet du har sedan tidigare. Notera att det teoretiskt sett kan uppstå fall då en resa missas eller då det blir en dubblett, men detta är mycket ovanligt. Om en resa missas innebär det dock alltid att det finns ett likvärdigt, om ej fullständigt identiskt, alternativ i sökresultatet. Med andra ord missas aldrig "viktiga" resor.
Fråga: Hur använder jag de tillgänglighetsattribut (bänk, väderskydd, etc. på hållplatsen resp. rullstolsplats, m.m. på fordonen) som går att söka på i Västtrafiks egen implementation av reseplaneraren?
Svar: För närvarande finns inte tillgänglighetsattributen exponerade i REST-API:t, i och med att detta är så pass specialiserad funktionalitet. Men om det skulle visa sig vara stor efterfrågan på att kunna ställa in även dessa parametrar kan de komma att läggas till i efterhand.
Fråga: Ibland presenteras resvägsförslag i den publika reseplaneraren som antingen inte är möjliga att resa efter, på grund av förseningar som påverkar ett byte eller helt inställda turer. I dessa fall presenteras alltid en alternativ resa. Hur urskiljer jag dessa ogiltiga resp. alternativa resvägsförslag i svaret på en trip request?
Svar: De resvägsförslag som inte är möjliga att resa efter presenteras med attributet valid="false" till sin trip-tag (<trip valid="false">), medan alternativresan presenteras med ett alternative-attribut satt till true (<trip alternative="true">).
Fråga: Varför går det bara att specificera hållplatser och inte adresser som "res via"?
Svar: Den funktion som används för att skapa resor via en hållplats är primärt tänkt som en möjlighet att begränsa resvägssvaren till en viss typ av resor, och undvika andra. Det kan t.ex. röra sig om att man enbart vill se resor med en viss linje, och då kan denna funktion användas för att ange en viahållplats som enbart denna linje passerar. Resor som innehåller flera viaplatser, går via adresser och/eller låter resenären ange hur länge denne vill stanna vid en viaplats kan skapas genom att flera resvägsfrågor länkas samman. Se fråga som rör detta specifikt för en mer detaljerad beskrivning.
Fråga: Hur skapar jag en resvägsfråga som innehåller flera viaplatser, går via adresser och/eller låter resenären ange hur länge denne vill stanna vid en viapunkt?
Svar: Genom att länka samman flera separata resvägsfrågor kan du simulera detta beteende. Du skapar då delfrågor som går från resans startplats till viaplats 1, från viaplats n-1 till viaplats n för alla n från 2 till totalt antal viapunkter, etc. Avslutningsvis skapar du en fråga från den sista viapunkten till målpunkten för resan. I svaret får du sedan själv räkna fram total restid, antal byten, etc. utifrån informationen i de olika delfrågorna.