syntax = "proto3"; package routing; option go_package = "./proto;routing"; service Routing { // Route returns a gps route from origin to destination based on lat/lng rpc Route(RouteRequest) returns (RouteResponse) {} // Eta returns an estimated time of arrival for a route rpc Eta(EtaRequest) returns (EtaResponse) {} // Directions provides turn by turn directions rpc Directions(DirectionsRequest) returns (DirectionsResponse) {} } message Point { // Lat e.g 52.523219 double latitude = 1; // Long e.g 13.428555 double longitude = 2; } message Waypoint { // street name or related reference string name = 1; // gps point coordinates Point location = 2; } message Maneuver { double bearing_before = 1; double bearing_after = 2; Point location = 3; string action = 4; string direction = 5; } message Intersection { Point location = 1; repeated double bearings = 2; } message Direction { // street name or location string name = 1; // alternative reference string reference = 2; // human readable instruction string instruction = 3; // distance to travel in meters double distance = 4; // duration to travel in seconds double duration = 5; // maneuver to take Maneuver maneuver = 6; // intersections on route repeated Intersection intersections = 7; } // Turn by turn directions from a start point to an end point including maneuvers and bearings message DirectionsRequest { // The staring point for the journey Point origin = 1; // The destination of the journey Point destination = 2; } message DirectionsResponse { // Turn by turn directions repeated Direction directions = 1; // The waypoints on the route repeated Waypoint waypoints = 2; // Estimated distance of the route in meters double distance = 3; // Estimated duration of the route in seconds double duration = 4; } // Get the eta for a route from origin to destination. The eta is an estimated time based on car routes message EtaRequest { // The starting point for the eta calculation Point origin = 1; // The end point for the eta calculation Point destination = 2; // type of transport. Only "car" is supported currently. string type = 3; // speed in kilometers double speed = 4; } message EtaResponse { // eta in seconds double duration = 1; } // Retrieve a route as a simple list of gps points along with total distance and estimated duration message RouteRequest { // Point of origin for the trip Point origin = 1; // Point of destination for the trip Point destination = 2; } message RouteResponse { // estimated distance in meters double distance = 1; // estimated duration in seconds double duration = 2; // waypoints on the route repeated Waypoint waypoints = 3; }