syntax = "proto3"; option optimize_for = LITE_RUNTIME; package valhalla; option go_package = "git.coopgo.io/coopgo-platform/routing-service/proto/valhalla"; message LatLng { oneof has_lat { double lat = 1; } oneof has_lng { double lng = 2; } } message BoundingBox { LatLng min_ll = 1; LatLng max_ll = 2; } message SearchFilter { // frc oneof has_min_road_class { RoadClass min_road_class = 1; // lowest road class to allow in loki results [default = kServiceOther] } oneof has_max_road_class { RoadClass max_road_class = 2; // highest road class to allow in loki results [default = kMotorway] } // form of way bool exclude_tunnel = 3; // whether to exclude tunnels from loki results [default = false] bool exclude_bridge = 4; // whether to exclude bridges from loki results [default = false] bool exclude_ramp = 5; // whether to exclude roads with ramp use from loki results [default = false] oneof has_exclude_closures { bool exclude_closures = 6;// whether to exclude roads marked as closed due to traffic [default = true] } } message PathEdge { uint64 graph_id = 1; double percent_along = 2; LatLng ll = 3; Location.SideOfStreet side_of_street = 4; double distance = 5; bool begin_node = 7; bool end_node = 8; repeated string names = 10; int32 outbound_reach = 11; int32 inbound_reach = 12; float heading = 13; } // Output information about how the location object below is correlated to the graph or to the route etc message Correlation { repeated PathEdge edges = 1; repeated PathEdge filtered_edges = 2; uint32 original_index = 3; LatLng projected_ll = 4; uint32 leg_shape_index = 5; double distance_from_leg_origin = 6; uint32 route_index = 7; // primarily for matchings index in osrm map matching uint32 waypoint_index = 8; // primarily for matched point index in osrm map matching } message Location { enum Type { kBreak = 0; kThrough = 1; kVia = 2; kBreakThrough = 3; } enum PreferredSide { either = 0; same = 1; opposite = 2; } enum SideOfStreet { kNone = 0; kLeft = 1; kRight = 2; } LatLng ll = 1; Type type = 2; // [default = kBreak] oneof has_heading { uint32 heading = 3; // 0-359 } string name = 4; string street = 5; string date_time = 12; SideOfStreet side_of_street = 13; oneof has_heading_tolerance { uint32 heading_tolerance = 14; } oneof has_node_snap_tolerance { uint32 node_snap_tolerance = 15; } oneof has_minimum_reachability { uint32 minimum_reachability = 17; } oneof has_radius { uint32 radius = 18; } oneof has_accuracy { uint32 accuracy = 19; } oneof has_time { double time = 20; } bool skip_ranking_candidates = 21; PreferredSide preferred_side = 22; LatLng display_ll = 23; oneof has_search_cutoff { uint32 search_cutoff = 24; } oneof has_street_side_tolerance { uint32 street_side_tolerance = 25; } SearchFilter search_filter = 26; oneof has_street_side_max_distance { uint32 street_side_max_distance = 27; } oneof has_preferred_layer { int32 preferred_layer = 28; } float waiting_secs = 29; // waiting period before a new leg starts, e.g. for servicing/loading goods // This information will be ignored if provided in the request. Instead it will be filled in as the request is handled Correlation correlation = 90; } message TransitEgressInfo { string onestop_id = 1; // Unique transitland ID string name = 2; // The name of the egress LatLng ll = 3; // Latitude, longitude of the egress } message TransitStationInfo { string onestop_id = 1; // Unique transitland ID string name = 2; // The name of the station LatLng ll = 3; // Latitude, longitude of the station } message BikeShareStationInfo { string name = 1; string ref = 2; uint32 capacity = 3; string network = 4; string operator = 5; float rent_cost = 6; float return_cost = 7; } message TransitPlatformInfo { enum Type { kStop = 0; kStation = 1; } Type type = 1; // The type of stop (station or simple stop) string onestop_id = 2; // Unique transitland ID string name = 3; // The name of the platform string arrival_date_time = 4; // ISO 8601 arrival date/time YYYY-MM-DDThh:mm string departure_date_time = 5; // ISO 8601 departure date/time YYYY-MM-DDThh:mm bool assumed_schedule = 6; // true if the times are based on an assumed schedule LatLng ll = 7; // Latitude, longitude of the transit stop string station_onestop_id = 8; // Unique transitland station ID string station_name = 9; // The station name of the platform } message TransitRouteInfo { string onestop_id = 1; uint32 block_id = 2; uint32 trip_id = 3; string short_name = 4; string long_name = 5; string headsign = 6; uint32 color = 7; uint32 text_color = 8; string description = 9; string operator_onestop_id = 10; string operator_name = 11; string operator_url = 12; repeated TransitPlatformInfo transit_stops = 13; } message Pronunciation { enum Alphabet { kIpa = 0; kXKatakana = 1; kXJeita = 2; kNtSampa = 3; } Alphabet alphabet = 1; string value = 2; } message StreetName { string value = 1; // The actual street name value, examples: I 95 North or Derry Street bool is_route_number = 2; // true if the street name is a reference route number such as: I 81 South or US 322 West Pronunciation pronunciation = 3; // The pronunciation associated with this street name } message TurnLane { enum State { kInvalid = 0; kValid = 1; kActive = 2; } uint32 directions_mask = 1; State state = 2; uint32 active_direction = 3; } enum RoadClass { kMotorway = 0; kTrunk = 1; kPrimary = 2; kSecondary = 3; kTertiary = 4; kUnclassified = 5; kResidential = 6; kServiceOther = 7; } message TaggedValue { // dont renumber these they match the c++ definitions enum Type { kNone = 0; kLayer = 1; kPronunciation = 2; kBssInfo = 3; kLevel = 4; kLevelRef = 5; kTunnel = 49; kBridge = 50; } bytes value = 1; // The actual tagged name value, examples: Ted Williams Tunnel Type type = 2; // The type of tagged name (tunnel or bridge) } enum TravelMode { kDrive = 0; kPedestrian = 1; kBicycle = 2; kTransit = 3; } // TODO: review and update as needed enum VehicleType { kCar = 0; kMotorcycle = 1; kAutoBus = 2; kTractorTrailer = 3; kMotorScooter = 4; } // TODO: review and update as needed enum PedestrianType { kFoot = 0; kWheelchair = 1; kSegway = 2; } enum BicycleType { kRoad = 0; kCross = 1; kHybrid = 2; kMountain = 3; } enum TransitType { kTram = 0; kMetro = 1; kRail = 2; kBus = 3; kFerry = 4; kCableCar = 5; kGondola = 6; kFunicular = 7; }