Skip to content

PS-Request (Pendlerfahrplan)

Berechnet wiederkehrende Fahrten (z. B. täglicher Arbeitsweg) innerhalb eines Zeitfensters. Optional Rückgabe als base64-codiertes PDF-Druckprodukt.

Endpoint

  • Pfad: XML_PS_REQUEST2
  • Methode: GET

Obligatorische Parameter

Point-Input mit den Suffixen _origin und _destination:

ParameterWerteBeschreibung
type_origin, name_origins. Point-InputStart
type_destination, name_destinations. Point-InputZiel

Plus einer der beiden Tag-Selektoren:

ParameterWerteBeschreibung
psParamWeekday6:SAMSTAG | 8:MO-FR | 10:SONNTAGTagesgruppe für die Fahrplan­berechnung
psParamSampleDateYYYYMMDDReferenzdatum (Alternative zu psParamWeekday)

Zeitfenster (obligatorisch für PS)

Zeitangaben nutzen die Suffix-Familie itdTime_<usagePS> mit <usagePS>{depFrom, depTo, arrFrom, arrTo}:

ParameterFormatZweck
itdTime_depFromHHMMHinfahrt — Fensterbeginn
itdTime_depToHHMMHinfahrt — Fensterende
itdTime_arrFromHHMMRückfahrt — Fensterbeginn (entfällt bei psParamOneWay=1)
itdTime_arrToHHMMRückfahrt — Fensterende (entfällt bei psParamOneWay=1)

Ebenfalls zulässig: itdTimeHour_<usagePS>, itdTimeMinute_<usagePS>, itdTimeAMPM_<usagePS>.

Optionale Parameter

ParameterWerteBeschreibung
useAllSampleDates1Alle Referenzdaten berücksichtigen, nicht nur passende Tagesgruppe
base641Antwort enthält ein base64-codiertes PDF-Druckprodukt
psParamOneWay1Nur Hinfahrt (Default: Hin + Rück)
psParamGroupIDIDKonkreten Fahrplan­abschnitt wählen (Liste siehe SystemInfo mit validityPeriod=1)
psParamMaxTimeHours024Maximale Intervallgröße in Stunden
useAltOdv1Zwischenhalt aktivieren (name_via, type_via)

Adress­felder für das PDF-Druckprodukt

Nur wirksam mit base64=1:

ParameterZweck
psParamAddressNameKopfzeile — Name
psParamAddressStreetKopfzeile — Straße
psParamAddressPlaceKopfzeile — Ort
psParamAddressExt1Frei verwendbares Zusatzfeld 1
psParamAddressExt2Frei verwendbares Zusatzfeld 2

NOTE

Viele Trip-Request-Optionen (z. B. changeSpeed, maxChanges, lineRestriction) gelten analog auch in PS. Siehe Trip-Request.

Beispiel-Request

GET /XML_PS_REQUEST2
    ?outputFormat=JSON
    &type_origin=any&name_origin=de:05911:5494
    &type_destination=any&name_destination=de:05315:11000
    &psParamWeekday=8:MO-FR
    &itdTime_depFrom=0700&itdTime_depTo=0900
    &itdTime_arrFrom=1600&itdTime_arrTo=1900
    &psParamMaxTimeHours=2

Antwort (Beispiel)

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

JavaScript-Beispiele

js
async function getPendlerfahrplan(params) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST2'
  const usp = new URLSearchParams({ outputFormat: 'JSON', ...params })
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
import { writeFile } from 'node:fs/promises'

export async function downloadPsPdf(params: Record<string, string>, out: string) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_PS_REQUEST2'
  const usp = new URLSearchParams({ outputFormat: 'JSON', base64: '1', ...params })
  const res = await fetch(`${base}?${usp}`)
  const data = await res.json() as { pdfBase64: string }
  await writeFile(out, Buffer.from(data.pdfBase64, 'base64'))
}

Hinweise

  • URL-Pfad: XML_PS_REQUEST2 (nicht XML_PS_REQUEST).
  • Für Einzelfahrten ohne Wochenlogik ist Trip-Request geeigneter.
  • psParamMaxTimeHours verhindert, dass sehr lange/schiefe Fenster den Server belasten — gern auf 2–3 h begrenzen.