The server is owned by the Dutch parlement. All parlement data, motions, documentation, etc. is available via an OpenAPI interface. It’s a complex datamodel, I’m using this datamodel to experiment how my GTP would implement an execution plan when asking information using multiple entities with their relationships.
So the example JSON scheme includes 2 paths to 1) /Persoon (Dutch for Person) and 2) /Fractie (Dutch for Group / Party).
So the question “Who is Geert Wilders?” (the politician who won the elections last week) will result into the error. But the question "Give information about the political party ‘Partij voor de Dieren’ will execute and return the correct answers from the /Fractie path.
The documentation about the OpenAPI interface can be found here https://opendata.tweedekamer.nl/documentatie/odata-api The documentation is in Dutch, a translator is your friend.
{
"openapi": "3.1.0",
"info": {
"title": "Politics API",
"description": "API for accessing data from gegevensmagazijn.tweedekamer.nl",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://gegevensmagazijn.tweedekamer.nl/OData/v4/2.0"
}
],
"paths": {
"/Fractie": {
"get": {
"operationId": "getFractieData",
"parameters": [
{
"name": "Nummer",
"in": "query",
"required": false,
"description": "Filter factions by number",
"schema": {
"type": "integer"
}
},
{
"name": "Afkorting",
"in": "query",
"required": false,
"description": "Filter factions by abbreviation",
"schema": {
"type": "string"
}
},
{
"name": "NaamNL",
"in": "query",
"required": false,
"description": "Filter factions by Dutch name",
"schema": {
"type": "string"
}
},
{
"name": "NaamEN",
"in": "query",
"required": false,
"description": "Filter factions by English name",
"schema": {
"type": "string"
}
},
{
"name": "AantalZetels",
"in": "query",
"required": false,
"description": "Filter factions by number of seats",
"schema": {
"type": "integer"
}
},
{
"name": "AantalStemmen",
"in": "query",
"required": false,
"description": "Filter factions by number of votes",
"schema": {
"type": "integer"
}
},
{
"name": "DatumActief",
"in": "query",
"required": false,
"description": "Filter factions by active date",
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "DatumInactief",
"in": "query",
"required": false,
"description": "Filter factions by inactive date",
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "Successful response"
}
}
}
},
"/Persoon": {
"get": {
"operationId": "getPersoonData",
"parameters": [
{
"name": "Id",
"in": "query",
"required": false,
"description": "Filter persons by ID",
"schema": {
"type": "string"
}
},
{
"name": "Nummer",
"in": "query",
"required": false,
"description": "Filter persons by Nummer",
"schema": {
"type": "integer"
}
},
{
"name": "Titels",
"in": "query",
"required": false,
"description": "Filter persons by Titels",
"schema": {
"type": "string"
}
},
{
"name": "Initialen",
"in": "query",
"required": false,
"description": "Filter persons by Initialen",
"schema": {
"type": "string"
}
},
{
"name": "Tussenvoegsel",
"in": "query",
"required": false,
"description": "Filter persons by Tussenvoegsel",
"schema": {
"type": "string"
}
},
{
"name": "Achternaam",
"in": "query",
"required": false,
"description": "Filter persons by last name",
"schema": {
"type": "string"
}
},
{
"name": "Voornamen",
"in": "query",
"required": false,
"description": "Filter persons by Voornamen",
"schema": {
"type": "string"
}
},
{
"name": "Roepnaam",
"in": "query",
"required": false,
"description": "Filter persons by Roepnaam",
"schema": {
"type": "string"
}
},
{
"name": "Geslacht",
"in": "query",
"required": false,
"description": "Filter persons by Geslacht",
"schema": {
"type": "string"
}
},
{
"name": "Functie",
"in": "query",
"required": false,
"description": "Filter persons by Functie",
"schema": {
"type": "string"
}
},
{
"name": "Geboortedatum",
"in": "query",
"required": false,
"description": "Filter persons by Geboortedatum",
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "Geboorteplaats",
"in": "query",
"required": false,
"description": "Filter persons by Geboorteplaats",
"schema": {
"type": "string"
}
},
{
"name": "Geboorteland",
"in": "query",
"required": false,
"description": "Filter persons by Geboorteland",
"schema": {
"type": "string"
}
},
{
"name": "Overlijdensdatum",
"in": "query",
"required": false,
"description": "Filter persons by Overlijdensdatum",
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "Overlijdensplaats",
"in": "query",
"required": false,
"description": "Filter persons by Overlijdensplaats",
"schema": {
"type": "string"
}
},
{
"name": "Woonplaats",
"in": "query",
"required": false,
"description": "Filter persons by Woonplaats",
"schema": {
"type": "string"
}
},
{
"name": "Land",
"in": "query",
"required": false,
"description": "Filter persons by Land",
"schema": {
"type": "string"
}
},
{
"name": "Fractielabel",
"in": "query",
"required": false,
"description": "Filter persons by Fractielabel",
"schema": {
"type": "string"
}
},
{
"name": "ContentType",
"in": "query",
"required": false,
"description": "Filter persons by ContentType",
"schema": {
"type": "string"
}
},
{
"name": "ContentLength",
"in": "query",
"required": false,
"description": "Filter persons by ContentLength",
"schema": {
"type": "integer"
}
},
{
"name": "GewijzigdOp",
"in": "query",
"required": false,
"description": "Filter persons by GewijzigdOp",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "ApiGewijzigdOp",
"in": "query",
"required": false,
"description": "Filter persons by ApiGewijzigdOp",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "Verwijderd",
"in": "query",
"required": false,
"description": "Filter for not deleted persons",
"schema": {
"type": "boolean"
}
},
{
"name": "offset",
"in": "query",
"required": false,
"description": "Offset for pagination",
"schema": {
"type": "integer",
"default": 0
}
}
],
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Id": {
"type": "string"
},
"Achternaam": {
"type": "string"
},
"Fractielabel": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}
}