AddInfo-Request
Abfrage aktueller Meldungen — Störungen, Baustellen, Ausfälle, allgemeine Hinweise und Banner-Infos. Vielfältige Filter nach Zeitraum, Ort, Linie, Typ und Quelle.
Endpoint
- Pfad:
XML_ADDINFO_REQUEST - Methode: GET
Obligatorische Parameter
Keine. Ein parameterloser Request liefert alle aktuellen Meldungen — in realen Systemen aber meist zu viele. Mindestens einen Filter setzen.
Datums-Filter
| Parameter | Format | Beschreibung |
|---|---|---|
filterDateValid | DD-MM-YYYY | Gültigkeitsdatum (wiederholbar für Mehrfach-Filter) |
filterDateValidComponentsActive | 1 | Komponentenweise Datumsangabe aktivieren |
filterDateValidDay | DD | Tag (mit Komponenten-Modus) |
filterDateValidMonth | MM | Monat (mit Komponenten-Modus) |
filterDateValidYear | YYYY | Jahr (mit Komponenten-Modus) |
filterPublicationStatus | current | history | Aktive oder historische Meldungen |
filterValidIntervalStart | DD-MM-YYYY | Intervall-Anfang (inklusiv) |
filterValidIntervalEnd | DD-MM-YYYY | Intervall-Ende (inklusiv) |
Orts-Filter
| Parameter | Format | Beschreibung |
|---|---|---|
filterOMC | Gemeindeschlüssel, :-separiert | Meldungen einer oder mehrerer Gemeinden |
filterOMC_PlaceID | <OMC>:<PlaceID> | Meldungen eines Orts (wiederholbar) |
Linie / Halt / Operator
| Parameter | Format | Beschreibung |
|---|---|---|
filterLineNumberIntervalStart | 1–999 | Liniennummer-Intervall (Start) |
filterLineNumberIntervalEnd | 1–999 | Liniennummer-Intervall (Ende) |
filterMOTType | MOT-ID | Nach Verkehrsmittel filtern (wiederholbar) — siehe MOT-IDs |
filterPNLineDir | <Netz>:<Linie>:<Richtung> | Filter auf Netz + Linie + Richtung (wiederholbar) |
filterPNLineSub | <Netz>:<Linie>:<Ergänzung> | Filter auf Netz + Linie + Ergänzung (wiederholbar) |
itdLPxx_selLine | DIVA-Liniennummer | DIVA-Filter (wiederholbar) |
itdLPxx_selOperator | Operator-Code | Betreiber-Filter (wiederholbar) |
itdLPxx_selStop | Halte-ID | Halt-Filter (wiederholbar) |
line | <Netz>:<Linie>:<Ergänzung>:<Richtung>:<Projekt> | Kombinierter Linienfilter; mit passedStops=1 gibt's Meldungen für Halte auf dieser Linie |
Meldungsart
| Parameter | Werte | Beschreibung |
|---|---|---|
filterInfoID | Meldungs-ID | Konkrete Meldung (wiederholbar) |
filterInfoType | stopInfo | stopBlocking | lineInfo | lineBlocking | routeInfo | routeBlocking | generalInfo | bannerInfo | Meldungstyp (wiederholbar) |
Anbieter / Quelle
| Parameter | Werte | Beschreibung |
|---|---|---|
filterProviderCode | Provider-Code | Autor der Meldung (wiederholbar) |
filterSourceSystemName | Systemname | Quellsystem (wiederholbar) |
Siehe auch gemeinsame Parameter.
Beispiel-Requests
Aktive Baustellen-/Störungsmeldungen einer Gemeinde:
GET /XML_ADDINFO_REQUEST
?outputFormat=JSON
&filterOMC=05113
&filterPublicationStatus=current
&filterInfoType=lineBlocking
&filterInfoType=routeBlockingMeldungen rund um eine bestimmte Linie in einem Zeitraum:
GET /XML_ADDINFO_REQUEST
?outputFormat=JSON
&filterPNLineDir=apb:196:R
&filterValidIntervalStart=25-01-2025
&filterValidIntervalEnd=31-01-2025Antwort (Beispiel)
json
{
"infos": [
{
"id": "M-987",
"type": "lineBlocking",
"title": "Sperrung Linie 196",
"text": "Umleitung bis 12.09. aufgrund Bauarbeiten.",
"validFrom": "2025-01-20",
"validTo": "2025-09-12",
"lines": ["apb:05136:196:R"],
"severity": "warning"
}
]
}JavaScript-Beispiele
js
async function getAddInfo(filters = {}) {
const base = 'https://server:port/virtuellesVerzeichnis/XML_ADDINFO_REQUEST'
const usp = new URLSearchParams({ outputFormat: 'JSON' })
for (const [k, v] of Object.entries(filters)) {
if (Array.isArray(v)) v.forEach(x => usp.append(k, String(x)))
else if (v != null) usp.set(k, String(v))
}
const res = await fetch(`${base}?${usp}`)
if (!res.ok) throw new Error('HTTP ' + res.status)
return res.json()
}
// Nutzung:
getAddInfo({
filterOMC: '05113',
filterPublicationStatus: 'current',
filterInfoType: ['lineBlocking', 'routeBlocking']
})ts
export async function pollAlerts(
onNew: (id: string, title: string) => void,
intervalMs = 60_000
) {
const seen = new Set<string>()
async function tick() {
const data = await getAddInfo({ filterPublicationStatus: 'current' })
for (const info of data.infos as { id: string; title: string }[]) {
if (!seen.has(info.id)) {
seen.add(info.id)
onNew(info.id, info.title)
}
}
}
await tick()
return setInterval(tick, intervalMs)
}Hinweise
- Datumsformat hier ist
DD-MM-YYYY(nichtYYYYMMDDwie in Datum & Uhrzeit) — typischer Quell-Fehler. filterInfoType=bannerInfosind die Info-Banner, die überhideBannerInfo=1(siehe gemeinsame Parameter) auch serverseitig unterdrückt werden können.- Für User-Ausgabe eine Dedup über
idfahren — dieselbe Meldung kann in mehreren Filtern auftauchen, wenn sie mehrere Linien betrifft.