For snart 14 dage siden fik Folkets Ting et API. Lanceringen var en smule hektisk fordi jeg skulle til bryllup i Italien. Da Mikkel fra Version2 ringede svarede jeg på hans spørgsmål fra lufthavnen. Interessant nok ringede Mikkel også til Folketinget for at høre hvad de mener om det hele.
Fordi jeg havde travlt er det eneste eksempel alt for kompliceret. Her er nogle mindre komplicerede eksempler (ADVARSEL, XML):
- Alle politikere: http://folketsting.dk/data/service.svc/Politician/?apikey=7mRWp6WmTzsbAkMwvHxy
- Alle politikere, kun fornavn og efternavn: http://folketsting.dk/data/Service.svc/Politician/?$select=Firstname,Lastname&apikey=7mRWp6WmTzsbAkMwvHxy (“select” betyder at man kun vil have nogle bestemte kolonner)
- Ida Auken: http://folketsting.dk/data/Service.svc/Politician(1198)/?apikey=7mRWp6WmTzsbAkMwvHxy (Ida’s ID i Folkets Tings database er 1198 — det kunne man se i det første resultat)
- Alle §20-spørgsmål: http://folketsting.dk/data/Service.svc/P20Question/?apikey=7mRWp6WmTzsbAkMwvHxy
- Alle Ida Aukens §20-spørgsmål: http://folketsting.dk/data/Service.svc/Politician(1198)/?$expand=P20Question&apikey=7mRWp6WmTzsbAkMwvHxy (“expand” betyder at man får lov at se vedhæftede entiteter)
Husk at skifte apikey ud med din egen key hvis du bruger eksemplerne. Du kan få en helt gratis her. Som udgangspunkt leverer API’et atomar odata-xml, men det kan også lave json ved at proppe en “format=json” parameter i url’en.
Eksemplet med udvalgsrejserne er faktisk et eksempel på data i API’et som ikke kan ses på folketsting.dk. Der er andre eksempler på sådan hemmelig data som vi scraper men ikke eksponerer via websitet. F.eks. er alle lovene kategoriseret efter Folketingets kategori-system, men af datamodeleringsårsager hænger kategorierne ikke ordentligt sammen med lovene.
- Alle kategorierne: http://folketsting.dk/data/Service.svc/Category/?apikey=7mRWp6WmTzsbAkMwvHxy
- Alting i kategori forsvar: http://folketsting.dk/data/Service.svc/Category(89)/ItemCategory/?&apikey=7mRWp6WmTzsbAkMwvHxy (“ItemId” refererer i dette tilfælde til love)
- En af lovene i forsvarskategorien: http://folketsting.dk/data/Service.svc/Law(484)/?&apikey=7mRWp6WmTzsbAkMwvHxy
Der er forskellige andre problemer med den måde API’et er lavet på. F.eks. ville jeg rigtig gerne proppe billed-url’er i politiker-resultaterne, men som man kan se af dette Stackoverflow-spørgsmål er det ikke rigtigt muligt (svaret virker ikke). Hvis man kigger i Ida Aukens data kan man se at hun har tilknyttet et billede med id 287. Folkets Ting kan rendere et billede med det id sådan her: http://folketsting.dk/filer/billeder/idaauken/287. Folkets Ting kan endda skalere billedet for dig: http://folketsting.dk/filer/billeder/skaleret/idaauken/287?width=25&height=25. “idaauken” delen af url’en styrer hvad filen kommer til at hedde hvis den downloades (script-kiddies der forsøger at injekte bras kommer over knæet).
Jeg kommer i øvrigt snarest til snarest at sætte en maximum pagesize på 100 for at undgå at generere for store resultater. Ønsker man flere resultater kan de fås ved at page sig videre.
God fornøjelse med API’et og skriv endelig til friism+ftapi@gmail.com hvis der opstår problemer.
October 9th, 2010 at 9:18 pm
[...] Opdatering: Jeg har skrevet en blog-post med flere eksempler på brug af API’et. [...]
October 14th, 2010 at 9:39 am
Hej, jeg har forsøgt at anvende API’et vha. Linkpad (http://www.linqpad.net/), men det ser ud til at din apikey driller. Nogen erfaringer her? Jeg er aboslut ikke dreven i LINQ så jeg kan sagtens tage fejl, men det ville gøre det nemmere programmatisk at join’e med andre datakilder, hvis det spillede med LINQ.
Men tak iøvrigt for den store indsats – det skal der nok komme noget godt ud af.
Mvh,
Niels
October 14th, 2010 at 10:11 am
@Niels: Nej, det virker desværre ikke. Du kan bruge LinqPad til at udforske hvad for noget data API’et eksponerer, men ikke til at hente det. Jeg vil gerne understøtte LinqPad, og har bedt om forslag til løsning her: http://stackoverflow.com/questions/3931950/linqpad-odata-and-apikey-url-parameter
January 27th, 2011 at 9:15 am
kan ikke få hentet det ind i PowerPivot med Excel.. Får følgende fejl :
Errors in the high-level relational engine. The following exception occurred while the managed IDataReader interface was being used: The remote server returned an error: (500) Internal Server Error..
The operation has been cancelled.