API

Svarets uppbyggnad


Svaret kan fås som XML eller JSON beroende på vilket suffix som används i URL:en i anropet.

I URLen definieras vilken version som ska användas och ändelsen (xml eller json) anger format på det returnerade svaret.
http://api.trafikinfo.trafikverket.se/v[version]/data.[format]

Tillgängliga URLer:
http://api.trafikinfo.trafikverket.se/v1.2/data.xml
http://api.trafikinfo.trafikverket.se/v1.2/data.json
http://api.trafikinfo.trafikverket.se/v1.1/data.xml
http://api.trafikinfo.trafikverket.se/v1.1/data.json
http://api.trafikinfo.trafikverket.se/v1/data.xml
http://api.trafikinfo.trafikverket.se/v1/data.json

Svaret har följande struktur.
Svaret omsluts av <RESPONSE/> vilken innehåller en eller flera <RESULT/> (ett för varje <QUERY/> som bifogades frågan). RESULT-elementet innehåller sedan inget, ett eller flera element som motsvarar ett dataobjekt. Namnet på elementen är samma som objektets datatyp.

Exempel XML:
<RESPONSE>
  <RESULT>
    <SomeObjectType>
      <Id>123<Id>
      <Name>Adam<Name>
    </SomeObjectType>
    <SomeObjectType>
      <Id>345<Id>
      <Name>Bertil<Name>
    </SomeObjectType>
  </RESULT>
</RESPONSE>
Exempel JSON:
{
   "RESPONSE":{
      "RESULT":[
         {
            "SomeObjectType":[
               {
                  "Id":"123",
                  "Name":"Adam"
               },
               {
                  "Id":"456",
                  "Name":"Bertil"
               }
            ]
         }
      ]
   }
}

Datafält som inte har något värde returneras ej. Datafälten kan returneras i olika ordning.

Notera att alla datum- och tidsangivelser är angivna i svensk lokal tid utan indikering av tidzon om inget annat anges.

<AdvertisedTimeAtLocation>2014-02-19T11:22:00</AdvertisedTimeAtLocation>
Fältet ModifiedTime är ett fält som alltid är i UTC vilket också definieras i angivelsen (den slutar på 'Z'). Att fältet är i UTC är för att undvika problem vid synkronisering av förändrat data vid övergång mellan sommar- och vintertid.
<ModifiedTime>2014-02-20T09:45:17.874Z</ModifiedTime>

Information

Vid sidan av returnerat data kan även övrig information från systemet returneras i ett INFO-element.

XML:

<RESPONSE>
  <RESULT>
    <INFO>
        <LASTMODIFIED datetime="2014-01-22T09:57:56.07Z"></LASTMODIFIED>
    </INFO>
  </RESULT>
</RESPONSE>
JSON:
{
    "RESPONSE":{
        "RESULT":[
            {
                "INFO": {
                  "LASTMODIFIED": {
                    "@datetime": "2014-01-22T09:57:56.07Z"
                  }
                }
            }
        ]
    }
}

Felmeddelanden

Om något med anropet går fel så returneras någon av följande HTTP statuskoder:

206Partial Content - svaret är för stort. Maximalt tillåten datamängd kommer at returneras följt av ERROR som meddelar att svaret inte är komplett.
401Unauthorized - misslyckad autentisering.
500Internal Server Error - internt serverfel.
501Not Implemented - servern stödjer inte en funktion som efterfrågades av klienten.

Svaret som returneras vid fel innehåller ett ERROR-element som beskriver felet.

Exempelsvar då frågan saknat LOGIN-element och statuskod 401 har returnerats.

XML:

<RESPONSE>
  <RESULT>
    <ERROR source="securitymanager">Missing the LOGIN element</ERROR>
  </RESULT>
</RESPONSE>
JSON:
{
    "RESPONSE":{
        "RESULT":[
            {
                "ERROR":{
                    "SOURCE":"securitymanager",
                    "MESSAGE":"Missing the LOGIN element"
                }
            }
        ]
    }
}

Meddelanden

Prenumerera på denna feed