Perceel PUT request: internal server error (500)

Hoi,

Ik probeer een perceel op te vragen via een PUT request naar https://brk.basisregistraties.overheid.nl/api/v1/. Ik volg de documentatie https://www.pdok.nl/restful-api?articleid=1949811#/paths/~1perceel/put en ik stuur JSON die exact hetzelfde is als in het voorbeeld:

{
    "geometry": {
        "contains": {
            "point": [
                4.3132,
                52.6231
            ]
        }
    }
}

Ik krijg echter de volgende internal server error terug:

{
    "title": "Internal Server Error",
    "status": 500,
    "detail": "An error occured from which the server was unable to recover.Please contact the system administrator with the following details: 'b45e20a0'"
}

Ik zal wel iets simpels over het hoofd hebben gezien, maar ik kan er niet zo snel achter komen. GET requests zoals

/perceel/{id}

lijken wel gewoon te maken.
Wat mis ik?

Bedankt!

Hylke

Hallo Hylke,

De documentatie die je volgt is vrij gedateerd. We zijn bezig om alle documentatie bij te werken en leesbaar te publiceren. Met een beetje geluk lukt dat ergens komende week nog, en anders zo spoedig mogelijk daarna.

Voor de BRK zou de documentatie hier moeten staan … :disappointed:
https://brk.basisregistraties.overheid.nl/restful-api?articleid=1930301

Het probleem dat je ondervindt, kan ook aan de documentatie toegeschreven worden. Het requestbody dat je stuurt is niet hetgeen de API verwacht.

Dit zou het moeten zijn:

{
    "geometry": {
        "contains": {
            "type" : "Point",
            "coordinates" : [
                4.3132,
                52.6231
            ]
        }
    }
}

En vergeet niet de Content-Type header mee te sturen met waarde application/json anders negeert de API de geometrie in de body.

Met het oog op de toekomst zou ik je ook aanraden om het /percelen/_zoek endpoint te gebruiken met een POST, dat is een 1-op-1 vervanging van wat je nu gebruikt. Alle endpoints met */perceel/* worden ooit uitgefaseerd zodat alleen */percelen/* endpoints over blijven.

Laat het weten als je nog tegen andere problemen aanloopt.

Groet,
Robin

Beste Robin,

Hartelijk dank voor de snelle reactie. Helaas krijg ik een 404 als ik klik op de documentatie waar u naar verwijst:

Something went wrong…
Error downloading https://brk.basisregistraties.overheid.nl/generic/headers.yml HTTP ERROR 404

Maar het is wel gelukt om met beide methoden (PUT en de POST via _percelen/zoek) een goede response te krijgen. Nogmaals bedankt!

Hylke

Beste Hylke,

Goed om te horen dat de requests nu wel lukken!

Zodra we de documentatie gefixt hebben, zou de link waar je nu een 404 krijgt wel up-to-date documentatie moeten tonen.

Groet,
Robin

Een PUT verb op een REST API betekent m.i. een request om een Resource (object) aan te maken of een bestaande Resource te vervangen. POST heeft een dubbelrol, kan ook betekenen om een Resource aan te maken maar ook vaak om een zoek-opdracht te specificeren of i.h.a. “iets te doen”, wanneer dit niet kan/of te complex met GET.

Het is althans vrij ongebruikelijk om een PUT te gebruiken om een Resource te lezen. Meestal is PUT (net als DELETE en PATCH) afgeschermd. Ik zou altijd POST gebruiken.

Zie ook REST principes:
https://spring.io/understanding/REST

Er is een reden dat ik aanraad om de POST te gebruiken… PUT gaan we binnenkort uitfaseren.