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:
| Parameter | Werte | Beschreibung |
|---|---|---|
type_origin, name_origin | s. Point-Input | Start |
type_destination, name_destination | s. Point-Input | Ziel |
Plus einer der beiden Tag-Selektoren:
| Parameter | Werte | Beschreibung |
|---|---|---|
psParamWeekday | 6:SAMSTAG | 8:MO-FR | 10:SONNTAG | Tagesgruppe für die Fahrplanberechnung |
psParamSampleDate | YYYYMMDD | Referenzdatum (Alternative zu psParamWeekday) |
Zeitfenster (obligatorisch für PS)
Zeitangaben nutzen die Suffix-Familie itdTime_<usagePS> mit <usagePS> ∈ {depFrom, depTo, arrFrom, arrTo}:
| Parameter | Format | Zweck |
|---|---|---|
itdTime_depFrom | HHMM | Hinfahrt — Fensterbeginn |
itdTime_depTo | HHMM | Hinfahrt — Fensterende |
itdTime_arrFrom | HHMM | Rückfahrt — Fensterbeginn (entfällt bei psParamOneWay=1) |
itdTime_arrTo | HHMM | Rückfahrt — Fensterende (entfällt bei psParamOneWay=1) |
Ebenfalls zulässig: itdTimeHour_<usagePS>, itdTimeMinute_<usagePS>, itdTimeAMPM_<usagePS>.
Optionale Parameter
| Parameter | Werte | Beschreibung |
|---|---|---|
useAllSampleDates | 1 | Alle Referenzdaten berücksichtigen, nicht nur passende Tagesgruppe |
base64 | 1 | Antwort enthält ein base64-codiertes PDF-Druckprodukt |
psParamOneWay | 1 | Nur Hinfahrt (Default: Hin + Rück) |
psParamGroupID | ID | Konkreten Fahrplanabschnitt wählen (Liste siehe SystemInfo mit validityPeriod=1) |
psParamMaxTimeHours | 0–24 | Maximale Intervallgröße in Stunden |
useAltOdv | 1 | Zwischenhalt aktivieren (name_via, type_via) |
Adressfelder für das PDF-Druckprodukt
Nur wirksam mit base64=1:
| Parameter | Zweck |
|---|---|
psParamAddressName | Kopfzeile — Name |
psParamAddressStreet | Kopfzeile — Straße |
psParamAddressPlace | Kopfzeile — Ort |
psParamAddressExt1 | Frei verwendbares Zusatzfeld 1 |
psParamAddressExt2 | Frei 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=2Antwort (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(nichtXML_PS_REQUEST). - Für Einzelfahrten ohne Wochenlogik ist Trip-Request geeigneter.
psParamMaxTimeHoursverhindert, dass sehr lange/schiefe Fenster den Server belasten — gern auf 2–3 h begrenzen.