Skip to content

ParkObject-Request

Detailinformationen zu einem konkreten Parkobjekt — Parkhaus, Parkplatz, Park&Ride, Parkzone oder ausgewiesene Ladeinfrastruktur. Optional inklusive Echtzeit-Auslastung.

Endpoint

  • Pfad: XML_PARKOBJECT_REQUEST
  • Methode: GET

Obligatorische Parameter

ParameterWerteBeschreibung
extendedParkingClasses1Aktiviert die strukturierte Detail-Ausgabe
parkObjInfo1Aktiviert die Detail-Ausgabe

Zusätzlich genau eine Selektor-Angabe:

ParameterWertBeschreibung
paIDParkobjekt-IDDirektauswahl über die Parkobjekt-ID
paIDStopHalte-IDAuswahl über eine als Parkobjekt ausgewiesene Haltestelle

Optionale Parameter

ParameterWerteBeschreibung
parkObjInfoStatic1Statische Info (Kapazität, Adresse, Öffnungszeiten) mitliefern
parkObjInfoRealtime1Echtzeit-Auslastung mitliefern (setzt parkObjInfo=1 voraus)

Beispiel-Request

GET /XML_PARKOBJECT_REQUEST
    ?outputFormat=JSON
    &paID=1-751
    &extendedParkingClasses=1
    &parkObjInfo=1
    &parkObjInfoStatic=1
    &parkObjInfoRealtime=1

Antwort (Beispiel)

json
{
  "parkObject": {
    "id": "1-751",
    "name": "P&R Essen Hbf Nord",
    "type": "PARKRIDE",
    "static": {
      "capacity": 180,
      "address": "Freiheit 12, 45127 Essen",
      "openingHours": "24/7"
    },
    "realtime": {
      "occupancy": 142,
      "free": 38,
      "updatedAt": "2025-01-25T08:14:30Z"
    }
  }
}

JavaScript-Beispiele

js
const base = 'https://server:port/virtuellesVerzeichnis/XML_PARKOBJECT_REQUEST'

async function getParkObjectDetail(paID, { realtime = true } = {}) {
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    paID,
    extendedParkingClasses: '1',
    parkObjInfo: '1',
    parkObjInfoStatic: '1'
  })
  if (realtime) usp.set('parkObjInfoRealtime', '1')
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
export function occupancyRatio(po: {
  static?: { capacity?: number }
  realtime?: { occupancy?: number }
}) {
  const cap = po.static?.capacity ?? 0
  const occ = po.realtime?.occupancy ?? 0
  if (!cap) return null
  return Math.min(1, occ / cap)
}

Hinweise

  • Detailinfos immer einzeln pro Parkobjekt anfragen — der Endpoint ist nicht für Massenabfragen gedacht.
  • Für die räumliche Suche nach Parkobjekten (bbox, Umkreis, nach Typ) siehe CoordInfo-Request mit dem Parking-Filter-Block.
  • parkObjInfoRealtime=1 ohne parkObjInfo=1 wirkt nicht — die Echtzeit-Flag setzt die Basis-Detail-Flag voraus.