Het Dataplatform van gemeente Amsterdam gaat het gebruik van een API key bij het gebruik van API's verplicht stellen. Hiermee wil het Dataplatform inzicht krijgen wie gebruik maakt van haar APIs, zodat het Dataplatform kan communiceren over updates en wijzigingen in de API's. Eventuele wijzigingen in de API's kunnen dan tijdig geïmplementeerd worden in uw systemen. Dit gaat gelden voor alle zogenaamde 'DSO API's' van het Dataplatform van gemeente Amsterdam.
Het gebruik van een API key bij de aanroep van een API van het Dataplatform van gemeente Amsterdam is vanaf half september optioneel. In overleg met de dataorganisatie wordt een deadline vastgesteld voor het moment vanaf wanneer de API keys verplicht worden. U kunt de API's van het Dataplatform dan niet meer gebruiken zonder een API key mee te geven.
Dit heeft gevolgen voor uw systemen!
Vraag tijdig een API key aan om uw systemen hierop aan te passen. U kunt met dit formulier een API key aanvragen.
Technische achtergrond
Technische implementatie
De WFS server is gebouwd op basis van django-gisserver. Deze Django module ondersteunt het "Basic WFS" conformance level, en is getest op compatibiliteit met de CITE Teamengine Test Suite.
Beveiliging
De ingeladen features kunnen verschillen per gebruiker. De "feature type" die de server intern opbouwd bevat alleen de attributen waar een gebruiker toegang toe heeft. Het is daardoor niet mogelijk om te filteren op afgeschermde velden, simpelweg omdat de server deze velden niet herkent.
Datasets met meerdere geometrieëen
Indien een tabel meerdere geometrieën bevat, worden meerdere variaties van deze tabel afzonderlijk opgenomen in de WFS-server. Elke variatie heeft een ander primair geometrieveld. Zodoende kunnen GIS-pakketten op beide geometriën weergeven op de kaart.
Dit is bijvoorbeeld te zien bij "Horeca-exploitatievergunningen": er wordt een aparte laag voor het pand, en de bijbehorende terassen beschikbaar gesteld. Zodoende kunnen beide geometriën uitgelezen worden. De data van beide lagen is identiek; alleen de volgorde van geometrie-velden is aangepast.
Embedding
De XML uitvoer van de WFS server verschilt bij het gebruik van
?embed={relatienaam},{...}
en ?expand={relatienaam},{...}
.
Deze embed logica is een uitbreiding op
django-gisserver. Door het
gebruik van ?embed
en ?expand
wordt er een andere feature-definitie
geactiveerd in de server, die een geneste structuur oplevert. Hierdoor
veranderd het gedrag en uitvoer van de server.
Bij een platgeslagen relatie worden alle veldnamen met een punt erin opgebouwd:
<app:buurt gml:id="buurt.03630000000078">
<gml:name>00a</gml:name>
<app:id>03630000000078</app:id>
<app:code>00a</app:code>
<app:naam>Kop Zeedijk</app:naam>
<app:vollcode>A00a</app:vollcode>
<app:geometrie>...
<gml:Polygon srsName="urn:ogc:def:crs:EPSG::28992" gml:id="buurt.03630000000078.1">
...
</gml:Polygon>
</app:geometrie>
<app:stadsdeel.id>03630000000018</app:stadsdeel.id>
<app:stadsdeel.code>A</app:stadsdeel.code>
<app:stadsdeel.naam>Centrum</app:stadsdeel.naam>
<app:stadsdeel.vervallen xsi:nil="true" />
<app:stadsdeel.date_modified>2020-07-28T22:25:24.197978+00:00</app:stadsdeel.date_modified>
<app:stadsdeel.ingang_cyclus>2015-01-01</app:stadsdeel.ingang_cyclus>
<app:stadsdeel.begin_geldigheid>2015-01-01</app:stadsdeel.begin_geldigheid>
<app:stadsdeel.einde_geldigheid xsi:nil="true" />
<app:stadsdeel.brondocument_naam>3B/2015/134</app:stadsdeel.brondocument_naam>
<app:stadsdeel.brondocument_datum>2015-06-23</app:stadsdeel.brondocument_datum>
<app:stadsdeel_id>03630000000018</app:stadsdeel_id>
<app:vervallen xsi:nil="true" />
<app:date_modified>2020-07-28T22:25:32.261814+00:00</app:date_modified>
<app:ingang_cyclus>2006-06-12</app:ingang_cyclus>
<app:begin_geldigheid>2006-06-12</app:begin_geldigheid>
<app:buurtcombinatie_id>3630012052036</app:buurtcombinatie_id>
<app:einde_geldigheid xsi:nil="true" />
<app:brondocument_naam />
<app:brondocument_datum xsi:nil="true" />
<app:gebiedsgerichtwerken_id>DX01</app:gebiedsgerichtwerken_id>
</app:buurt>
Bij een "complex feature" gebruikt de XML uitvoer een eigen
<app:stadsdeel>
object:
<app:buurt gml:id="buurt.03630000000078">
<gml:name>00a</gml:name>
<app:id>03630000000078</app:id>
<app:code>00a</app:code>
<app:naam>Kop Zeedijk</app:naam>
<app:vollcode>A00a</app:vollcode>
<app:geometrie>...
<gml:Polygon srsName="urn:ogc:def:crs:EPSG::28992" gml:id="buurt.03630000000078.1">
...
</gml:Polygon>
</app:geometrie>
<app:stadsdeel>
<app:id>03630000000018</app:id>
<app:code>A</app:code>
<app:naam>Centrum</app:naam>
<app:vervallen xsi:nil="true" />
<app:date_modified>2020-07-28T22:25:24.197978+00:00</app:date_modified>
<app:ingang_cyclus>2015-01-01</app:ingang_cyclus>
<app:begin_geldigheid>2015-01-01</app:begin_geldigheid>
<app:einde_geldigheid xsi:nil="true" />
<app:brondocument_naam>3B/2015/134</app:brondocument_naam>
<app:brondocument_datum>2015-06-23</app:brondocument_datum>
</app:stadsdeel>
<app:stadsdeel_id>03630000000018</app:stadsdeel_id>
<app:vervallen xsi:nil="true" />
<app:date_modified>2020-07-28T22:25:32.261814+00:00</app:date_modified>
<app:ingang_cyclus>2006-06-12</app:ingang_cyclus>
<app:begin_geldigheid>2006-06-12</app:begin_geldigheid>
<app:buurtcombinatie_id>3630012052036</app:buurtcombinatie_id>
<app:einde_geldigheid xsi:nil="true" />
<app:brondocument_naam></app:brondocument_naam>
<app:brondocument_datum xsi:nil="true" />
<app:gebiedsgerichtwerken_id>DX01</app:gebiedsgerichtwerken_id>
</app:buurt>