Naar hoofdinhoud

Documentatie voor ontwikkelaars

Koppel uw applicatie, portaal of GIS aan InfraBIDShare: quickstart, OpenAPI, clients voor TypeScript, Python en Django, OGC-instructies voor QGIS en embeds.

Basis-URL en authenticatie

Elke koppeling gebruikt dezelfde host: https://www.infrabidshare.com. De OpenAPI-beschrijving staat op https://www.infrabidshare.com/api/public/v1/openapi.json.

Stuur uw token altijd in de header x-api-key. Zet het token in een omgevingsvariabele, nooit in broncode of in een gedeelde link.

Alleen als uw GIS geen headers ondersteunt, mag u het token tijdelijk in de querystring zetten: https://www.infrabidshare.com/api/public/v1/ogc/wfs?token=<uw-api-token>. Zo'n URL komt in serverlogs en browsergeschiedenis terecht. Gebruik dan een apart token met een korte geldigheid en beperkte rechten, en trek het in zodra de koppeling werkt.

Verbinding testen

Vul het dataset-id uit de catalogus in. De test is eenmalig en slaat niets op.

Quickstart (curl)

curl -s "https://www.infrabidshare.com/api/public/v1/catalog" \
  -H "x-api-key: <uw-api-token>"

TypeScript

const BASIS = "https://www.infrabidshare.com";

export async function haalRecords(limiet = 100) {
  const res = await fetch(
    `${BASIS}/api/public/v1/records?dataset_id=<dataset-id>&limit=${limiet}`,
    { headers: { "x-api-key": process.env.INFRABIDSHARE_TOKEN ?? "<uw-api-token>" } },
  );
  if (!res.ok) throw new Error(`InfraBIDShare gaf status ${res.status}`);
  return res.json();
}

Python

import os, requests

BASIS = "https://www.infrabidshare.com"
HEADERS = {"x-api-key": os.environ["INFRABIDSHARE_TOKEN"]}

res = requests.get(
    f"{BASIS}/api/public/v1/records",
    params={"dataset_id": "<dataset-id>", "limit": 100},
    headers=HEADERS,
    timeout=30,
)
res.raise_for_status()
print(res.json())

Django

# settings.py
INFRABIDSHARE_BASIS = "https://www.infrabidshare.com"
INFRABIDSHARE_TOKEN = os.environ["INFRABIDSHARE_TOKEN"]

# services/infrabidshare.py
import requests
from django.conf import settings
from django.core.cache import cache

def dataset_records(dataset_id="<dataset-id>", limit=100):
    sleutel = f"ibs:{dataset_id}:{limit}"
    data = cache.get(sleutel)
    if data is None:
        res = requests.get(
            f"{settings.INFRABIDSHARE_BASIS}/api/public/v1/records",
            params={"dataset_id": dataset_id, "limit": limit},
            headers={"x-api-key": settings.INFRABIDSHARE_TOKEN},
            timeout=30,
        )
        res.raise_for_status()
        data = res.json()
        cache.set(sleutel, data, 300)
    return data

QGIS (WFS en WMTS)

1. QGIS: Laag > Laag toevoegen > WFS-laag toevoegen > Nieuw.
2. URL: https://www.infrabidshare.com/api/public/v1/ogc/wfs
3. Authenticatie: nieuwe configuratie van het type "HTTP-header",
   header x-api-key met uw token.
4. Verbinden, laag kiezen en toevoegen. WMTS gebruikt dezelfde host:
   https://www.infrabidshare.com/api/public/v1/ogc/wmts

Embed in uw eigen site

<iframe
  src="https://www.infrabidshare.com/embed/kaart?token=<uw-embedtoken>"
  width="100%" height="640" loading="lazy"
  title="InfraBIDShare kaartviewer"></iframe>

Werkt een bron niet zoals verwacht? Kijk eerst op de servicestatuspagina: daar staat of het aan een externe bronhouder ligt of aan onze eigen diensten.