Skolmaten

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 Vegetariskt
2 Glutenfritt Glutenfritt
3 Laktosfritt Laktosfritt
4 Fläsk Fläsk
5 Lokalproducerat Lokalproducerat
6 Svenskproducerat Svenskproducerat
7 EU-producerat EU-producerat
8 Fisk Fisk
9 Fågel Fågel
10 Nöt Nöt
11 Vilt Vilt
12 KRAV KRAV
13 Mjölkfritt Mjölkfritt
14 Lagad från grunden Lagad från grunden
15 asc asc
16 Klimatsmart Klimatsmart
17 Ekologiskt Ekologiskt
18 EU-ekologiskt EU-ekologiskt
19 Gluten Gluten
20 MSC MSC
21 Vegansk Vegansk
22 Sodexo Energizonen 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, ..."
    }
  ]
}