Skip to content

PS-Request (Pendlerfahrplan)

Stellt wiederkehrende Fahrten (z. B. täglicher Arbeitsweg) als kompakten Pendlerfahrplan bereit.

Endpoint

  • Pfad: XML_PS_REQUEST
  • Methode: GET

NOTE

Die exakten Parameterbezeichner können je nach System leicht abweichen. Prüfen Sie die PDF und Ihr Systemsetup.

Parameter (Auszug)

ParameterTypBeschreibung
originIdstringStart-Haltestelle/-Objekt
destIdstringZiel-Haltestelle/-Objekt
datestringStartdatum YYYYMMDD
fromTimestringAnfangszeitfenster HHMM
toTimestringEndzeitfenster HHMM
weekdaysstringWochentage, z. B. Mo,Di,Mi,Do,Fr
maxTripsnumberMax. Anzahl Fahrten

Beispiel-Request

GET /XML_PS_REQUEST?originId=de:05513:1001&destId=de:05913:1000&date=20250125&fromTime=0700&toTime=0900&weekdays=Mo,Di,Mi,Do,Fr&maxTrips=4

Antwort (Beispiel)

json
{
  "commuterPlan": [
    { "dep": "07:12", "arr": "07:46", "changes": 0, "summary": "Bus 196 → Ziel" },
    { "dep": "07:27", "arr": "08:03", "changes": 1, "summary": "U11 + RE2" }
  ],
  "valid": { "from": "2025-01-25", "to": "2025-07-25" }
}

JavaScript-Beispiele

js
async function getPendlerfahrplan(params) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST'
  const usp = new URLSearchParams()
  Object.entries(params).forEach(([k,v]) => usp.set(k, String(v)))
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
import LRU from 'lru-cache'

const cache = new LRU<string, any>({ max: 200, ttl: 60_000 })
const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST'

export async function getPS(params: Record<string,string|number>) {
  const key = 'ps:' + JSON.stringify(params)
  const hit = cache.get(key)
  if (hit) return hit
  const usp = new URLSearchParams()
  for (const [k,v] of Object.entries(params)) usp.set(k, String(v))
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  const data = await res.json()
  cache.set(key, data)
  return data
}

Hinweise

  • Nutzen Sie weekdays, um nur Werktage (oder z. B. nur Sa/So) auszuwählen.
  • Für die Darstellung genügt oft ein kompaktes Raster (z. B. 3–6 Fahrten je Zeitfenster).

title: PS-Request (Pendlerfahrplan) outline: deep

PS-Request (Pendlerfahrplan)

Stellt wiederkehrende Fahrten (z. B. täglicher Arbeitsweg) als kompakten Pendlerfahrplan bereit.

Endpoint

  • Pfad: XML_PS_REQUEST
  • Methode: GET

NOTE

Die exakten Parameterbezeichner können je nach System leicht abweichen. Prüfen Sie die PDF und Ihr Systemsetup.

Parameter (Auszug)

ParameterTypBeschreibung
originIdstringStart-Haltestelle/-Objekt
destIdstringZiel-Haltestelle/-Objekt
datestringStartdatum YYYYMMDD
fromTimestringAnfangszeitfenster HHMM
toTimestringEndzeitfenster HHMM
weekdaysstringWochentage, z. B. Mo,Di,Mi,Do,Fr
maxTripsnumberMax. Anzahl Fahrten

Beispiel-Request

GET /XML_PS_REQUEST?originId=de:05513:1001&destId=de:05913:1000&date=20250125&fromTime=0700&toTime=0900&weekdays=Mo,Di,Mi,Do,Fr&maxTrips=4

Antwort (Beispiel)

json
{
  "commuterPlan": [
    { "dep": "07:12", "arr": "07:46", "changes": 0, "summary": "Bus 196 → Ziel" },
    { "dep": "07:27", "arr": "08:03", "changes": 1, "summary": "U11 + RE2" }
  ],
  "valid": { "from": "2025-01-25", "to": "2025-07-25" }
}

JavaScript-Beispiele

js
async function getPendlerfahrplan(params) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST'
  const usp = new URLSearchParams()
  Object.entries(params).forEach(([k,v]) => usp.set(k, String(v)))
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
import LRU from 'lru-cache'

const cache = new LRU<string, any>({ max: 200, ttl: 60_000 })
const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST'

export async function getPS(params: Record<string,string|number>) {
  const key = 'ps:' + JSON.stringify(params)
  const hit = cache.get(key)
  if (hit) return hit
  const usp = new URLSearchParams()
  for (const [k,v] of Object.entries(params)) usp.set(k, String(v))
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  const data = await res.json()
  cache.set(key, data)
  return data
}

Hinweise

  • Nutzen Sie weekdays, um nur Werktage (oder z. B. nur Sa/So) auszuwählen.
  • Für die Darstellung genügt oft ein kompaktes Raster (z. B. 3–6 Fahrten je Zeitfenster).