OData API
Gebruik de OData API voor het opvragen van data met een zelfopgestelde zoekvraag in de vorm van een URL met parameters. De OData API levert de data in het machineleesbare bestandsformaat JSON.
Inhoud
Locatie en versie
Datamodel, entiteiten en attributen
Het datamodel dat gebruikt wordt in de OData API is gelijk aan het informatiemodel van het Gegevensmagazijn. Het informatiemodel geeft een overzicht van alle entiteitsoorten die opgevraagd kunnen worden middels de OData API en hun onderlinge relaties. Op de detailpagina's van de entiteitsoorten is te zien welke attributen een entiteit van een bepaalde entiteitsoort heeft en worden voorbeelden gegeven.
Ga naar de documentatiepagina over het informatiemodel
Opstellen van een query
Het opstellen van een query bestaat uit het kiezen van een entiteitsoort als beginpunt en het toevoegen van functies met argumenten om zo tot de gewenste resultaten te komen. Wanneer er geen functies toegevoegd worden aan een query zullen alle entiteiten van een entiteitsoort getoond worden.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Document |
Alle entiteiten van de entiteitsoort Document |
Om de data van een specifieke entiteit te tonen kan de waarde van het attribuut id gebruikt worden.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Document(7a9b77f1-d230-4 a00-9856-2f0f8e967e62) |
Specifieke entiteit van de entiteitsoort Document |
Wanneer een specifieke entiteit een achterliggend bestand heeft, kan deze worden opgehaald door /resource aan de query toe te voegen.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Document(7a9b77f1-d230-4 a00-9856-2f0f8e967e62)/resource |
Bestand behorende bij een specifieke entiteit van de entiteitsoort Document |
Bekijk ook de documentatie op de website van OData voor meer informatie over het opstellen van queries.
Ga naar de officiële documentatie van OData
Toevoegen van functies
Om functies toe te voegen aan een query dient een ? toegevoegd te worden achter de entiteitsoort of de specifieke entiteit die als beginpunt is gekozen. Ieder daaropvolgende functie dient te beginnen met &, en de argumenten van een functie komen achter een =.
Filteren op attributen met $filter
De functie $filter maakt het mogelijk om de resultaten van een query te filteren op basis van de waardes van attributen. In de argumenten van $filter kunnen vergelijkingsoperatoren (eq, ne, gt, lt, ge, le) en Booleaanse operatoren (and, or, not) gebruikt worden om de resultaten te vernauwen of verruimen. Het is aan te raden om altijd te filteren op entiteiten die niet zijn verwijderd daar verwijderde entiteiten als placeholder in het Gegevensmagazijn blijven bestaan om wijzigingen te kunnen herleiden.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Persoon?$filter=Verwijderd eq false and (Functie eq 'Eerste Kamerlid' or Functie eq 'Tweede Kamerlid') |
Alle entiteiten van de entiteitsoort Persoon waarvan de waarde van het attribuut Functie gelijk is aan Eerste Kamerlid of Tweede Kamerlid |
Met de operatoren startswith(), endswith() en contains() als argument van de functie $filter kan op gedeeltes van de waarde van een bepaald attribuut gefilterd worden.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Persoon?$filter=Verwijderd eq false and(startswith(Roepnaam, 'd') or endswith(Roepnaam, 'd')) |
Alle entiteiten van de entiteitsoort Persoon waarvan de waarde van het attribuut Roepnaam begint of eindigt met een 'd' |
Voor het filteren met datums in argumenten van de functie $filter zijn er de operatoren second(), minute(), day(), hour(), month() en year().
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Persoon?$filter=Verwijderd eq false and year(Geboortedatum) le 1850 |
Alle entiteiten van de entiteitsoort Persoon waarvan de waarde van het attribuut Geboortedatum kleiner dan of gelijk is aan het jaartal 1850 |
Als een entiteit een relatie heeft met entiteiten van een andere entiteitsoort, kan de oorspronkelijke entiteit gefilterd worden op basis van de waardes van attributen van de gerelateerde entiteitsoort. Bij op-één-relaties kan er gefilterd worden door in de functie $filter met een / te verwijzen naar de gerelateerde entiteitsoort en het attribuut.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/FractieZetelVacature?$filter= Verwijderd eq false and TotEnMet eq null and Fractiezetel/ Fractie/DatumInactief eq null |
Alle entiteiten van de entiteitsoort FractieZetelVacature waarvan de waarde van het attribuut TotEnMet gelijk is aan null en de waarde van het attribuut DatumInactief van de via entiteiten van de entiteitsoort FractieZetel gerelateerde entiteiten van de entiteitsoort Fractie gelijk is aan null (i.e. alle actieve vacatures voor vacante zetels in de Tweede Kamer) |
Bij op-veel-relaties kan er gefilterd worden door in de functie $filter gebruik te maken van de operatoren any() en all(). De operator any() dient gebruikt te worden wanneer één van de gerelateerde entiteiten door de filter heen moet komen om een entiteit in de resultaten te laten zien.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Persoon?$filter=Verwijderd eq false and FractieZetelPersoon/any(a:a/ TotEnMet eq null) |
Alle entiteiten van de entiteitsoort Persoon die niet zijn verwijderd waarvan de waarde van het attribuut TotEnMet van één van de gerelateerde entiteiten van de entiteitsoort FractieZetel Persoon gelijk is aan null (i.e. alle actieve Tweede Kamerleden) |
De operator all() dient gebruikt te worden wanneer alle gerelateerde entiteiten door de filter heen moeten komen om een entiteit in de resultaten te laten zien.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Persoon?$filter=Verwijderd eq false and PersoonNevenfunctie/any (a:a/Verwijderd eq false) and PersoonnevenFunctie/all(b:b/ VergoedingSoort ne 'Onbezoldigd') |
Alle entiteiten van de entiteitsoort Persoon die gerelateerde entiteiten van de entiteitsoort PersoonNevenfunctie hebben waarvan de waarde van het attribuut VergoedingSoort niet altijd gelijk is aan Onbezoldigd |
Attributen van resultaten beperken met $select
De functie $select maakt het mogelijk om te kiezen welke attributen van een entiteit in de resultaten getoond worden. Deze functie kan onder andere ingezet worden om de grootte van de resultaten te beperken daar standaard alle attributen getoond worden.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Commissie?$filter= Verwijderd eq false&$select=NaamNL, Afkorting |
Alle entiteiten van de entiteitsoort Commissie met alleen de attributen NaamNL en Afkorting zichtbaar |
Gerelateerde entiteiten ophalen met $expand
De functie $expand maakt het mogelijk om bij een entiteit alle gerelateerde entiteiten van een andere entiteitsoort te tonen in de resultaten. Het is mogelijk om binnen een $expand door middel van ( ) functies toe te passen op de resultaten van de $expand. Om meerdere functies toe te passen op de resultaten van een $expand dient een ; gebruikt te worden in plaats van een &.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Zaak?$filter=verwijderd eq false and Soort eq'Motie'&$expand= ZaakActor($filter=relatie eq 'Indiener') |
Alle entiteiten van de entiteitsoort Zaak waarvan de waarde van het attribuut Soort gelijk is aan Motie met de bijbehorende entiteiten van de entiteitsoort ZaakActor waarvan de waarde van het attribuut Relatie gelijk is aan Indiener |
Resultaten overslaan met $skip
De functie $skip maakt het mogelijk om een bepaald aantal resultaten over te slaan. Om de belasting van individuele queries op het Gegevensmagazijn te minimaliseren worden standaard maximaal 250 resultaten tegelijkertijd weergegeven. Dit geldt ook voor het aantal entiteiten dat met de functie $expand opgehaald kan worden. Wanneer een query meer dan 250 resultaten geeft staat er onderaan de pagina een query die leidt naar de volgende pagina.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/DocumentVersie?$filter= Verwijderd eq false&$skip=250 |
Alle entiteiten van de entiteitsoort Documentversie op de eerste 250 na (i.e. pagina 2 van de resultaten) |
Resultaten beperken met $top
De functie $top maakt het mogelijk om het aantal resultaten te beperken.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Reservering?$top=25 |
De eerste 25 entiteiten van de entiteitsoort Reservering |
Resultaten sorteren met $orderby
De functie $orderby maakt het mogelijk om de resultaten te sorteren op basis van de waarde van een attribuut. De argumenten asc (oplopend) en desc (aflopend) kunnen gebruikt worden om de volgorde te bepalen.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Activiteit?$filter=Verwijderd eq false&$expand=Agendapunt($orderby= Volgorde asc) |
Alle entiteiten van de entiteitsoort Activiteit met de bijbehorende entiteiten van de entiteitsoort Agendapunt oplopend gesorteerd op de waarde van het attribuut Volgorde |
Resultaten tellen met $count
De functie $count maakt het mogelijk om het totaal aantal resultaten te weergeven. De argumenten van de functies $skip en $top worden hierbij genegeerd.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/PersoonNevenfunctie?$filter =Verwijderd eq false&$count=true |
Alle entiteiten van de entiteitsoort PersoonNevenfunctie die niet verwijderd zijn met het totaal aantal resultaten |
Het metadataniveau bepalen met $format
De functie $format maakt het mogelijk om in te stellen hoeveel metadata van entiteiten getoond wordt. Er zijn drie metadataniveaus beschikbaar: none, minimal en full. De extra metadata helpen bij het beter begrijpen van een entiteitsoort (beschikbare argumenten voor de functie $expand, achterliggende bestanden, etc.). In productie is het aan te raden om gebruik te maken van het metadataniveau none om de grootte van de resultaten te beperken.
Voorbeeld | Resultaat |
---|---|
https://gegevensmagazijn.tweedekamer.nl/ OData/v4/2.0/Fractie?$filter=Verwijderd eq false&$format=application/json;odata. metadata=full |
Alle entiteiten van de entiteitsoort Fractie die niet verwijderd zijn met de volledige metadata |
Nog vragen? Kijk bij de veelgestelde vragen of het antwoord erop er al bijstaat.