# ComputeCustomRoutesRequest

- [JSON representation](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#SCHEMA_REPRESENTATION)
- [RouteObjective](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RouteObjective)
  - [JSON representation](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RouteObjective.SCHEMA_REPRESENTATION)
- [RateCard](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RateCard)
  - [JSON representation](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RateCard.SCHEMA_REPRESENTATION)
- [MonetaryCost](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost)
  - [JSON representation](https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost.SCHEMA_REPRESENTATION)

ComputeCustomRoutes request message.

| JSON representation |
|---|
| ``` { "origin": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`) }, "destination": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`) }, "intermediates": [ { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`) } ], "travelMode": enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode`), "routingPreference": enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RoutingPreference`), "polylineQuality": enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/PolylineQuality`), "polylineEncoding": enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/PolylineEncoding`), "departureTime": string, "routeModifiers": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers`) }, "routeObjective": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RouteObjective`) }, "languageCode": string, "units": enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Units`) } ``` |

| Fields ||
|---|---|
| `origin` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`)`` Required. Origin waypoint. |
| `destination` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`)`` Required. Destination waypoint. |
| `intermediates[]` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Waypoint`)`` Optional. A set of waypoints along the route (excluding terminal points), for either stopping at or passing by. Up to 25 intermediate waypoints are supported. |
| `travelMode` | ``enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode`)`` Optional. Specifies the mode of transportation. Only `DRIVE` and 'TWO_WHEELER' are supported. |
| `routingPreference` | ``enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RoutingPreference`)`` Optional. Specifies how to compute the route. The server attempts to use the selected routing preference to compute the route. If the routing preference results in an error or an extra long latency, then an error is returned. You can specify this option only when the `travelMode` is `DRIVE` or `TWO_WHEELER`, otherwise the request fails. |
| `polylineQuality` | ``enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/PolylineQuality`)`` Optional. Specifies your preference for the quality of the polyline. |
| `polylineEncoding` | ``enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/PolylineEncoding`)`` Optional. Specifies the preferred encoding for the polyline. |
| `departureTime` | ``string (`https://protobuf.dev/reference/protobuf/google.protobuf#timestamp` format)`` Optional. The departure time. If you don't set this value, then this value defaults to the time that you made the request. If you set this value to a time that has already occurred, then the request fails. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: `"2014-10-02T15:01:23Z"` and `"2014-10-02T15:01:23.045123456Z"`. |
| `routeModifiers` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers`)`` Optional. A set of conditions to satisfy that affect the way routes are calculated. |
| `routeObjective` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RouteObjective`)`` Required. A route objective to optimize for. |
| `languageCode` | `string` Optional. The BCP-47 language code, such as "en-US" or "sr-Latn". For more information, see [Unicode Locale Identifier](http://www.unicode.org/reports/tr35/#Unicode_locale_identifier). See [Language Support](https://developers.google.com/maps/faq#languagesupport) for the list of supported languages. When you don't provide this value, the display language is inferred from the location of the route request. |
| `units` | ``enum (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/Units`)`` Optional. Specifies the units of measure for the display fields. This includes the `instruction` field in `NavigationInstruction`. The units of measure used for the route, leg, step distance, and duration are not affected by this value. If you don't provide this value, then the display units are inferred from the location of the request. |

## RouteObjective

Encapsulates an objective to optimize for by `ComputeCustomRoutes`.

| JSON representation |
|---|
| ``` { // Union field `objective` can be only one of the following: "rateCard": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RateCard`) } // End of list of possible types for union field `objective`. } ``` |

| Fields ||
|---|---|
| Union field `objective`. The route objective. `objective` can be only one of the following: ||
| `rateCard` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#RateCard`)`` The RateCard objective. |

## RateCard

Encapsulates a `RateCard` route objective.

| JSON representation |
|---|
| ``` { "costPerMinute": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost`) }, "costPerKm": { object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost`) }, "includeTolls": boolean } ``` |

| Fields ||
|---|---|
| `costPerMinute` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost`)`` Optional. Cost per minute. |
| `costPerKm` | ``object (`https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/ComputeCustomRoutesRequest#MonetaryCost`)`` Optional. Cost per kilometer. |
| `includeTolls` | `boolean` Optional. Whether to include toll cost in the overall cost. |

## MonetaryCost

Encapsulates the cost used in the rate card.

| JSON representation |
|---|
| ``` { "value": number } ``` |

| Fields ||
|---|---|
| `value` | `number` Required. The cost value in local currency inferred from the request. |