diff --git a/index.js b/index.js index 1b65641f..9f062063 100644 --- a/index.js +++ b/index.js @@ -1,12 +1,14 @@ import isObj from 'lodash/isObject.js'; import sortBy from 'lodash/sortBy.js'; import omit from 'lodash/omit.js'; +import {DateTime} from 'luxon'; import {defaultProfile} from './lib/default-profile.js'; import {validateProfile} from './lib/validate-profile.js'; import {INVALID_REQUEST} from './lib/errors.js'; import {sliceLeg} from './lib/slice-leg.js'; import {HafasError} from './lib/errors.js'; +import {profile as dbProfile} from './p/db/index.js'; // background info: https://github.com/public-transport/hafas-client/issues/286 const FORBIDDEN_USER_AGENTS = [ @@ -268,6 +270,87 @@ const createClient = (profile, userAgent, opt = {}) => { }; }; + const bestPrices = async (from, to, opt = {}) => { + from = profile.formatLocation(profile, from, 'from'); + to = profile.formatLocation(profile, to, 'to'); + + opt = Object.assign({ + via: null, // let journeys pass this station? + transfers: -1, // maximum nr of transfers + transferTime: 0, // minimum time for a single transfer in minutes + bike: false, // only bike-friendly journeys + tickets: false, // return tickets? + polylines: false, // return leg shapes? + subStops: false, // parse & expose sub-stops of stations? + entrances: false, // parse & expose entrances of stops/stations? + remarks: true, // parse & expose hints & warnings? + scheduledDays: false, // parse & expose dates each journey is valid on? + }, opt); + if (opt.via) { + opt.via = profile.formatLocation(profile, opt.via, 'opt.via'); + } + + let when = new Date(); + if (opt.departure !== undefined && opt.departure !== null) { + when = new Date(opt.departure); + if (Number.isNaN(Number(when))) { + throw new TypeError('opt.departure is invalid'); + } + const now = new Date(); + let today = DateTime.fromObject({ + year: now.year, month: now.month, day: now.day, + hour: 0, minute: 0, second: 0, millisecond: 0, + }, { + zone: profile.timezone, + locale: profile.locale, + }); + if (today > when) { + throw new TypeError('opt.departure date older than current date.'); + } + } + + const filters = [ + profile.formatProductsFilter({profile}, opt.products || {}), + ]; + + const query = { + maxChg: opt.transfers, + depLocL: [from], + viaLocL: opt.via ? [{loc: opt.via}] : [], + arrLocL: [to], + jnyFltrL: filters, + getTariff: Boolean(opt.tickets), + + getPolyline: Boolean(opt.polylines), + }; + query.outDate = profile.formatDate(profile, when); + + if (profile.endpoint !== dbProfile.endpoint) { + throw new Error('bestPrices() only works with the DB profile.'); + } + + const {res, common} = await profile.request({profile, opt}, userAgent, { + cfg: {polyEnc: 'GPA'}, + meth: 'BestPriceSearch', + req: profile.transformJourneysQuery({profile, opt}, query), + }); + if (!Array.isArray(res.outConL)) { + return null; + } + // todo: outConGrpL + + const ctx = {profile, opt, common, res}; + const journeys = res.outConL.map(j => profile.parseJourney(ctx, j)); + const bestPrices = res.outDaySegL.map(j => profile.parseBestPrice(ctx, j, journeys)); + + return { + bestPrices, + realtimeDataUpdatedAt: res.planrtTS && res.planrtTS !== '0' + ? parseInt(res.planrtTS) + : null, + }; + }; + const refreshJourney = async (refreshToken, opt = {}) => { if ('string' !== typeof refreshToken || !refreshToken) { throw new TypeError('refreshToken must be a non-empty string.'); @@ -889,6 +972,9 @@ const createClient = (profile, userAgent, opt = {}) => { if (profile.lines !== false) { client.lines = lines; } + if (profile.bestPrices !== false) { + client.bestPrices = bestPrices; + } Object.defineProperty(client, 'profile', {value: profile}); return client; }; diff --git a/lib/default-profile.js b/lib/default-profile.js index 0dff1858..f4b3735b 100644 --- a/lib/default-profile.js +++ b/lib/default-profile.js @@ -33,6 +33,7 @@ import {parseOperator} from '../parse/operator.js'; import {parseHint} from '../parse/hint.js'; import {parseWarning} from '../parse/warning.js'; import {parseStopover} from '../parse/stopover.js'; +import {parseBestPrice} from '../parse/bestprice.js'; import {formatAddress} from '../format/address.js'; import {formatCoord} from '../format/coord.js'; @@ -91,6 +92,7 @@ const defaultProfile = { parseTrip, parseJourneyLeg, parseJourney, + parseBestPrice, parseLine, parseStationName: (_, name) => name, parseLocation, @@ -123,6 +125,7 @@ const defaultProfile = { // `departures()` method: support for `stbFltrEquiv` field? departuresStbFltrEquiv: false, + bestPrices: false, trip: false, radar: false, refreshJourney: true, diff --git a/p/db/index.js b/p/db/index.js index 2a2ffaf0..7aeab602 100644 --- a/p/db/index.js +++ b/p/db/index.js @@ -692,6 +692,7 @@ const profile = { generateUnreliableTicketUrls: false, refreshJourneyUseOutReconL: true, + bestPrices: true, trip: true, journeysFromTrip: true, radar: true, diff --git a/parse/bestprice.js b/parse/bestprice.js new file mode 100644 index 00000000..52fa8d97 --- /dev/null +++ b/parse/bestprice.js @@ -0,0 +1,26 @@ + +const parseBestPrice = (ctx, outDaySeg, journeys) => { + const {profile, res} = ctx; + + const bpjourneys = outDaySeg.conRefL + ? outDaySeg.conRefL + .map(outConLIdx => journeys.find(j => j.refreshToken == res.outConL[outConLIdx].ctxRecon)) + .filter(j => Boolean(j)) + : []; + + const amount = outDaySeg.bestPrice.amount / 100; + const currency = bpjourneys?.[0]?.price?.currency; + + const result = { + journeys: bpjourneys, + from: profile.parseDateTime(ctx, outDaySeg.fromDate, outDaySeg.fromTime), + to: profile.parseDateTime(ctx, outDaySeg.toDate, outDaySeg.toTime), + bestPrice: amount > 0 && currency ? {amount, currency} : null, + }; + + return result; +}; + +export { + parseBestPrice, +}; diff --git a/test/db-bestprice.js b/test/db-bestprice.js new file mode 100644 index 00000000..9cdc9296 --- /dev/null +++ b/test/db-bestprice.js @@ -0,0 +1,39 @@ +// todo: use import assertions once they're supported by Node.js & ESLint +// https://github.com/tc39/proposal-import-assertions +import {createRequire} from 'module'; +const require = createRequire(import.meta.url); + +import tap from 'tap'; + +import {createClient} from '../index.js'; +import {profile as rawProfile} from '../p/db/index.js'; +const response = require('./fixtures/db-bestprice.json'); +import {dbBestPrices as expected} from './fixtures/db-bestprice.js'; + +const client = createClient(rawProfile, 'public-transport/hafas-client:test'); +const {profile} = client; + +const opt = { + via: null, + transfers: -1, + transferTime: 0, + bike: false, + tickets: true, + polylines: true, + remarks: true, + departure: '2023-06-15', + products: {}, + firstClass: false, + ageGroup: 'E', +}; + +tap.test('parses a bestprice with a DEVI leg correctly (DB)', (t) => { + const res = response.svcResL[0].res; + const common = profile.parseCommon({profile, opt, res}); + const ctx = {profile, opt, common, res}; + const journeys = res.outConL.map(j => profile.parseJourney(ctx, j)); + const bestPrices = res.outDaySegL.map(j => profile.parseBestPrice(ctx, j, journeys)); + + t.same(bestPrices, expected.bestPrices); + t.end(); +}); diff --git a/test/fixtures/db-bestprice.js b/test/fixtures/db-bestprice.js new file mode 100644 index 00000000..e7c48597 --- /dev/null +++ b/test/fixtures/db-bestprice.js @@ -0,0 +1,2324 @@ +const json = ` +{ + "bestPrices": [ + { + "journeys": [ + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T12:00:00+02:00", + "plannedDeparture": "2023-06-15T12:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T12:30:00+02:00", + "plannedArrival": "2023-06-15T12:30:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|289982|0|80|-1", + "line": { + "type": "line", + "id": "re-89715", + "fahrtNr": null, + "name": "RE 89715", + "public": true, + "productName": "RE" + }, + "direction": null, + "currentLocation": { + "type": "location", + "latitude": 51.534987, + "longitude": 7.527747 + }, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "13", + "plannedDeparturePlatform": "13", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T12:47:00+02:00", + "plannedDeparture": "2023-06-15T12:47:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T13:22:00+02:00", + "plannedArrival": "2023-06-15T13:22:00+02:00", + "arrivalDelay": 0, + "reachable": true, + "tripId": "1|322267|0|80|-1", + "line": { + "type": "line", + "id": "ic-143", + "fahrtNr": null, + "name": "IC 143", + "public": true, + "productName": "IC" + }, + "direction": null, + "currentLocation": { + "type": "location", + "latitude": 52.273163, + "longitude": 6.777273 + }, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": "prognosed", + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151200$202306151230$RE 89715$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151247$202306151322$IC 143$$1$$$$$$", + "price": { + "amount": 31, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3100 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T11:38:00+02:00", + "plannedDeparture": "2023-06-15T11:38:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T12:31:00+02:00", + "plannedArrival": "2023-06-15T12:31:00+02:00", + "arrivalDelay": 0, + "reachable": true, + "tripId": "1|222760|0|80|-1", + "line": { + "type": "line", + "id": "ice-847", + "fahrtNr": null, + "name": "ICE 847", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": "prognosed", + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": "prognosed" + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151138$202306151231$ICE 847$$3$$$$$$", + "price": { + "amount": 34.1, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3410 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T12:42:00+02:00", + "plannedDeparture": "2023-06-15T12:38:00+02:00", + "departureDelay": 240, + "arrival": "2023-06-15T13:31:00+02:00", + "plannedArrival": "2023-06-15T13:31:00+02:00", + "arrivalDelay": 0, + "reachable": true, + "tripId": "1|219255|0|80|-1", + "line": { + "type": "line", + "id": "ice-547", + "fahrtNr": null, + "name": "ICE 547", + "public": true, + "productName": "ICE" + }, + "direction": null, + "currentLocation": { + "type": "location", + "latitude": 51.255836, + "longitude": 6.792231 + }, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": "prognosed", + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": "prognosed" + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151238$202306151331$ICE 547$$1$$$$$$", + "price": { + "amount": 34.1, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3410 + } + } + ] + } + ], + "from": "2023-06-15T10:00:00+02:00", + "to": "2023-06-15T13:00:00+02:00", + "bestPrice": { + "amount": 31, + "currency": "EUR" + } + }, + { + "journeys": [ + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T14:38:00+02:00", + "plannedDeparture": "2023-06-15T14:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T15:31:00+02:00", + "plannedArrival": "2023-06-15T15:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|219321|0|80|-1", + "line": { + "type": "line", + "id": "ice-549", + "fahrtNr": null, + "name": "ICE 549", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151438$202306151531$ICE 549$$1$$$$$$", + "price": { + "amount": 29.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2990 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T15:38:00+02:00", + "plannedDeparture": "2023-06-15T15:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T16:31:00+02:00", + "plannedArrival": "2023-06-15T16:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|223754|0|80|-1", + "line": { + "type": "line", + "id": "ice-941", + "fahrtNr": null, + "name": "ICE 941", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151538$202306151631$ICE 941$$1$$$$$$", + "price": { + "amount": 29.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2990 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000732", + "name": "Bad Oeynhausen", + "location": { + "type": "location", + "id": "8000732", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T14:00:00+02:00", + "plannedDeparture": "2023-06-15T14:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T14:18:00+02:00", + "plannedArrival": "2023-06-15T14:18:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|290018|0|80|-1", + "line": { + "type": "line", + "id": "re-89719", + "fahrtNr": null, + "name": "RE 89719", + "public": true, + "productName": "RE" + }, + "direction": null, + "currentLocation": { + "type": "location", + "latitude": 50.93671, + "longitude": 6.994884 + }, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "1", + "plannedDeparturePlatform": "1", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000732", + "name": "Bad Oeynhausen", + "location": { + "type": "location", + "id": "8000732", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T14:37:00+02:00", + "plannedDeparture": "2023-06-15T14:37:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T15:21:00+02:00", + "plannedArrival": "2023-06-15T15:21:00+02:00", + "arrivalDelay": 0, + "reachable": true, + "tripId": "1|322325|0|80|-1", + "line": { + "type": "line", + "id": "ic-145", + "fahrtNr": null, + "name": "IC 145", + "public": true, + "productName": "IC" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": "prognosed", + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151400$202306151418$RE 89719$$1$$$$$$§T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151437$202306151521$IC 145$$1$$$$$$", + "price": { + "amount": 31, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3100 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T13:38:00+02:00", + "plannedDeparture": "2023-06-15T13:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T14:31:00+02:00", + "plannedArrival": "2023-06-15T14:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|222817|0|80|-1", + "line": { + "type": "line", + "id": "ice-849", + "fahrtNr": null, + "name": "ICE 849", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151338$202306151431$ICE 849$$1$$$$$$", + "price": { + "amount": 34.1, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3410 + } + } + ] + } + ], + "from": "2023-06-15T13:00:00+02:00", + "to": "2023-06-15T16:00:00+02:00", + "bestPrice": { + "amount": 29.9, + "currency": "EUR" + } + }, + { + "journeys": [ + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000732", + "name": "Bad Oeynhausen", + "location": { + "type": "location", + "id": "8000732", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T18:00:00+02:00", + "plannedDeparture": "2023-06-15T18:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T18:18:00+02:00", + "plannedArrival": "2023-06-15T18:18:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|290099|0|80|-1", + "line": { + "type": "line", + "id": "re-89727", + "fahrtNr": null, + "name": "RE 89727", + "public": true, + "productName": "RE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "1", + "plannedDeparturePlatform": "1", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000732", + "name": "Bad Oeynhausen", + "location": { + "type": "location", + "id": "8000732", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T18:37:00+02:00", + "plannedDeparture": "2023-06-15T18:37:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T19:21:00+02:00", + "plannedArrival": "2023-06-15T19:21:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|322447|0|80|-1", + "line": { + "type": "line", + "id": "ic-149", + "fahrtNr": null, + "name": "IC 149", + "public": true, + "productName": "IC" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151800$202306151818$RE 89727$$1$$$$$$§T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151837$202306151921$IC 149$$1$$$$$$", + "price": { + "amount": 28.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2890 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T17:38:00+02:00", + "plannedDeparture": "2023-06-15T17:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T18:31:00+02:00", + "plannedArrival": "2023-06-15T18:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|223803|0|80|-1", + "line": { + "type": "line", + "id": "ice-943", + "fahrtNr": null, + "name": "ICE 943", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151738$202306151831$ICE 943$$1$$$$$$", + "price": { + "amount": 29.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2990 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T18:38:00+02:00", + "plannedDeparture": "2023-06-15T18:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T19:31:00+02:00", + "plannedArrival": "2023-06-15T19:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|220731|0|80|-1", + "line": { + "type": "line", + "id": "ice-643", + "fahrtNr": null, + "name": "ICE 643", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151838$202306151931$ICE 643$$1$$$$$$", + "price": { + "amount": 29.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2990 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T16:00:00+02:00", + "plannedDeparture": "2023-06-15T16:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T16:30:00+02:00", + "plannedArrival": "2023-06-15T16:30:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|290056|0|80|-1", + "line": { + "type": "line", + "id": "re-89723", + "fahrtNr": null, + "name": "RE 89723", + "public": true, + "productName": "RE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "13", + "plannedDeparturePlatform": "13", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T16:47:00+02:00", + "plannedDeparture": "2023-06-15T16:47:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T17:21:00+02:00", + "plannedArrival": "2023-06-15T17:21:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|322378|0|80|-1", + "line": { + "type": "line", + "id": "ic-147", + "fahrtNr": null, + "name": "IC 147", + "public": true, + "productName": "IC" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151600$202306151630$RE 89723$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151647$202306151721$IC 147$$1$$$$$$", + "price": { + "amount": 31, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3100 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T16:38:00+02:00", + "plannedDeparture": "2023-06-15T16:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T17:31:00+02:00", + "plannedArrival": "2023-06-15T17:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|220684|0|80|-1", + "line": { + "type": "line", + "id": "ice-641", + "fahrtNr": null, + "name": "ICE 641", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151638$202306151731$ICE 641$$1$$$$$$", + "price": { + "amount": 34.1, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 3410 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T18:42:00+02:00", + "plannedDeparture": "2023-06-15T18:42:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T19:55:00+02:00", + "plannedArrival": "2023-06-15T19:55:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|277033|0|80|-1", + "line": { + "type": "line", + "id": "flx-1239", + "fahrtNr": null, + "name": "FLX 1239", + "public": true, + "productName": "FLX" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "10", + "plannedDeparturePlatform": "10", + "departurePrognosisType": null, + "remarks": [ + { + "text": "RP", + "type": "hint", + "code": "compulsory-reservation", + "summary": "compulsory seat reservation" + } + ] + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151842$202306151955$FLX 1239$$1$$$$$$", + "remarks": [], + "price": { + "amount": -0.01, + "currency": "EUR" + }, + "tickets": [ + { + "name": null, + "priceObj": { + "amount": -1 + } + } + ] + } + ], + "from": "2023-06-15T16:00:00+02:00", + "to": "2023-06-15T19:00:00+02:00", + "bestPrice": { + "amount": 28.9, + "currency": "EUR" + } + }, + { + "journeys": [ + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T20:38:00+02:00", + "plannedDeparture": "2023-06-15T20:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T21:31:00+02:00", + "plannedArrival": "2023-06-15T21:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|220789|0|80|-1", + "line": { + "type": "line", + "id": "ice-645", + "fahrtNr": null, + "name": "ICE 645", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152038$202306152131$ICE 645$$1$$$$$$", + "price": { + "amount": 9.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 990 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T22:24:00+02:00", + "plannedDeparture": "2023-06-15T22:24:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T23:51:00+02:00", + "plannedArrival": "2023-06-15T23:51:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|1636803|0|80|-1", + "line": { + "type": "line", + "id": "wfb95847", + "fahrtNr": null, + "name": "WFB95847", + "public": true, + "productName": "WFB" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "12", + "plannedDeparturePlatform": "12", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152224$202306152351$WFB95847$$1$$$$$$", + "price": { + "amount": 23.5, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2350 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T23:00:00+02:00", + "plannedDeparture": "2023-06-15T23:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T23:30:00+02:00", + "plannedArrival": "2023-06-15T23:30:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|290203|0|80|-1", + "line": { + "type": "line", + "id": "re-89737", + "fahrtNr": null, + "name": "RE 89737", + "public": true, + "productName": "RE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "13", + "plannedDeparturePlatform": "13", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8005662", + "name": "Stadthagen", + "location": { + "type": "location", + "id": "8005662", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": false, + "national": false, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T23:35:00+02:00", + "plannedDeparture": "2023-06-15T23:35:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T23:49:00+02:00", + "plannedArrival": "2023-06-15T23:49:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|1089125|0|80|-1", + "line": { + "type": "line", + "id": "s-1", + "fahrtNr": null, + "name": "S 1", + "public": true, + "productName": "S" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "3", + "plannedDeparturePlatform": "3", + "departurePrognosisType": null + }, + { + "origin": { + "type": "stop", + "id": "8005662", + "name": "Stadthagen", + "location": { + "type": "location", + "id": "8005662", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": false, + "national": false, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8089194", + "name": "Hannover Hbf ZOB", + "location": { + "type": "location", + "id": "8089194", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + }, + "station": { + "type": "station", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + } + }, + "departure": "2023-06-15T23:55:00+02:00", + "plannedDeparture": "2023-06-15T23:55:00+02:00", + "departureDelay": null, + "arrival": "2023-06-16T01:31:00+02:00", + "plannedArrival": "2023-06-16T01:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|1088997|0|80|-1", + "line": { + "type": "line", + "id": "bus-ev", + "fahrtNr": null, + "name": "Bus EV", + "public": true, + "productName": "Bus" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": null, + "plannedDeparturePlatform": null, + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152300$202306152330$RE 89737$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Stadthagen@L=8005662@a=0@$202306152335$202306152349$S 1$$1$$$$$$§T$A=1@O=Stadthagen@L=8005662@a=0@$A=1@O=Hannover Hbf ZOB@L=8089194@a=0@$202306152355$202306160131$Bus EV$$1$$$$$$", + "remarks": [], + "price": { + "amount": 23.5, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2350 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "departure": "2023-06-15T20:00:00+02:00", + "plannedDeparture": "2023-06-15T20:00:00+02:00", + "departureDelay": 0, + "arrival": "2023-06-15T20:30:00+02:00", + "plannedArrival": "2023-06-15T20:30:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|290132|0|80|-1", + "line": { + "type": "line", + "id": "re-89731", + "fahrtNr": null, + "name": "RE 89731", + "public": true, + "productName": "RE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "13", + "plannedDeparturePlatform": "13", + "departurePrognosisType": "prognosed" + }, + { + "origin": { + "type": "stop", + "id": "8000252", + "name": "Minden(Westf)", + "location": { + "type": "location", + "id": "8000252", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": false, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": false, + "taxi": true + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T20:47:00+02:00", + "plannedDeparture": "2023-06-15T20:47:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T21:22:00+02:00", + "plannedArrival": "2023-06-15T21:22:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|325344|0|80|-1", + "line": { + "type": "line", + "id": "ic-241", + "fahrtNr": null, + "name": "IC 241", + "public": true, + "productName": "IC" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152000$202306152030$RE 89731$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152047$202306152122$IC 241$$1$$$$$$", + "price": { + "amount": 24.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2490 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T21:38:00+02:00", + "plannedDeparture": "2023-06-15T21:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T22:31:00+02:00", + "plannedArrival": "2023-06-15T22:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|223950|0|80|-1", + "line": { + "type": "line", + "id": "ice-947", + "fahrtNr": null, + "name": "ICE 947", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152138$202306152231$ICE 947$$1$$$$$$", + "price": { + "amount": 27.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2790 + } + } + ] + }, + { + "type": "journey", + "legs": [ + { + "origin": { + "type": "stop", + "id": "8000036", + "name": "Bielefeld Hbf", + "location": { + "type": "location", + "id": "8000036", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": false, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "destination": { + "type": "stop", + "id": "8000152", + "name": "Hannover Hbf", + "location": { + "type": "location", + "id": "8000152", + "latitude": 0, + "longitude": 0 + }, + "products": { + "nationalExpress": true, + "national": true, + "regionalExpress": true, + "regional": true, + "suburban": true, + "bus": true, + "ferry": false, + "subway": false, + "tram": true, + "taxi": false + } + }, + "departure": "2023-06-15T19:38:00+02:00", + "plannedDeparture": "2023-06-15T19:38:00+02:00", + "departureDelay": null, + "arrival": "2023-06-15T20:31:00+02:00", + "plannedArrival": "2023-06-15T20:31:00+02:00", + "arrivalDelay": null, + "reachable": true, + "tripId": "1|223858|0|80|-1", + "line": { + "type": "line", + "id": "ice-945", + "fahrtNr": null, + "name": "ICE 945", + "public": true, + "productName": "ICE" + }, + "direction": null, + "arrivalPlatform": null, + "plannedArrivalPlatform": null, + "arrivalPrognosisType": null, + "departurePlatform": "9", + "plannedDeparturePlatform": "9", + "departurePrognosisType": null + } + ], + "refreshToken": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151938$202306152031$ICE 945$$1$$$$$$", + "price": { + "amount": 29.9, + "currency": "EUR", + "hint": null + }, + "tickets": [ + { + "name": "To offer selection", + "priceObj": { + "amount": 2990 + } + } + ] + } + ], + "from": "2023-06-15T19:00:00+02:00", + "to": "2023-06-16T00:00:00+02:00", + "bestPrice": { + "amount": 9.9, + "currency": "EUR" + } + }, + { + "journeys": [], + "from": "2023-06-15T00:00:00+02:00", + "to": "2023-06-15T07:00:00+02:00", + "bestPrice": null + }, + { + "journeys": [], + "from": "2023-06-15T07:00:00+02:00", + "to": "2023-06-15T10:00:00+02:00", + "bestPrice": null + } + ], + "realtimeDataUpdatedAt": 1686819428 +} +`; + +const dbBestPrices = JSON.parse(json); + +export { + dbBestPrices, +}; diff --git a/test/fixtures/db-bestprice.json b/test/fixtures/db-bestprice.json new file mode 100644 index 00000000..6e7e0bce --- /dev/null +++ b/test/fixtures/db-bestprice.json @@ -0,0 +1,2519 @@ +{ + "ver": "1.34", + "ext": "DB.R21.12.a", + "lang": "eng", + "id": "8d42fhgw2xgq92ck", + "err": "OK", + "cInfo": { + "code": "OK" + }, + "graph": { + "id": "standard", + "index": 0 + }, + "subGraph": { + "id": "global", + "index": 0 + }, + "view": { + "id": "standard", + "index": 0, + "type": "WGS84" + }, + "svcResL": [ + { + "meth": "BestPriceSearch", + "err": "OK", + "res": { + "common": { + "locL": [ + { + "lid": "A=1@O=Bielefeld Hbf@X=0@Y=0@L=8000036@", + "type": "S", + "name": "Bielefeld Hbf", + "icoX": 1, + "extId": "8000036", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 303 + }, + { + "lid": "A=1@O=Hannover Hbf@X=0@Y=0@L=8000152@", + "type": "S", + "name": "Hannover Hbf", + "icoX": 1, + "extId": "8000152", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 319 + }, + { + "lid": "A=1@O=Minden(Westf)@X=0@Y=0@L=8000252@", + "type": "S", + "name": "Minden(Westf)", + "icoX": 1, + "extId": "8000252", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 571 + }, + { + "lid": "A=1@O=Bad Oeynhausen@X=0@Y=0@L=8000732@", + "type": "S", + "name": "Bad Oeynhausen", + "icoX": 1, + "extId": "8000732", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 555 + }, + { + "lid": "A=1@O=Stadthagen@X=0@Y=0@L=8005662@", + "type": "S", + "name": "Stadthagen", + "icoX": 1, + "extId": "8005662", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 568 + }, + { + "lid": "A=1@O=Hannover Hbf ZOB@X=0@Y=0@L=8089194@", + "type": "S", + "name": "Hannover Hbf ZOB", + "icoX": 1, + "extId": "8089194", + "state": "F", + "crd": { + "x": 0, + "y": 0 + }, + "pCls": 319, + "mMastLocX": 1 + } + ], + "prodL": [ + { + "name": "ICE 847", + "icoX": 0, + "prodCtx": { + "name": "ICE 847", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "RE 89715", + "icoX": 2, + "prodCtx": { + "name": "RE 89715", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "IC 143", + "icoX": 3, + "prodCtx": { + "name": "IC 143", + "catOut": "IC", + "catCode": "1" + } + }, + { + "name": "ICE 547", + "icoX": 0, + "prodCtx": { + "name": "ICE 547", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "ICE 849", + "icoX": 0, + "prodCtx": { + "name": "ICE 849", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "RE 89719", + "icoX": 2, + "prodCtx": { + "name": "RE 89719", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "IC 145", + "icoX": 3, + "prodCtx": { + "name": "IC 145", + "catOut": "IC", + "catCode": "1" + } + }, + { + "name": "ICE 549", + "icoX": 0, + "prodCtx": { + "name": "ICE 549", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "ICE 941", + "icoX": 0, + "prodCtx": { + "name": "ICE 941", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "RE 89723", + "icoX": 2, + "prodCtx": { + "name": "RE 89723", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "IC 147", + "icoX": 3, + "prodCtx": { + "name": "IC 147", + "catOut": "IC", + "catCode": "1" + } + }, + { + "name": "ICE 641", + "icoX": 0, + "prodCtx": { + "name": "ICE 641", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "ICE 943", + "icoX": 0, + "prodCtx": { + "name": "ICE 943", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "RE 89727", + "icoX": 2, + "prodCtx": { + "name": "RE 89727", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "IC 149", + "icoX": 3, + "prodCtx": { + "name": "IC 149", + "catOut": "IC", + "catCode": "1" + } + }, + { + "name": "ICE 643", + "icoX": 0, + "prodCtx": { + "name": "ICE 643", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "FLX 1239", + "icoX": 4, + "prodCtx": { + "name": "FLX 1239", + "catOut": "FLX", + "catCode": "2" + } + }, + { + "name": "ICE 945", + "icoX": 0, + "prodCtx": { + "name": "ICE 945", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "RE 89731", + "icoX": 2, + "prodCtx": { + "name": "RE 89731", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "IC 241", + "icoX": 3, + "prodCtx": { + "name": "IC 241", + "catOut": "IC", + "catCode": "1" + } + }, + { + "name": "ICE 645", + "icoX": 0, + "prodCtx": { + "name": "ICE 645", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "ICE 947", + "icoX": 0, + "prodCtx": { + "name": "ICE 947", + "catOut": "ICE", + "catCode": "0" + } + }, + { + "name": "WFB95847", + "icoX": 7, + "prodCtx": { + "name": "WFB95847", + "catOut": "WFB", + "catCode": "3" + } + }, + { + "name": "RE 89737", + "icoX": 2, + "prodCtx": { + "name": "RE 89737", + "catOut": "RE", + "catCode": "3" + } + }, + { + "name": "S 1", + "icoX": 8, + "prodCtx": { + "name": "S 1", + "catOut": "S", + "catCode": "4" + } + }, + { + "name": "Bus EV", + "icoX": 9, + "prodCtx": { + "name": "Bus EV", + "catOut": "Bus", + "catCode": "3" + } + } + ], + "remL": [ + { + "type": "A", + "code": "RP", + "icoX": 5, + "txtN": "RP" + }, + { + "type": "C", + "code": "", + "icoX": 6, + "txtN": "Includes trains requiring a reservation" + }, + { + "type": "H", + "code": "text.connection.section.arrival.date.deviation", + "icoX": 10, + "txtN": "Arrival Friday, 2023-06-16" + }, + { + "type": "C", + "code": "", + "icoX": 11, + "txtN": "Current information available." + } + ], + "icoL": [ + { + "res": "ICE" + }, + { + "res": "STA" + }, + { + "res": "RE" + }, + { + "res": "IC" + }, + { + "res": "FLX" + }, + { + "res": "attr_booking" + }, + { + "res": "ResHint" + }, + { + "res": "WFB" + }, + { + "res": "S" + }, + { + "res": "Bus" + }, + { + "res": "attr_day_change" + }, + { + "res": "HimInfo" + } + ], + "tcocL": [ + { + "c": "FIRST", + "r": 3 + }, + { + "c": "SECOND", + "r": 3 + }, + { + "c": "SECOND", + "r": 2 + }, + { + "c": "FIRST", + "r": 2 + }, + { + "c": "SECOND", + "r": 1 + }, + { + "c": "FIRST", + "r": 1 + } + ], + "lDrawStyleL": [ + { + "sIcoX": 0, + "type": "SOLID" + }, + { + "type": "SOLID" + }, + { + "sIcoX": 2, + "type": "SOLID" + }, + { + "sIcoX": 3, + "type": "SOLID" + }, + { + "sIcoX": 4, + "type": "SOLID" + }, + { + "sIcoX": 7, + "type": "SOLID" + }, + { + "sIcoX": 8, + "type": "SOLID" + }, + { + "sIcoX": 9, + "type": "SOLID" + } + ] + }, + "outConL": [ + { + "cid": "A0-0", + "date": "20230615", + "dur": "005400", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 0, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "113800", + "dTimeR": "113800", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 0, + "aTimeS": "123100", + "aTimeR": "123100", + "aProgType": "PROGNOSED", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|222760|0|80|-1", + "prodX": 0, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151138$202306151231$ICE 847$$3$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151138$202306151231$ICE 847$$3$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": false, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3410 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "9f68b57e_3", + "cksumDti": "eb305516_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 1 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A0-1", + "date": "20230615", + "dur": "012200", + "chg": 1, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 1, + "dPltfS": { + "type": "PL", + "txt": "13" + }, + "dTimeS": "120000", + "dTimeR": "120000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 2, + "aProdX": 1, + "aTimeS": "123000", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|289982|0|80|-1", + "prodX": 1, + "status": "P", + "isRchbl": true, + "pos": { + "x": 7527747, + "y": 51534987 + }, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151200$202306151230$RE 89715$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "003000" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 2, + "dProdX": 2, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "124700", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 2, + "aTimeS": "132200", + "aTimeR": "132200", + "aProgType": "PROGNOSED", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|322267|0|80|-1", + "prodX": 2, + "status": "P", + "isRchbl": true, + "pos": { + "x": 6777273, + "y": 52273163 + }, + "ctxRecon": "T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151247$202306151322$IC 143$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 3, + "resLDrawStyleX": 1, + "durS": "003500" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151200$202306151230$RE 89715$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151247$202306151322$IC 143$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": false, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3100 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "60458781_3", + "cksumDti": "8c585003_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A0-2", + "date": "20230615", + "dur": "004900", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 3, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "123800", + "dTimeR": "124200", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 3, + "aTimeS": "133100", + "aTimeR": "133100", + "aProgType": "PROGNOSED", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|219255|0|80|-1", + "prodX": 3, + "status": "P", + "isRchbl": true, + "pos": { + "x": 6792231, + "y": 51255836 + }, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151238$202306151331$ICE 547$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151238$202306151331$ICE 547$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": false, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3410 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "cf2075a0_3", + "cksumDti": "303937c8_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 1 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A1-0", + "date": "20230615", + "dur": "005400", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 4, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "133800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 4, + "aTimeS": "143100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|222817|0|80|-1", + "prodX": 4, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151338$202306151431$ICE 849$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151338$202306151431$ICE 849$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": false, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3410 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "02227fe7_3", + "cksumDti": "ba2e51fb_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A1-1", + "date": "20230615", + "dur": "012100", + "chg": 1, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 5, + "dPltfS": { + "type": "PL", + "txt": "1" + }, + "dTimeS": "140000", + "dTimeR": "140000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 3, + "aProdX": 5, + "aTimeS": "141800", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|290018|0|80|-1", + "prodX": 5, + "status": "P", + "isRchbl": true, + "pos": { + "x": 6994884, + "y": 50936710 + }, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151400$202306151418$RE 89719$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "001800" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 3, + "dProdX": 6, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "143700", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 6, + "aTimeS": "152100", + "aTimeR": "152100", + "aProgType": "PROGNOSED", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|322325|0|80|-1", + "prodX": 6, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151437$202306151521$IC 145$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 3, + "resLDrawStyleX": 1, + "durS": "004400" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151400$202306151418$RE 89719$$1$$$$$$§T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151437$202306151521$IC 145$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": false, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3100 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "586d45ab_3", + "cksumDti": "71a9fd0f_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A1-2", + "date": "20230615", + "dur": "005300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 7, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "143800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 7, + "aTimeS": "153100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|219321|0|80|-1", + "prodX": 7, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151438$202306151531$ICE 549$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151438$202306151531$ICE 549$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "e1f54f68_3", + "cksumDti": "a999e56a_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A1-3", + "date": "20230615", + "dur": "005400", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 8, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "153800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 8, + "aTimeS": "163100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|223754|0|80|-1", + "prodX": 8, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151538$202306151631$ICE 941$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151538$202306151631$ICE 941$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "a201b231_3", + "cksumDti": "509387f4_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-0", + "date": "20230615", + "dur": "012100", + "chg": 1, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 9, + "dPltfS": { + "type": "PL", + "txt": "13" + }, + "dTimeS": "160000", + "dTimeR": "160000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 2, + "aProdX": 9, + "aTimeS": "163000", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|290056|0|80|-1", + "prodX": 9, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151600$202306151630$RE 89723$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "003000" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 2, + "dProdX": 10, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "164700", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 10, + "aTimeS": "172100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|322378|0|80|-1", + "prodX": 10, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151647$202306151721$IC 147$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 3, + "resLDrawStyleX": 1, + "durS": "003400" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306151600$202306151630$RE 89723$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151647$202306151721$IC 147$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3100 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "89aa529b_3", + "cksumDti": "ed1cad22_3", + "dTrnCmpSX": { + "tcocX": [ + 3, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-1", + "date": "20230615", + "dur": "005300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 11, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "163800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 11, + "aTimeS": "173100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|220684|0|80|-1", + "prodX": 11, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151638$202306151731$ICE 641$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151638$202306151731$ICE 641$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 3410 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "dd9a5f4a_3", + "cksumDti": "018c4136_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 1 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-2", + "date": "20230615", + "dur": "005400", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 12, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "173800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 12, + "aTimeS": "183100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|223803|0|80|-1", + "prodX": 12, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151738$202306151831$ICE 943$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151738$202306151831$ICE 943$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "4cfc4bf6_3", + "cksumDti": "f054644e_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 1 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-3", + "date": "20230615", + "dur": "012100", + "chg": 1, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 13, + "dPltfS": { + "type": "PL", + "txt": "1" + }, + "dTimeS": "180000", + "dTimeR": "180000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 3, + "aProdX": 13, + "aTimeS": "181800", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|290099|0|80|-1", + "prodX": 13, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151800$202306151818$RE 89727$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "001800" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 3, + "dProdX": 14, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "183700", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 14, + "aTimeS": "192100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|322447|0|80|-1", + "prodX": 14, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151837$202306151921$IC 149$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 3, + "resLDrawStyleX": 1, + "durS": "004400" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Bad Oeynhausen@L=8000732@a=0@$202306151800$202306151818$RE 89727$$1$$$$$$§T$A=1@O=Bad Oeynhausen@L=8000732@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151837$202306151921$IC 149$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2890 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "5ef7b86c_3", + "cksumDti": "47379f47_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-4", + "date": "20230615", + "dur": "005300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 15, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "183800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 15, + "aTimeS": "193100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|220731|0|80|-1", + "prodX": 15, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151838$202306151931$ICE 643$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151838$202306151931$ICE 643$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "b767fa8f_3", + "cksumDti": "733286e4_3", + "dTrnCmpSX": { + "tcocX": [ + 3, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A2-5", + "date": "20230615", + "dur": "011300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 16, + "dPltfS": { + "type": "PL", + "txt": "10" + }, + "dTimeS": "184200", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 16, + "aTimeS": "195500", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|277033|0|80|-1", + "prodX": 16, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151842$202306151955$FLX 1239$$1$$$$$$", + "msgL": [ + { + "type": "REM", + "remX": 0, + "sty": "I", + "tagL": [ + "RES_JNY_DTL_L" + ], + "sort": 818413568 + } + ], + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 4, + "resLDrawStyleX": 1, + "durS": "011300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151842$202306151955$FLX 1239$$1$$$$$$", + "trfRes": { + "statusCode": "NA", + "fareSetL": [ + { + "fareL": [ + { + "desc": "Fares not available", + "isFromPrice": false, + "isPartPrice": false, + "isBookable": false, + "isUpsell": false, + "price": { + "amount": -1 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "msgL": [ + { + "type": "REM", + "remX": 1, + "sty": "I", + "prio": 200, + "fIdx": -1, + "tIdx": -1, + "tagL": [ + "SUM_CON_FTR_H3" + ], + "sort": 818413568 + } + ], + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "445a7b80_3", + "cksumDti": "35e4fdff_3", + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-0", + "date": "20230615", + "dur": "005400", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 17, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "193800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 17, + "aTimeS": "203100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|223858|0|80|-1", + "prodX": 17, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151938$202306152031$ICE 945$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306151938$202306152031$ICE 945$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "1edfbe71_3", + "cksumDti": "a67c2ffd_3", + "dTrnCmpSX": { + "tcocX": [ + 0, + 1 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-1", + "date": "20230615", + "dur": "012200", + "chg": 1, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 18, + "dPltfS": { + "type": "PL", + "txt": "13" + }, + "dTimeS": "200000", + "dTimeR": "200000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 2, + "aProdX": 18, + "aTimeS": "203000", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|290132|0|80|-1", + "prodX": 18, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152000$202306152030$RE 89731$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "003000" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 2, + "dProdX": 19, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "204700", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 19, + "aTimeS": "212200", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|325344|0|80|-1", + "prodX": 19, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152047$202306152122$IC 241$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 3, + "resLDrawStyleX": 1, + "durS": "003500" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152000$202306152030$RE 89731$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152047$202306152122$IC 241$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2490 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "d5e1b451_3", + "cksumDti": "3da83d88_3", + "dTrnCmpSX": { + "tcocX": [ + 3, + 4 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-2", + "date": "20230615", + "dur": "005300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 20, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "203800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 20, + "aTimeS": "213100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|220789|0|80|-1", + "prodX": 20, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152038$202306152131$ICE 645$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152038$202306152131$ICE 645$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 990 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "2a0221dd_3", + "cksumDti": "66be055d_3", + "dTrnCmpSX": { + "tcocX": [ + 5, + 4 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-3", + "date": "20230615", + "dur": "005300", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 21, + "dPltfS": { + "type": "PL", + "txt": "9" + }, + "dTimeS": "213800", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 21, + "aTimeS": "223100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|223950|0|80|-1", + "prodX": 21, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152138$202306152231$ICE 947$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 0, + "resLDrawStyleX": 1, + "durS": "005300" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152138$202306152231$ICE 947$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2790 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "6caaebab_3", + "cksumDti": "bf2f13da_3", + "dTrnCmpSX": { + "tcocX": [ + 5, + 2 + ] + }, + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-4", + "date": "20230615", + "dur": "012700", + "chg": 0, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 22, + "dPltfS": { + "type": "PL", + "txt": "12" + }, + "dTimeS": "222400", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 1, + "aProdX": 22, + "aTimeS": "235100", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|1636803|0|80|-1", + "prodX": 22, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152224$202306152351$WFB95847$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 5, + "resLDrawStyleX": 1, + "durS": "012700" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Hannover Hbf@L=8000152@a=0@$202306152224$202306152351$WFB95847$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "desc": "NDS-Tariff", + "descOverv": "NDS-Tariff", + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2350 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "4bd9fb8c_3", + "cksumDti": "75c6c6ec_3", + "intvlSubscr": "U", + "originType": "INITIAL" + }, + { + "cid": "A3-5", + "date": "20230615", + "dur": "023100", + "chg": 2, + "dep": {}, + "arr": {}, + "secL": [ + { + "type": "JNY", + "dep": { + "locX": 0, + "dProdX": 23, + "dPltfS": { + "type": "PL", + "txt": "13" + }, + "dTimeS": "230000", + "dTimeR": "230000", + "dProgType": "PROGNOSED", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 2, + "aProdX": 23, + "aTimeS": "233000", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|290203|0|80|-1", + "prodX": 23, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152300$202306152330$RE 89737$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 2, + "resLDrawStyleX": 1, + "durS": "003000" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 2, + "dProdX": 24, + "dPltfS": { + "type": "PL", + "txt": "3" + }, + "dTimeS": "233500", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 4, + "aProdX": 24, + "aTimeS": "234900", + "aTZOffset": 120, + "type": "N" + }, + "jny": { + "jid": "1|1089125|0|80|-1", + "prodX": 24, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Stadthagen@L=8005662@a=0@$202306152335$202306152349$S 1$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 6, + "resLDrawStyleX": 1, + "durS": "001400" + }, + "resState": "N", + "resRecommendation": "N" + }, + { + "type": "JNY", + "dep": { + "locX": 4, + "dProdX": 25, + "dTimeS": "235500", + "dTZOffset": 120, + "type": "N" + }, + "arr": { + "locX": 5, + "aProdX": 25, + "aTimeS": "01013100", + "aTZOffset": 120, + "msgL": [ + { + "type": "REM", + "remX": 2, + "sty": "I", + "tagL": [ + "RES_LOC_H3" + ], + "sort": 147324928 + } + ], + "type": "N" + }, + "jny": { + "jid": "1|1088997|0|80|-1", + "prodX": 25, + "status": "P", + "isRchbl": true, + "ctxRecon": "T$A=1@O=Stadthagen@L=8005662@a=0@$A=1@O=Hannover Hbf ZOB@L=8089194@a=0@$202306152355$202306160131$Bus EV$$1$$$$$$", + "approxDelay": true, + "subscr": "F", + "sumLDrawStyleX": 7, + "resLDrawStyleX": 1, + "durS": "013600" + }, + "resState": "N", + "resRecommendation": "N" + } + ], + "ctxRecon": "T$A=1@O=Bielefeld Hbf@L=8000036@a=0@$A=1@O=Minden(Westf)@L=8000252@a=0@$202306152300$202306152330$RE 89737$$1$$$$$$§T$A=1@O=Minden(Westf)@L=8000252@a=0@$A=1@O=Stadthagen@L=8005662@a=0@$202306152335$202306152349$S 1$$1$$$$$$§T$A=1@O=Stadthagen@L=8005662@a=0@$A=1@O=Hannover Hbf ZOB@L=8089194@a=0@$202306152355$202306160131$Bus EV$$1$$$$$$", + "trfRes": { + "statusCode": "OK", + "fareSetL": [ + { + "fareL": [ + { + "desc": "NDS-Tariff", + "descOverv": "NDS-Tariff", + "isFromPrice": true, + "isPartPrice": false, + "isBookable": true, + "isUpsell": false, + "targetCtx": "D", + "buttonText": "To offer selection", + "price": { + "amount": 2350 + }, + "retPriceIsCompletePrice": false, + "retPrice": -1 + } + ] + } + ] + }, + "msgL": [ + { + "type": "REM", + "remX": 3, + "sty": "I", + "prio": 200, + "fIdx": -1, + "tIdx": -1, + "tagL": [ + "SUM_CON_FTR_H3" + ], + "sort": 818413568 + } + ], + "conSubscr": "U", + "resState": "N", + "resRecommendation": "N", + "recState": "U", + "sotRating": 0, + "isSotCon": false, + "showARSLink": false, + "cksum": "7b7a355a_3", + "cksumDti": "7799c794_3", + "intvlSubscr": "U", + "originType": "INITIAL" + } + ], + "fpB": "20221211", + "fpE": "20231209", + "bfATS": -1, + "bfIOSTS": -1, + "planrtTS": "1686819428", + "outDaySegL": [ + { + "conRefL": [ + 1, + 0, + 2 + ], + "id": "2", + "fromDate": "20230615", + "fromTime": "100000", + "toDate": "20230615", + "toTime": "130000", + "bestPrice": { + "amount": 3100 + }, + "segmentHeightIndicator": 100, + "isCompletePrice": false, + "tbpState": 0 + }, + { + "conRefL": [ + 5, + 6, + 4, + 3 + ], + "id": "3", + "fromDate": "20230615", + "fromTime": "130000", + "toDate": "20230615", + "toTime": "160000", + "bestPrice": { + "amount": 2990 + }, + "segmentHeightIndicator": 96, + "isCompletePrice": false, + "tbpState": 0 + }, + { + "conRefL": [ + 10, + 9, + 11, + 7, + 8, + 12 + ], + "id": "4", + "fromDate": "20230615", + "fromTime": "160000", + "toDate": "20230615", + "toTime": "190000", + "bestPrice": { + "amount": 2890 + }, + "segmentHeightIndicator": 93, + "isCompletePrice": false, + "tbpState": 0 + }, + { + "conRefL": [ + 15, + 17, + 18, + 14, + 16, + 13 + ], + "id": "5", + "fromDate": "20230615", + "fromTime": "190000", + "toDate": "20230615", + "toTime": "01000000", + "bestPrice": { + "amount": 990 + }, + "segmentHeightIndicator": 31, + "isCompletePrice": false, + "tbpState": 0 + }, + { + "id": "0", + "fromDate": "20230615", + "fromTime": "000000", + "toDate": "20230615", + "toTime": "070000", + "bestPrice": { + "amount": 0 + }, + "segmentHeightIndicator": 0, + "isCompletePrice": false, + "tbpState": 4 + }, + { + "id": "1", + "fromDate": "20230615", + "fromTime": "070000", + "toDate": "20230615", + "toTime": "100000", + "bestPrice": { + "amount": 0 + }, + "segmentHeightIndicator": 0, + "isCompletePrice": false, + "tbpState": 4 + } + ], + "outTbpState": 0 + } + } + ] +} \ No newline at end of file diff --git a/tools/debug-cli/cli.js b/tools/debug-cli/cli.js index e625858e..83eef50c 100755 --- a/tools/debug-cli/cli.js +++ b/tools/debug-cli/cli.js @@ -24,6 +24,9 @@ const methodsAndTheirArgs = [ ['journeys', 0, toString], ['journeys', 1, toString], ['journeys', 2, parseJsObject], + ['bestPrices', 0, toString], + ['bestPrices', 1, toString], + ['bestPrices', 2, parseJsObject], ['refreshJourney', 0, toString], ['refreshJourney', 1, parseJsObject], ['journeysFromTrip', 0, toString],