syntax = "proto3"; option optimize_for = LITE_RUNTIME; package valhalla; option go_package = "git.coopgo.io/coopgo-platform/routing-service/proto/valhalla"; import public "common.proto"; import public "sign.proto"; message DirectionsLeg { message Summary { float length = 1; // kilometers or miles based on units double time = 2; // seconds BoundingBox bbox = 3; // Bounding box of the shape bool has_time_restrictions = 4; // Does the route contain any time restrictions? bool has_toll = 5; bool has_ferry = 6; bool has_highway = 7; } message GuidanceView { enum Type{ kJunction = 0; kSapa = 1; kTollbranch = 2; kAftertoll = 3; kEnt = 4; kExit = 5; kCityreal = 6; kDirectionboard = 7; kSignboard = 8; } string data_id = 1; // TODO future enum as data id? Type type = 2; // The type of guidance view string base_id = 3; // Image base id repeated string overlay_ids = 4; // List of overlay ids } message Maneuver { enum CardinalDirection { kNorth = 0; kNorthEast = 1; kEast = 2; kSouthEast = 3; kSouth = 4; kSouthWest = 5; kWest = 6; kNorthWest = 7; } // TODO - add others later enum Type { kNone = 0; kStart = 1; kStartRight = 2; kStartLeft = 3; kDestination = 4; kDestinationRight = 5; kDestinationLeft = 6; kBecomes = 7; kContinue = 8; kSlightRight = 9; kRight = 10; kSharpRight = 11; kUturnRight = 12; kUturnLeft = 13; kSharpLeft = 14; kLeft = 15; kSlightLeft = 16; kRampStraight = 17; kRampRight = 18; kRampLeft = 19; kExitRight = 20; kExitLeft = 21; kStayStraight = 22; kStayRight = 23; kStayLeft = 24; kMerge = 25; kRoundaboutEnter = 26; kRoundaboutExit = 27; kFerryEnter = 28; kFerryExit = 29; kTransit = 30; kTransitTransfer = 31; kTransitRemainOn = 32; kTransitConnectionStart = 33; kTransitConnectionTransfer = 34; kTransitConnectionDestination = 35; kPostTransitConnectionDestination = 36; kMergeRight = 37; kMergeLeft = 38; kElevatorEnter = 39; kStepsEnter = 40; kEscalatorEnter = 41; kBuildingEnter = 42; kBuildingExit = 43; } enum BssManeuverType{ kNoneAction = 0; kRentBikeAtBikeShare = 1; kReturnBikeAtBikeShare = 2; } Type type = 1; // Maneuver type string text_instruction = 2; // text instruction repeated StreetName street_name = 3; // street names float length = 4; // kilometers or miles based on units double time = 5; // seconds CardinalDirection begin_cardinal_direction = 6; // CardinalDirection uint32 begin_heading = 7; // 0-360 uint32 begin_shape_index = 8; // inclusive index uint32 end_shape_index = 9; // inclusive index bool portions_toll = 10; // has portions toll bool portions_unpaved = 11; // has portions unpaved string verbal_transition_alert_instruction = 12; // verbal transition alert instruction string verbal_pre_transition_instruction = 13; // verbal pre-transition instruction string verbal_post_transition_instruction = 14; // verbal post-transition instruction repeated StreetName begin_street_name = 15; // begin street names TripSign sign = 16; // associated sign information, for example: exit number uint32 roundabout_exit_count = 17; // which spoke to exit roundabout after entering string depart_instruction = 18; // depart instruction - used with transit string verbal_depart_instruction = 19; // verbal depart instruction - used with transit string arrive_instruction = 20; // arrive instruction - used with transit string verbal_arrive_instruction = 21; // verbal arrive instruction - used with transit TransitRouteInfo transit_info = 22; // transit attributes including a list of transit stops bool verbal_multi_cue = 23; // verbal multi-cue flag TravelMode travel_mode = 24; // travel mode VehicleType vehicle_type = 25; PedestrianType pedestrian_type = 26; BicycleType bicycle_type = 27; TransitType transit_type = 28; uint32 begin_path_index = 29; // Index in TripPath for first node of maneuver uint32 end_path_index = 30; // Index in TripPath for last node of maneuver bool to_stay_on = 31; // True if same name as previous maneuver repeated StreetName roundabout_exit_street_names = 32;// Outbound street names from roundabout uint32 turn_degree = 33; // Turn degree of maneuver bool has_time_restrictions = 34; // Whether edge has any time restrictions or not repeated GuidanceView guidance_views = 35; // List of guidance views BssManeuverType bss_maneuver_type = 36; string verbal_succinct_transition_instruction = 37; // verbal succinct transition instruction BikeShareStationInfo bss_info = 38; // Bike Share Station Info bool portions_highway = 39; // has portions highway bool portions_ferry = 40; // has portions ferry } uint64 trip_id = 1; uint32 leg_id = 2; uint32 leg_count = 3; repeated Location location = 4; Summary summary = 5; repeated Maneuver maneuver = 6; string shape = 7; } message DirectionsRoute { repeated DirectionsLeg legs = 1; } message Directions { repeated DirectionsRoute routes = 1; }