A trip planning request. Some parameters may not be honored by the trip planner for some or all itineraries. For example, maxWalkDistance may be relaxed if the alternative is to not provide a route. All defaults should be specified here in the RoutingRequest, NOT as annotations on query parameters in web services that create RoutingRequests. This establishes a priority chain for default values: RoutingRequest field initializers, then JSON router config, then query parameters.
name | data type | constraints | description |
---|---|---|---|
parameters | map of string | The complete list of incoming query parameters. | |
from | GenericLocation | The start location | |
to | GenericLocation | The end location | |
|
|
|
|
|
|
|
|
maxDirectStreetDurationSeconds | number | required | This is the maximum duration in seconds for a direct street search. This is a performance limit and should therefore be set high. Results close to the limit are not guaranteed to be optimal. Use filters to limit what is presented to the client. |
maxAccessEgressDurationSeconds | number | required | This is the maximum duration in seconds for access/egress street searches. This is a performance limit and should therefore be set high. Results close to the limit are not guaranteed to be optimal. Use filters to limit what is presented to the client. |
maxAccessEgressDurationSecondsForMode | map of number | Override the settings in maxAccessEgressDurationSeconds for specific street modes. This is done because some street modes searches are much more resource intensive than others. | |
modes | RequestModes | The access/egress/direct/transit modes allowed for this main request. The parameter "streetSubRequestModes" below is used for a single A Star sub request. // TODO OTP2 Street routing requests should eventually be split into its own request class. | |
streetSubRequestModes | TraverseModeSet | The set of TraverseModes allowed when doing creating sub requests and doing street routing. // TODO OTP2 Street routing requests should eventually be split into its own request class. | |
bicycleOptimizeType | BicycleOptimizeType | The set of characteristics that the user wants to optimize for -- defaults to SAFE. | |
searchWindow | number | This is the time/duration in seconds from the earliest-departure-time(EDT) to
latest-departure-time(LDT). In case of a reverse search it will be the time from earliest
to latest arrival time (LAT - EAT).
All optimal travels that depart within the search window is guarantied to be found. This is sometimes referred to as the Range Raptor Search Window - but could be used in a none Transit search as well; Hence this is named search-window and not raptor-search-window. Do not confuse this with the travel-window, which is the time between EDT to LAT.
Use There is no need to set this when going to the next/previous page any more. |
|
maxJourneyDuration | number | The expected maximum time a journey can last across all possible journeys for the current deployment. Normally you would just do an estimate and add enough slack, so you are sure that there is no journeys that falls outside this window. The parameter is used find all possible dates for the journey and then search only the services which run on those dates. The duration must include access, egress, wait-time and transit time for the whole journey. It should also take low frequency days/periods like holidays into account. In other words, pick the two points within your area that has the worst connection and then try to travel on the worst possible day, and find the maximum journey duration. Using a value that is too high has the effect of including more patterns in the search, hence, making it a bit slower. Recommended values would be from 12 hours(small town/city), 1 day (region) to 2 days (country like Norway). | |
pageCursor | PageCursor | Use the cursor to go to the next or previous "page" of trips.
You should pass in the original request as is.
The next page of itineraries will depart after the current results and the previous page of itineraries will depart before the current results. The paging does not support timeTableView=false and arriveBy=true, this will result in none pareto-optimal results. |
|
timetableView | boolean | required | Search for the best trip options within a time window. If true two itineraries are
considered optimal if one is better on arrival time(earliest wins) and the other is better
on departure time(latest wins).
In combination with
|
arriveBy | boolean | required | Whether the trip should depart at dateTime (false, the default), or arrive at dateTime. |
wheelchairAccessible | boolean | required | Whether the trip must be wheelchair accessible. |
numItineraries | number | required | The maximum number of itineraries to return. In OTP1 this parameter terminates the search,
but in OTP2 it crops the list of itineraries AFTER the search is complete. This parameter is
a post search filter function. A side effect from reducing the result is that OTP2 cannot
guarantee to find all pareto-optimal itineraries when paging. Also, a large search-window
and a small numItineraries waste computer CPU calculation time.
The default value is 50. This is a reasonably high threshold to prevent large amount of data to be returned. Consider tuning the search-window instead of setting this to a small value. |
maxWheelchairSlope | number | required | The maximum slope of streets for wheelchair trips. |
showIntermediateStops | boolean | required | Whether the planner should return intermediate stops lists for transit legs. |
walkSpeed | number | required | max walk/bike speed along streets, in meters per second |
bikeSpeed | number | required | |
bikeWalkingSpeed | number | required | |
carSpeed | number | required | |
locale | string | ||
transferCost | number | required | An extra penalty added on transfers (i.e. all boardings except the first one). Not to be confused with bikeBoardCost and walkBoardCost, which are the cost of boarding a vehicle with and without a bicycle. The boardCosts are used to model the 'usual' perceived cost of using a transit vehicle, and the transferCost is used when a user requests even less transfers. In the latter case, we don't actually optimize for fewest transfers, as this can lead to absurd results. Consider a trip in New York from Grand Army Plaza (the one in Brooklyn) to Kalustyan's at noon. The true lowest transfers route is to wait until midnight, when the 4 train runs local the whole way. The actual fastest route is the 2/3 to the 4/5 at Nevins to the 6 at Union Square, which takes half an hour. Even someone optimizing for fewest transfers doesn't want to wait until midnight. Maybe they would be willing to walk to 7th Ave and take the Q to Union Square, then transfer to the 6. If this takes less than optimize_transfer_penalty seconds, then that's what we'll return. |
|
|
|
|
transferOptimization | TransferOptimizationParameters | Configure the transfer optimization | |
walkReluctance | number | required | A multiplier for how bad walking is, compared to being in transit for equal lengths of time. Defaults to 2. Empirically, values between 10 and 20 seem to correspond well to the concept of not wanting to walk too much without asking for totally ridiculous itineraries, but this observation should in no way be taken as scientific or definitive. Your mileage may vary. |
bikeWalkingReluctance | number | required | |
bikeReluctance | number | required | |
carReluctance | number | required | |
stairsTimeFactor | number | required | How much more time does it take to walk a flight of stairs compared to walking a similar horizontal length Default value is based on: Fujiyama, T., & Tyler, N. (2010). Predicting the walking speed of pedestrians on stairs. Transportation Planning and Technology, 33(2), 177–202. |
stairsReluctance | number | required | Used instead of walk reluctance for stairs |
turnReluctance | number | required | Multiplicative factor on expected turning time. |
elevatorBoardTime | number | required | How long does it take to get an elevator, on average (actually, it probably should be a bit *more* than average, to prevent optimistic trips)? Setting it to "seems like forever," while accurate, will probably prevent OTP from working correctly. |
elevatorBoardCost | number | required | What is the cost of boarding an elevator? |
elevatorHopTime | number | required | How long does it take to advance one floor on an elevator? |
elevatorHopCost | number | required | What is the cost of travelling one floor on an elevator? |
bikeSwitchTime | number | required | Time to get on and off your own bike |
bikeSwitchCost | number | required | Cost of getting on and off your own bike |
vehicleRentalPickupTime | number | required | Time to rent a vehicle |
vehicleRentalPickupCost | number | required | Cost of renting a vehicle. The cost is a bit more than actual time to model the associated cost and trouble. |
vehicleRentalDropoffTime | number | required | Time to drop-off a rented vehicle |
vehicleRentalDropoffCost | number | required | Cost of dropping-off a rented vehicle |
allowedVehicleRentalNetworks | array of string | The vehicle rental networks which may be used. If empty all networks may be used. | |
bannedVehicleRentalNetworks | array of string | The vehicle rental networks which may not be used. If empty, no networks are banned. | |
bikeParkTime | number | required | Time to park a bike |
bikeParkCost | number | required | Cost of parking a bike. |
carParkTime | number | required | Time to park a car |
carParkCost | number | required | Cost of parking a car. |
requiredVehicleParkingTags | array of string | Tags which are required to use a vehicle parking. If empty, no tags are required. | |
bannedVehicleParkingTags | array of string | Tags with which a vehicle parking will not be used. If empty, no tags are banned. | |
carDropoffTime | number | required | Time to park a car in a park and ride, w/o taking into account driving and walking cost (time to park, switch off, pick your stuff, lock the car, etc...) |
carPickupTime | number | required | Time of getting in/out of a carPickup (taxi) |
carPickupCost | number | required | Cost of getting in/out of a carPickup (taxi) |
waitReluctance | number | required | How much worse is waiting for a transit vehicle than being on a transit vehicle, as a multiplier. The default value treats wait and on-vehicle time as the same. It may be tempting to set this higher than walkReluctance (as studies often find this kind of preferences among riders) but the planner will take this literally and walk down a transit line to avoid waiting at a stop. This used to be set less than 1 (0.95) which would make waiting offboard preferable to waiting onboard in an interlined trip. That is also undesirable. If we only tried the shortest possible transfer at each stop to neighboring stop patterns, this problem could disappear. |
|
|
|
|
walkBoardCost | number | required | This prevents unnecessary transfers by adding a cost for boarding a vehicle. This is in addition to the cost of the transfer(walking) and waiting-time. It is also in addition to the transferCost. |
bikeBoardCost | number | required | Separate cost for boarding a vehicle with a bicycle, which is more difficult than on foot. This is in addition to the cost of the transfer(biking) and waiting-time. It is also in addition to the transferCost. |
|
|
|
|
|
|
|
|
|
|
|
|
transferSlack | number | required | A global minimum transfer time (in seconds) that specifies the minimum amount of time that
must pass between exiting one transit vehicle and boarding another. This time is in addition
to time it might take to walk between transit stops, the alightSlack, and the
boardSlack. This time should also be overridden by specific transfer timing
information in transfers.txt
This only apply to transfers between two trips, it does not apply when boarding the first transit. Unit is seconds. Default value is 2 minutes. |
boardSlack | number | required | The number of seconds to add before boarding a transit leg. It is recommended to use the
`boardTimes` in the `router-config.json` to set this for each mode.
Unit is seconds. Default value is 0. |
boardSlackForMode | map of number | Has information how much time boarding a vehicle takes. Can be significant eg in airplanes
or ferries.
If set, the board-slack-for-mode override the more general boardSlack. This enables configuring the board-slack for airplane boarding to be 30 minutes and a slack for bus of 2 minutes. Unit is seconds. Default value is not-set(empty map). |
|
alightSlack | number | required | The number of seconds to add after alighting a transit leg. It is recommended to use the
`alightTimes` in the `router-config.json` to set this for each mode.
Unit is seconds. Default value is 0. |
alightSlackForMode | map of number | Has information how much time alighting a vehicle takes. Can be significant eg in airplanes
or ferries.
If set, the alight-slack-for-mode override the more general alightSlack. This enables configuring the alight-slack for train alighting to be 4 minutes and a bus alight slack to be 0 minutes. Unit is seconds. Default value is not-set(empty map). |
|
maxTransfers | number | Ideally maxTransfers should be set in the router config, not here. Instead the client should be able to pass in a parameter for the max number of additional/extra transfers relative to the best trip (with the fewest possible transfers) within constraint of the other search parameters(TODO OTP2 Expose org.opentripplanner.transit.raptor.api.request.SearchParams#numberOfAdditionalTransfers() in APIs). This might be to complicated to explain to the customer, so we might stick to the old limit, but that have side-effects that you might not find any trips on a day where a critical part of the trip is not available, because of some real-time disruption. | |
bikeTriangleTimeFactor | number | required | For the bike triangle, how important time is. triangleTimeFactor+triangleSlopeFactor+triangleSafetyFactor == 1 |
bikeTriangleSlopeFactor | number | required | For the bike triangle, how important slope is |
bikeTriangleSafetyFactor | number | required | For the bike triangle, how important safety is |
useVehicleRentalAvailabilityInformation | boolean | required | Whether or not vehicle rental availability information will be used to plan vehicle rental trips |
allowKeepingRentedVehicleAtDestination | boolean | required | Whether arriving at the destination with a rented (station) bicycle is allowed without dropping it off. |
keepingRentedVehicleAtDestinationCost | number | required | The cost of arriving at the destination with the rented bicycle, to discourage doing so. |
carDecelerationSpeed | number | required | The deceleration speed of an automobile, in meters per second per second. |
carAccelerationSpeed | number | required | The acceleration speed of an automobile, in meters per second per second. |
ignoreRealtimeUpdates | boolean | required | When true, realtime updates are ignored during this search. |
includePlannedCancellations | boolean | required | When true, trips cancelled in scheduled data are included in this search. |
disableRemainingWeightHeuristic | boolean | required | If true, the remaining weight heuristic is disabled. Currently only implemented for the long distance path service. This is used by the Street search only. TODO OTP2 Can we merge this with the 'oneToMany' option? |
rctx | RoutingContext | The routing context used to actually carry out this search. It is important to build States from TraverseOptions rather than RoutingContexts,and just keep a reference to the context in the TraverseOptions, rather than using RoutingContexts for everything because in some testing and graph building situations we need to build a bunch of initial states with different times and vertices from a single TraverseOptions, without setting all the transit context or building temporary vertices (with all the exception-throwing checks that entails). While they are conceptually separate, TraverseOptions does maintain a reference to its accompanying RoutingContext (and vice versa) so that both do not need to be passed/injected separately into tight inner loops within routing algorithms. These references should be set to null when the request scope is torn down -- the routing context becomes irrelevant at that point, since temporary graph elements have been removed and the graph may have been reloaded. | |
|
|
|
|
|
|
|
|
vehicleRental | boolean | required | |
parkAndRide | boolean | required | |
carPickup | boolean | required | |
allowedRentalFormFactors | array of FormFactor | ||
useVehicleParkingAvailabilityInformation | boolean | required | If true vehicle parking availability information will be used to plan park and ride trips where it exists. |
dominanceFunction | DominanceFunction | The function that compares paths converging on the same vertex to decide which ones continue to be explored. | |
|
|
|
|
|
|
|
|
geoidElevation | boolean | required | Whether to apply the ellipsoid→geoid offset to all elevations in the response |
|
|
|
|
itineraryFilters | ItineraryFilterParameters | required | |
dataOverlay | DataOverlayParameters | The filled request parameters for penalties and thresholds values | |
raptorDebuging | DebugRaptor | Raptor can print all events when arriving at stops to system error. For developers only. | |
dateTime | number | The search time for the current request. If the client have moved to the next page then this is the adjusted search time - the dateTime passed in is ignored and replaced with by a time from the pageToken. | |
tripPlannedForNow | boolean | required | Is the trip originally planned withing the previous/next 15h? |
numItinerariesForDirectStreetSearch | number | required | Currently only one itinerary is returned for a direct street search |
itinerariesSortOrder | SortOrder | ||
routingContext | RoutingContext | ||
streetSpeedUpperBound | number | required | The highest speed for all possible road-modes. |
newShortestPathTree | ShortestPathTree | Create a new ShortestPathTree instance using the DominanceFunction specified in this RoutingRequest. | |
intersectionTraversalCostModel | IntersectionTraversalCostModel | This method is needed because we sometimes traverse edges with no graph. It returns a default intersection traversal model if no graph is present. |
Example
{ "parameters" : { "property1" : "...", "property2" : "..." }, "from" : { "label" : "...", "stopId" : { "feedId" : "...", "id" : "..." }, "lat" : 12345.0, "lng" : 12345.0, "coordinate" : { "x" : 12345.0, "y" : 12345.0, "z" : 12345.0, "m" : 12345.0, "valid" : true }, "specified" : true }, "to" : { "label" : "...", "stopId" : { "feedId" : "...", "id" : "..." }, "lat" : 12345.0, "lng" : 12345.0, "coordinate" : { "x" : 12345.0, "y" : 12345.0, "z" : 12345.0, "m" : 12345.0, "valid" : true }, "specified" : true }, "maxDirectStreetDurationSeconds" : 12345.0, "maxAccessEgressDurationSeconds" : 12345.0, "maxAccessEgressDurationSecondsForMode" : { "property1" : 12345.0, "property2" : 12345.0 }, "modes" : { "accessMode" : "CAR", "transferMode" : "BIKE_TO_PARK", "egressMode" : "CAR_RENTAL", "directMode" : "BIKE_TO_PARK", "transitModes" : [ { "mainMode" : "TROLLEYBUS", "allTransitModes" : [ { }, { } ], "allTransitModesExceptAirplane" : [ { }, { } ] }, { "mainMode" : "MONORAIL", "allTransitModes" : [ { }, { } ], "allTransitModesExceptAirplane" : [ { }, { } ] } ] }, "streetSubRequestModes" : { "bicycle" : true, "walk" : true, "car" : true, "tram" : true, "bus" : true, "gondola" : true, "ferry" : true, "cableCar" : true, "funicular" : true, "rail" : true, "trolleyBus" : true, "subway" : true, "airplane" : true, "transit" : true, "nonTransitSet" : { }, "modes" : [ "BUS", "CABLE_CAR" ], "valid" : true, "asStr" : "..." }, "bicycleOptimizeType" : "TRANSFERS", "searchWindow" : 12345, "maxJourneyDuration" : 12345, "pageCursor" : { "type" : "NEXT_PAGE", "originalSortOrder" : "STREET_AND_ARRIVAL_TIME", "earliestDepartureTime" : 12345, "latestArrivalTime" : 12345, "searchWindow" : 12345 }, "timetableView" : true, "arriveBy" : true, "wheelchairAccessible" : true, "numItineraries" : 12345, "maxWheelchairSlope" : 12345.0, "showIntermediateStops" : true, "walkSpeed" : 12345.0, "bikeSpeed" : 12345.0, "bikeWalkingSpeed" : 12345.0, "carSpeed" : 12345.0, "locale" : "...", "transferCost" : 12345, "transferOptimization" : { }, "walkReluctance" : 12345.0, "bikeWalkingReluctance" : 12345.0, "bikeReluctance" : 12345.0, "carReluctance" : 12345.0, "stairsTimeFactor" : 12345.0, "stairsReluctance" : 12345.0, "turnReluctance" : 12345.0, "elevatorBoardTime" : 12345, "elevatorBoardCost" : 12345, "elevatorHopTime" : 12345, "elevatorHopCost" : 12345, "bikeSwitchTime" : 12345, "bikeSwitchCost" : 12345, "vehicleRentalPickupTime" : 12345, "vehicleRentalPickupCost" : 12345, "vehicleRentalDropoffTime" : 12345, "vehicleRentalDropoffCost" : 12345, "allowedVehicleRentalNetworks" : [ "...", "..." ], "bannedVehicleRentalNetworks" : [ "...", "..." ], "bikeParkTime" : 12345, "bikeParkCost" : 12345, "carParkTime" : 12345, "carParkCost" : 12345, "requiredVehicleParkingTags" : [ "...", "..." ], "bannedVehicleParkingTags" : [ "...", "..." ], "carDropoffTime" : 12345, "carPickupTime" : 12345, "carPickupCost" : 12345, "waitReluctance" : 12345.0, "walkBoardCost" : 12345, "bikeBoardCost" : 12345, "transferSlack" : 12345, "boardSlack" : 12345, "boardSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "alightSlack" : 12345, "alightSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "maxTransfers" : 12345, "bikeTriangleTimeFactor" : 12345.0, "bikeTriangleSlopeFactor" : 12345.0, "bikeTriangleSafetyFactor" : 12345.0, "useVehicleRentalAvailabilityInformation" : true, "allowKeepingRentedVehicleAtDestination" : true, "keepingRentedVehicleAtDestinationCost" : 12345.0, "carDecelerationSpeed" : 12345.0, "carAccelerationSpeed" : 12345.0, "ignoreRealtimeUpdates" : true, "includePlannedCancellations" : true, "disableRemainingWeightHeuristic" : true, "rctx" : { "opt" : { "parameters" : { "property1" : "...", "property2" : "..." }, "from" : { }, "to" : { }, "maxDirectStreetDurationSeconds" : 12345.0, "maxAccessEgressDurationSeconds" : 12345.0, "maxAccessEgressDurationSecondsForMode" : { "property1" : 12345.0, "property2" : 12345.0 }, "modes" : { }, "streetSubRequestModes" : { }, "bicycleOptimizeType" : "TRIANGLE", "searchWindow" : 12345, "maxJourneyDuration" : 12345, "pageCursor" : { }, "timetableView" : true, "arriveBy" : true, "wheelchairAccessible" : true, "numItineraries" : 12345, "maxWheelchairSlope" : 12345.0, "showIntermediateStops" : true, "walkSpeed" : 12345.0, "bikeSpeed" : 12345.0, "bikeWalkingSpeed" : 12345.0, "carSpeed" : 12345.0, "locale" : "...", "transferCost" : 12345, "transferOptimization" : { }, "walkReluctance" : 12345.0, "bikeWalkingReluctance" : 12345.0, "bikeReluctance" : 12345.0, "carReluctance" : 12345.0, "stairsTimeFactor" : 12345.0, "stairsReluctance" : 12345.0, "turnReluctance" : 12345.0, "elevatorBoardTime" : 12345, "elevatorBoardCost" : 12345, "elevatorHopTime" : 12345, "elevatorHopCost" : 12345, "bikeSwitchTime" : 12345, "bikeSwitchCost" : 12345, "vehicleRentalPickupTime" : 12345, "vehicleRentalPickupCost" : 12345, "vehicleRentalDropoffTime" : 12345, "vehicleRentalDropoffCost" : 12345, "allowedVehicleRentalNetworks" : [ "...", "..." ], "bannedVehicleRentalNetworks" : [ "...", "..." ], "bikeParkTime" : 12345, "bikeParkCost" : 12345, "carParkTime" : 12345, "carParkCost" : 12345, "requiredVehicleParkingTags" : [ "...", "..." ], "bannedVehicleParkingTags" : [ "...", "..." ], "carDropoffTime" : 12345, "carPickupTime" : 12345, "carPickupCost" : 12345, "waitReluctance" : 12345.0, "walkBoardCost" : 12345, "bikeBoardCost" : 12345, "transferSlack" : 12345, "boardSlack" : 12345, "boardSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "alightSlack" : 12345, "alightSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "maxTransfers" : 12345, "bikeTriangleTimeFactor" : 12345.0, "bikeTriangleSlopeFactor" : 12345.0, "bikeTriangleSafetyFactor" : 12345.0, "useVehicleRentalAvailabilityInformation" : true, "allowKeepingRentedVehicleAtDestination" : true, "keepingRentedVehicleAtDestinationCost" : 12345.0, "carDecelerationSpeed" : 12345.0, "carAccelerationSpeed" : 12345.0, "ignoreRealtimeUpdates" : true, "includePlannedCancellations" : true, "disableRemainingWeightHeuristic" : true, "rctx" : { }, "vehicleRental" : true, "parkAndRide" : true, "carPickup" : true, "allowedRentalFormFactors" : [ "SCOOTER", "MOPED" ], "useVehicleParkingAvailabilityInformation" : true, "dominanceFunction" : { }, "geoidElevation" : true, "itineraryFilters" : { }, "dataOverlay" : { }, "raptorDebuging" : { }, "dateTime" : 12345, "tripPlannedForNow" : true, "numItinerariesForDirectStreetSearch" : 12345, "itinerariesSortOrder" : "STREET_AND_DEPARTURE_TIME", "routingContext" : { }, "streetSpeedUpperBound" : 12345.0, "newShortestPathTree" : { }, "intersectionTraversalCostModel" : { } }, "graph" : { "streetNotesService" : { }, "preferences" : { }, "hasBikeSharing" : true, "hasParkRide" : true, "hasBikeRide" : true, "buildTime" : 12345, "hasStreets" : true, "hasTransit" : true, "hasDirectTransfers" : true, "hasFrequencyService" : true, "hasScheduledService" : true, "hasLinkedBikeParks" : true, "ellipsoidToGeoidDifference" : 12345.0, "stationById" : { "property1" : { }, "property2" : { } }, "multiModalStationById" : { "property1" : { }, "property2" : { } }, "groupOfStationsById" : { "property1" : { }, "property2" : { } }, "tripPatternForId" : { "property1" : { }, "property2" : { } }, "interlinedTrips" : { "property1" : { }, "property2" : { } }, "transfersByStop" : { }, "locationsById" : { "property1" : { }, "property2" : { } }, "locationGroupsById" : { "property1" : { }, "property2" : { } }, "flexTripsById" : { "property1" : { }, "property2" : { } }, "nextSplitNumber" : 12345, "dataOverlayParameterBindings" : { }, "timetableSnapshot" : { }, "vertices" : [ { }, { } ], "edges" : [ { }, { } ], "streetEdges" : [ { }, { } ], "transitLayer" : { }, "realtimeTransitLayer" : { }, "extent" : { }, "transferService" : { }, "bundle" : { }, "transitModes" : [ "CABLE_CAR", "TROLLEYBUS" ], "calendarService" : { }, "calendarDataService" : { }, "streetIndex" : { }, "linker" : { }, "feedIds" : [ "...", "..." ], "agencies" : [ { }, { } ], "timeZone" : { }, "operators" : [ { }, { } ], "convexHull" : { }, "envelope" : { }, "center" : { }, "transitServiceStarts" : 12345, "transitServiceEnds" : 12345, "noticesByElement" : { }, "distanceBetweenElevationSamples" : 12345.0, "transitAlertService" : { }, "vehicleRentalStationService" : { }, "vehicleParkingService" : { }, "tripPatterns" : [ { }, { } ], "notices" : [ { }, { } ], "stations" : [ { }, { } ], "serviceCodes" : { "property1" : 12345, "property2" : 12345 }, "drivingDirection" : "RIGHT_HAND_TRAFFIC", "intersectionTraversalModel" : { }, "allFlexStopsFlat" : [ { }, { } ] }, "fromVertices" : [ { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] }, { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] } ], "toVertices" : [ { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] }, { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] } ], "bannedRoutes" : [ { "feedId" : "...", "id" : "..." }, { "feedId" : "...", "id" : "..." } ], "originBackEdge" : { "fromVertex" : { }, "toVertex" : { }, "partial" : true, "direction" : "...", "trip" : { }, "roundabout" : true, "defaultName" : "...", "name" : { }, "geometry" : { }, "distanceMeters" : 12345.0, "effectiveWalkDistance" : 12345.0, "distanceIndependentTime" : 12345 }, "remainingWeightHeuristic" : { }, "aborted" : true, "slopeRestrictionRemoved" : true, "dataOverlayContext" : { "parameters" : { } } }, "vehicleRental" : true, "parkAndRide" : true, "carPickup" : true, "allowedRentalFormFactors" : [ "SCOOTER", "MOPED" ], "useVehicleParkingAvailabilityInformation" : true, "dominanceFunction" : { }, "geoidElevation" : true, "itineraryFilters" : { "debug" : true, "groupSimilarityKeepOne" : 12345.0, "groupSimilarityKeepThree" : 12345.0, "groupedOtherThanSameLegsMaxCostMultiplier" : 12345.0, "transitGeneralizedCostLimit" : { }, "bikeRentalDistanceRatio" : 12345.0, "parkAndRideDurationRatio" : 12345.0, "nonTransitGeneralizedCostLimit" : { } }, "dataOverlay" : { "empty" : true }, "raptorDebuging" : { }, "dateTime" : 12345, "tripPlannedForNow" : true, "numItinerariesForDirectStreetSearch" : 12345, "itinerariesSortOrder" : "STREET_AND_ARRIVAL_TIME", "routingContext" : { "opt" : { "parameters" : { "property1" : "...", "property2" : "..." }, "from" : { }, "to" : { }, "maxDirectStreetDurationSeconds" : 12345.0, "maxAccessEgressDurationSeconds" : 12345.0, "maxAccessEgressDurationSecondsForMode" : { "property1" : 12345.0, "property2" : 12345.0 }, "modes" : { }, "streetSubRequestModes" : { }, "bicycleOptimizeType" : "TRIANGLE", "searchWindow" : 12345, "maxJourneyDuration" : 12345, "pageCursor" : { }, "timetableView" : true, "arriveBy" : true, "wheelchairAccessible" : true, "numItineraries" : 12345, "maxWheelchairSlope" : 12345.0, "showIntermediateStops" : true, "walkSpeed" : 12345.0, "bikeSpeed" : 12345.0, "bikeWalkingSpeed" : 12345.0, "carSpeed" : 12345.0, "locale" : "...", "transferCost" : 12345, "transferOptimization" : { }, "walkReluctance" : 12345.0, "bikeWalkingReluctance" : 12345.0, "bikeReluctance" : 12345.0, "carReluctance" : 12345.0, "stairsTimeFactor" : 12345.0, "stairsReluctance" : 12345.0, "turnReluctance" : 12345.0, "elevatorBoardTime" : 12345, "elevatorBoardCost" : 12345, "elevatorHopTime" : 12345, "elevatorHopCost" : 12345, "bikeSwitchTime" : 12345, "bikeSwitchCost" : 12345, "vehicleRentalPickupTime" : 12345, "vehicleRentalPickupCost" : 12345, "vehicleRentalDropoffTime" : 12345, "vehicleRentalDropoffCost" : 12345, "allowedVehicleRentalNetworks" : [ "...", "..." ], "bannedVehicleRentalNetworks" : [ "...", "..." ], "bikeParkTime" : 12345, "bikeParkCost" : 12345, "carParkTime" : 12345, "carParkCost" : 12345, "requiredVehicleParkingTags" : [ "...", "..." ], "bannedVehicleParkingTags" : [ "...", "..." ], "carDropoffTime" : 12345, "carPickupTime" : 12345, "carPickupCost" : 12345, "waitReluctance" : 12345.0, "walkBoardCost" : 12345, "bikeBoardCost" : 12345, "transferSlack" : 12345, "boardSlack" : 12345, "boardSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "alightSlack" : 12345, "alightSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "maxTransfers" : 12345, "bikeTriangleTimeFactor" : 12345.0, "bikeTriangleSlopeFactor" : 12345.0, "bikeTriangleSafetyFactor" : 12345.0, "useVehicleRentalAvailabilityInformation" : true, "allowKeepingRentedVehicleAtDestination" : true, "keepingRentedVehicleAtDestinationCost" : 12345.0, "carDecelerationSpeed" : 12345.0, "carAccelerationSpeed" : 12345.0, "ignoreRealtimeUpdates" : true, "includePlannedCancellations" : true, "disableRemainingWeightHeuristic" : true, "rctx" : { }, "vehicleRental" : true, "parkAndRide" : true, "carPickup" : true, "allowedRentalFormFactors" : [ "CAR", "OTHER" ], "useVehicleParkingAvailabilityInformation" : true, "dominanceFunction" : { }, "geoidElevation" : true, "itineraryFilters" : { }, "dataOverlay" : { }, "raptorDebuging" : { }, "dateTime" : 12345, "tripPlannedForNow" : true, "numItinerariesForDirectStreetSearch" : 12345, "itinerariesSortOrder" : "STREET_AND_ARRIVAL_TIME", "routingContext" : { }, "streetSpeedUpperBound" : 12345.0, "newShortestPathTree" : { }, "intersectionTraversalCostModel" : { } }, "graph" : { "streetNotesService" : { }, "preferences" : { }, "hasBikeSharing" : true, "hasParkRide" : true, "hasBikeRide" : true, "buildTime" : 12345, "hasStreets" : true, "hasTransit" : true, "hasDirectTransfers" : true, "hasFrequencyService" : true, "hasScheduledService" : true, "hasLinkedBikeParks" : true, "ellipsoidToGeoidDifference" : 12345.0, "stationById" : { "property1" : { }, "property2" : { } }, "multiModalStationById" : { "property1" : { }, "property2" : { } }, "groupOfStationsById" : { "property1" : { }, "property2" : { } }, "tripPatternForId" : { "property1" : { }, "property2" : { } }, "interlinedTrips" : { "property1" : { }, "property2" : { } }, "transfersByStop" : { }, "locationsById" : { "property1" : { }, "property2" : { } }, "locationGroupsById" : { "property1" : { }, "property2" : { } }, "flexTripsById" : { "property1" : { }, "property2" : { } }, "nextSplitNumber" : 12345, "dataOverlayParameterBindings" : { }, "timetableSnapshot" : { }, "vertices" : [ { }, { } ], "edges" : [ { }, { } ], "streetEdges" : [ { }, { } ], "transitLayer" : { }, "realtimeTransitLayer" : { }, "extent" : { }, "transferService" : { }, "bundle" : { }, "transitModes" : [ "CABLE_CAR", "TRAM" ], "calendarService" : { }, "calendarDataService" : { }, "streetIndex" : { }, "linker" : { }, "feedIds" : [ "...", "..." ], "agencies" : [ { }, { } ], "timeZone" : { }, "operators" : [ { }, { } ], "convexHull" : { }, "envelope" : { }, "center" : { }, "transitServiceStarts" : 12345, "transitServiceEnds" : 12345, "noticesByElement" : { }, "distanceBetweenElevationSamples" : 12345.0, "transitAlertService" : { }, "vehicleRentalStationService" : { }, "vehicleParkingService" : { }, "tripPatterns" : [ { }, { } ], "notices" : [ { }, { } ], "stations" : [ { }, { } ], "serviceCodes" : { "property1" : 12345, "property2" : 12345 }, "drivingDirection" : "RIGHT_HAND_TRAFFIC", "intersectionTraversalModel" : { }, "allFlexStopsFlat" : [ { }, { } ] }, "fromVertices" : [ { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] }, { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] } ], "toVertices" : [ { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] }, { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] } ], "bannedRoutes" : [ { "feedId" : "...", "id" : "..." }, { "feedId" : "...", "id" : "..." } ], "originBackEdge" : { "fromVertex" : { }, "toVertex" : { }, "partial" : true, "direction" : "...", "trip" : { }, "roundabout" : true, "defaultName" : "...", "name" : { }, "geometry" : { }, "distanceMeters" : 12345.0, "effectiveWalkDistance" : 12345.0, "distanceIndependentTime" : 12345 }, "remainingWeightHeuristic" : { }, "aborted" : true, "slopeRestrictionRemoved" : true, "dataOverlayContext" : { "parameters" : { } } }, "streetSpeedUpperBound" : 12345.0, "newShortestPathTree" : { "options" : { "parameters" : { "property1" : "...", "property2" : "..." }, "from" : { }, "to" : { }, "maxDirectStreetDurationSeconds" : 12345.0, "maxAccessEgressDurationSeconds" : 12345.0, "maxAccessEgressDurationSecondsForMode" : { "property1" : 12345.0, "property2" : 12345.0 }, "modes" : { }, "streetSubRequestModes" : { }, "bicycleOptimizeType" : "TRANSFERS", "searchWindow" : 12345, "maxJourneyDuration" : 12345, "pageCursor" : { }, "timetableView" : true, "arriveBy" : true, "wheelchairAccessible" : true, "numItineraries" : 12345, "maxWheelchairSlope" : 12345.0, "showIntermediateStops" : true, "walkSpeed" : 12345.0, "bikeSpeed" : 12345.0, "bikeWalkingSpeed" : 12345.0, "carSpeed" : 12345.0, "locale" : "...", "transferCost" : 12345, "transferOptimization" : { }, "walkReluctance" : 12345.0, "bikeWalkingReluctance" : 12345.0, "bikeReluctance" : 12345.0, "carReluctance" : 12345.0, "stairsTimeFactor" : 12345.0, "stairsReluctance" : 12345.0, "turnReluctance" : 12345.0, "elevatorBoardTime" : 12345, "elevatorBoardCost" : 12345, "elevatorHopTime" : 12345, "elevatorHopCost" : 12345, "bikeSwitchTime" : 12345, "bikeSwitchCost" : 12345, "vehicleRentalPickupTime" : 12345, "vehicleRentalPickupCost" : 12345, "vehicleRentalDropoffTime" : 12345, "vehicleRentalDropoffCost" : 12345, "allowedVehicleRentalNetworks" : [ "...", "..." ], "bannedVehicleRentalNetworks" : [ "...", "..." ], "bikeParkTime" : 12345, "bikeParkCost" : 12345, "carParkTime" : 12345, "carParkCost" : 12345, "requiredVehicleParkingTags" : [ "...", "..." ], "bannedVehicleParkingTags" : [ "...", "..." ], "carDropoffTime" : 12345, "carPickupTime" : 12345, "carPickupCost" : 12345, "waitReluctance" : 12345.0, "walkBoardCost" : 12345, "bikeBoardCost" : 12345, "transferSlack" : 12345, "boardSlack" : 12345, "boardSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "alightSlack" : 12345, "alightSlackForMode" : { "property1" : 12345, "property2" : 12345 }, "maxTransfers" : 12345, "bikeTriangleTimeFactor" : 12345.0, "bikeTriangleSlopeFactor" : 12345.0, "bikeTriangleSafetyFactor" : 12345.0, "useVehicleRentalAvailabilityInformation" : true, "allowKeepingRentedVehicleAtDestination" : true, "keepingRentedVehicleAtDestinationCost" : 12345.0, "carDecelerationSpeed" : 12345.0, "carAccelerationSpeed" : 12345.0, "ignoreRealtimeUpdates" : true, "includePlannedCancellations" : true, "disableRemainingWeightHeuristic" : true, "rctx" : { }, "vehicleRental" : true, "parkAndRide" : true, "carPickup" : true, "allowedRentalFormFactors" : [ "SCOOTER", "CAR" ], "useVehicleParkingAvailabilityInformation" : true, "dominanceFunction" : { }, "geoidElevation" : true, "itineraryFilters" : { }, "dataOverlay" : { }, "raptorDebuging" : { }, "dateTime" : 12345, "tripPlannedForNow" : true, "numItinerariesForDirectStreetSearch" : 12345, "itinerariesSortOrder" : "STREET_AND_DEPARTURE_TIME", "routingContext" : { }, "streetSpeedUpperBound" : 12345.0, "newShortestPathTree" : { }, "intersectionTraversalCostModel" : { } }, "dominanceFunction" : { }, "paths" : [ { "states" : [ { }, { } ], "edges" : [ { }, { } ], "startTime" : 12345, "endTime" : 12345, "duration" : 12345, "distanceMeters" : 12345.0, "weight" : 12345.0, "startVertex" : { }, "endVertex" : { }, "geometry" : { }, "walkDistance" : 12345.0, "routingContext" : { } }, { "states" : [ { }, { } ], "edges" : [ { }, { } ], "startTime" : 12345, "endTime" : 12345, "duration" : 12345, "distanceMeters" : 12345.0, "weight" : 12345.0, "startVertex" : { }, "endVertex" : { }, "geometry" : { }, "walkDistance" : 12345.0, "routingContext" : { } } ], "vertices" : [ { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] }, { "outgoing" : [ { }, { } ], "incoming" : [ { }, { } ], "degreeOut" : 12345, "degreeIn" : 12345, "x" : 12345.0, "y" : 12345.0, "lon" : 12345.0, "lat" : 12345.0, "name" : { }, "defaultName" : "...", "stationElement" : { }, "label" : "...", "coordinate" : { }, "outgoingStreetEdges" : [ { }, { } ] } ], "vertexCount" : 12345, "allStates" : [ { "weight" : 12345.0, "backEdge" : { }, "stateData" : { }, "walkDistance" : 12345.0, "carPickupState" : "WALK_TO_PICKUP", "timeSeconds" : 12345, "elapsedTimeSeconds" : 12345, "rentingVehicleFromStation" : true, "rentingFloatingVehicle" : true, "rentingVehicle" : true, "vehicleRentalState" : "HAVE_RENTED", "vehicleParked" : true, "final" : true, "vertex" : { }, "timeDeltaSeconds" : 12345, "weightDelta" : 12345.0, "backState" : { }, "backMode" : "AIRPLANE", "backWalkingBike" : true, "startTimeSeconds" : 12345, "nextResult" : { }, "context" : { }, "options" : { }, "nonTransitMode" : "SUBWAY", "timeInMillis" : 12345, "vehicleRentalNetwork" : "..." }, { "weight" : 12345.0, "backEdge" : { }, "stateData" : { }, "walkDistance" : 12345.0, "carPickupState" : "WALK_TO_PICKUP", "timeSeconds" : 12345, "elapsedTimeSeconds" : 12345, "rentingVehicleFromStation" : true, "rentingFloatingVehicle" : true, "rentingVehicle" : true, "vehicleRentalState" : "RENTING_FROM_STATION", "vehicleParked" : true, "final" : true, "vertex" : { }, "timeDeltaSeconds" : 12345, "weightDelta" : 12345.0, "backState" : { }, "backMode" : "CABLE_CAR", "backWalkingBike" : true, "startTimeSeconds" : 12345, "nextResult" : { }, "context" : { }, "options" : { }, "nonTransitMode" : "WALK", "timeInMillis" : 12345, "vehicleRentalNetwork" : "..." } ] }, "intersectionTraversalCostModel" : { } }