API 3.1
Vi har ett REST API som låter registrerade applikationer att hämta data ifrån oss. Kontakta oss för att registrera en applikation
Varje förfrågan måste definiera ett applikations id.
Cache
API:et tar hänsyn till givet HTTP-fältet If-Modified-Since
och svarar med både fälten Last-Modified
och Expires
. Använd dessa värden för att validera föregående förfrågan.
Säkra förfrågningar
Vi rekommendera att använda https:// istället för http:// vid alla förfrågningar.
Svar
API:et har endast stöd för svar i JSON-format.
HTTP-fältet Access-Control-Allow-Origin
har värdet *
vid alla förfrågningar.
Applikation
Vid varje förfrågan måste ett applikations id skickas för att göra det möjligt att identifiera vem som göra förfrågan.
Det finns två sätt för att definiera applikationen.
Alternativ 1 (Rekommenderat)
Använd HTTP-huvudet Client
med applikationens id.
GET /api/3/provinces/ HTTP/1.1
Host: skolmaten.se
Client: <client id>
Alternativ 2
Använd client
som en URL-parameter med applikationens id.
GET /api/3/provinces/?client=<client id> HTTP/1.1
Host: skolmaten.se
Applikationsversion
Applikationsversion definieras likt Applikation. Alltså finns det två sätt att definiera applikationsversionen. Om ingen version specificeras används standardversionen.
Alternativ 1 (Rekommenderat)
Använd HTTP-huvudet ClientVersion
med applikationens id.
GET /api/3/provinces/ HTTP/1.1
Host: skolmaten.se
Client: <client id>
ClientVersion: <client version id>
Alternativ 2
Använd clientVersion
som en URL-parameter med versionens id.
GET /api/3/provinces/?client=<client id>&clientVersion=<client version id> HTTP/1.1
Host: skolmaten.se
Slutpunkter
Varje förfrågning skall görs till https://skolmaten.se/api/3/<endpoint>/
.
Följande slutpunkter finns tillgängliga:
- provinces/
- districts/
- schools/
- schools/nearby/
- menu/
provinces/
Används för att hämta tillgängliga län.
Exempel
GET /api/3/provinces/ HTTP/1.1
Host: skolmaten.se
Client: <client id>
HTTP/1.1 200 OK
Last-Modified: Mon, 07 Mar 2016 19:05:38 GMT
Expires: Mon, 31 Oct 2016 11:46:52 GMT
{
"provinces": [
{
"id": 5112734572085248,
"name": "Blekinge län"
},
{
"id": 5662940552232960,
"name": "Dalarnas län"
}
]
}
districts/
Används för att hämta tillgängliga kommuner i ett visst län.
URL-parametrar
Namn | Beskrivning |
---|---|
province |
Id på länet där kommunerna ska hämtas |
Exempel
GET /api/3/districts/?province=5112734572085248 HTTP/1.1
Host: skolmaten.se
Client: <client id>
HTTP/1.1 200 OK
Last-Modified: Mon, 07 Mar 2016 19:05:38 GMT
Expires: Mon, 31 Oct 2016 11:46:52 GMT
{
"districts": [
{
"id": 1478004,
"name": "Karlshamns kommun"
},
{
"id": 270002,
"name": "Karlskrona kommun"
}
],
"province": {
"id": 5112734572085248,
"name": "Blekinge län"
}
}
schools/
Används för att hämta tillgängliga skolor i ett visst län.
URL-parametrar
Namn | Beskrivning |
---|---|
district |
Id på kommunen där skolorna ska hämtas |
Exempel
GET /api/3/schools/?district=1478004 HTTP/1.1
Host: skolmaten.se
Client: <client id>
HTTP/1.1 200 OK
Last-Modified: Mon, 07 Mar 2016 19:05:38 GMT
Expires: Mon, 31 Oct 2016 11:46:52 GMT
{
"schools": [
{
"id": 5643700910686208,
"name": "Kv. Staren"
}
],
"district": {
"province": {
"id": 5112734572085248,
"name": "Blekinge län"
},
"id": 1478004,
"name": "Karlshamns kommun"
}
}
schools/nearby/
Används för att hämta tillgängliga skolor i närheten av en viss koordinat.
Notera att fältet userDistance
är i kilometer.
URL-parametrar
Namn | Beskrivning |
---|---|
latitude |
Latitud för koordinaten |
longitude |
Longitud för koordinaten |
Exempel
GET /api/3/schools/nearby/?latitude=57.7840241562&longitude=14.2806602478 HTTP/1.1
Host: skolmaten.se
Client: <client id>
HTTP/1.1 200 OK
{
"schools": [
{
"id": 5023781168873472,
"name": "Smedbyns förskola",
"userDistance": 0.0
},
{
"id": 44707002,
"name": "Björnens förskola",
"userDistance": 0.17934306455811086
}
]
}
menu/
Används för att hämta måltiden för en viss skola.
URL-parametrar
Namn | Beskrivning |
---|---|
school |
Id på skolan där måltiden serveras |
offset |
Från vilken vecka att hämta. (Standard: 0 ) |
limit |
Hur många veckor att hämta. (Standard: 1 ) |
year |
Vilket år att hämta ifrån |
week |
Vilken vecka på året att hämta ifrån |
Matsymboler
Matsymboler anges för varje måltid som ett id. Varje id representerar följande matsymbol:
Id | Matsymbol |
---|---|
1 |
Vegetariskt |
2 |
Glutenfritt |
3 |
Laktosfritt |
4 |
Fläsk |
5 |
Lokalproducerat |
6 |
Svenskproducerat |
7 |
EU-producerat |
8 |
Fisk |
9 |
Fågel |
10 |
Nöt |
11 |
Vilt |
12 |
KRAV |
13 |
Mjölkfritt |
14 |
Lagad från grunden |
15 |
asc |
16 |
Klimatsmart |
17 |
Ekologiskt |
18 |
EU-ekologiskt |
19 |
Gluten |
20 |
MSC |
21 |
Vegansk |
22 |
Sodexo Energizonen |
Exempel
GET /api/3/menu/?school=5643700910686208 HTTP/1.1
Host: skolmaten.se
Client: <client id>
HTTP/1.1 200 OK
Last-Modified: Mon, 07 Mar 2016 19:05:38 GMT
Expires: Mon, 31 Oct 2016 11:46:52 GMT
{
"weeks": [
{
"year": 2016,
"number": 46,
"days": [
{
"date": 1479081600,
"meals": [
{
"value": "Korvgryta, ris",
"attributes": []
},
{
"value": "Vegetarisk korvgryta, ris",
"attributes": [1]
}
]
},
{
"date": 1479168000,
"meals": [
{
"value": "Kycklingwok, matvete/ris",
"attributes": []
},
{
"value": "Bulgurpytt med bönor, kall sås",
"attributes": []
}
]
},
{
"date": 1479254400,
"items": [
"Köttbullar, tomatsås, makaroner",
"Minibouletter, sås, makaroner"
]
}
]
}
],
"school": {
"id": 4858239707512832,
"name": "Kv. Staren",
"URLName": "kv-staren",
"imageURL": "https://lh3.googleusercontent.com/...",
"district": {
"id": 3001,
"name": "Luleå kommun",
"URLName": "lulea-kommun",
"province": {
"id": 5742415700819968,
"name": "Norrbottens län",
"URLName": "norrbottens-lan"
}
}
},
"bulletins": [
{
"text": "Dagligen serveras råkost, knäckebröd, ..."
}
]
}