google-maps-route_optimization-v1 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -6
- data/lib/google/maps/route_optimization/v1/route_optimization/client.rb +13 -17
- data/lib/google/maps/route_optimization/v1/route_optimization/rest/client.rb +13 -17
- data/lib/google/maps/route_optimization/v1/version.rb +1 -1
- data/lib/google/maps/routeoptimization/v1/route_optimization_service_pb.rb +2 -1
- data/lib/google/maps/routeoptimization/v1/route_optimization_service_services_pb.rb +2 -10
- data/proto_docs/google/maps/routeoptimization/v1/route_optimization_service.rb +61 -22
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b1525ba9074d3a3bed3570d767fb746e346528d033a7e0985466e75342005802
|
|
4
|
+
data.tar.gz: 384ee42b1aa97966629a99c3c7515d85d2347eaab33e117e6c8281dddd246d3b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9dd80a560469bb677842bdfe79fdcc181575119803f9322aeae6258667c1f90b83bd8fbe06dad7112e084b144f01c3194a9d968a5e6aa18648e467b290b80aab
|
|
7
|
+
data.tar.gz: 3d0f201a66b81079b6eab690cfde69f68ef61b74206d07665d19592867a08f1e13131b4cf8d091935ed35fad34b9a6d7f7a189d77be069e0c74ca94386a83b06
|
data/README.md
CHANGED
|
@@ -87,12 +87,10 @@ To browse ready to use code samples check [Google Cloud Samples](https://cloud.g
|
|
|
87
87
|
|
|
88
88
|
This library is supported on Ruby 3.2+.
|
|
89
89
|
|
|
90
|
-
Google provides official support for Ruby versions
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby
|
|
95
|
-
support schedule.
|
|
90
|
+
Google provides official support for Ruby versions as described in the
|
|
91
|
+
[Supported Ruby versions](https://docs.cloud.google.com/ruby/getting-started/supported-ruby-versions)
|
|
92
|
+
policy. Older versions of Ruby _may_ still work, but are unsupported and not
|
|
93
|
+
recommended.
|
|
96
94
|
|
|
97
95
|
## Which client should I use?
|
|
98
96
|
|
|
@@ -251,10 +251,11 @@ module Google
|
|
|
251
251
|
# Required. Target project or location to make a call.
|
|
252
252
|
#
|
|
253
253
|
# Format:
|
|
254
|
+
#
|
|
254
255
|
# * `projects/{project-id}`
|
|
255
|
-
# * `projects/{project-id}/locations
|
|
256
|
+
# * `projects/{project-id}/locations/-`
|
|
256
257
|
#
|
|
257
|
-
#
|
|
258
|
+
# Regional `{location-id}` values are not supported.
|
|
258
259
|
# @param timeout [::Google::Protobuf::Duration, ::Hash]
|
|
259
260
|
# If this timeout is set, the server returns a response before the timeout
|
|
260
261
|
# period has elapsed or the server deadline for synchronous requests is
|
|
@@ -537,10 +538,11 @@ module Google
|
|
|
537
538
|
# Required. Target project and location to make a call.
|
|
538
539
|
#
|
|
539
540
|
# Format:
|
|
541
|
+
#
|
|
540
542
|
# * `projects/{project-id}`
|
|
541
|
-
# * `projects/{project-id}/locations
|
|
543
|
+
# * `projects/{project-id}/locations/-`
|
|
542
544
|
#
|
|
543
|
-
#
|
|
545
|
+
# Regional `{location-id}` values are not supported.
|
|
544
546
|
# @param model_configs [::Array<::Google::Maps::RouteOptimization::V1::BatchOptimizeToursRequest::AsyncModelConfig, ::Hash>]
|
|
545
547
|
# Required. Input/Output information each purchase model, such as file paths
|
|
546
548
|
# and data formats.
|
|
@@ -636,10 +638,6 @@ module Google
|
|
|
636
638
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursResponse OptimizeToursResponse},
|
|
637
639
|
# if successful.
|
|
638
640
|
#
|
|
639
|
-
# Experimental: See
|
|
640
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
641
|
-
# for more details.
|
|
642
|
-
#
|
|
643
641
|
# @overload optimize_tours_long_running(request, options = nil)
|
|
644
642
|
# Pass arguments to `optimize_tours_long_running` via a request object, either of type
|
|
645
643
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursRequest} or an equivalent Hash.
|
|
@@ -659,10 +657,11 @@ module Google
|
|
|
659
657
|
# Required. Target project or location to make a call.
|
|
660
658
|
#
|
|
661
659
|
# Format:
|
|
660
|
+
#
|
|
662
661
|
# * `projects/{project-id}`
|
|
663
|
-
# * `projects/{project-id}/locations
|
|
662
|
+
# * `projects/{project-id}/locations/-`
|
|
664
663
|
#
|
|
665
|
-
#
|
|
664
|
+
# Regional `{location-id}` values are not supported.
|
|
666
665
|
# @param timeout [::Google::Protobuf::Duration, ::Hash]
|
|
667
666
|
# If this timeout is set, the server returns a response before the timeout
|
|
668
667
|
# period has elapsed or the server deadline for synchronous requests is
|
|
@@ -931,15 +930,11 @@ module Google
|
|
|
931
930
|
# `<parent>/operations/<operation_id>` and can be used to track
|
|
932
931
|
# progress of the computation. The
|
|
933
932
|
# {::Google::Longrunning::Operation#metadata metadata} field type is
|
|
934
|
-
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriMetadata
|
|
933
|
+
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriMetadata OptimizeToursUriMetadata}.
|
|
935
934
|
# The {::Google::Longrunning::Operation#response response} field type is
|
|
936
935
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriResponse OptimizeToursUriResponse},
|
|
937
936
|
# if successful.
|
|
938
937
|
#
|
|
939
|
-
# Experimental: See
|
|
940
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
941
|
-
# for more details.
|
|
942
|
-
#
|
|
943
938
|
# @overload optimize_tours_uri(request, options = nil)
|
|
944
939
|
# Pass arguments to `optimize_tours_uri` via a request object, either of type
|
|
945
940
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriRequest} or an equivalent Hash.
|
|
@@ -959,10 +954,11 @@ module Google
|
|
|
959
954
|
# Required. Target project or location to make a call.
|
|
960
955
|
#
|
|
961
956
|
# Format:
|
|
957
|
+
#
|
|
962
958
|
# * `projects/{project-id}`
|
|
963
|
-
# * `projects/{project-id}/locations
|
|
959
|
+
# * `projects/{project-id}/locations/-`
|
|
964
960
|
#
|
|
965
|
-
#
|
|
961
|
+
# Regional `{location-id}` values are not supported.
|
|
966
962
|
# @param input [::Google::Maps::RouteOptimization::V1::Uri, ::Hash]
|
|
967
963
|
# Required. The URI of the Cloud Storage object containing the
|
|
968
964
|
# `OptimizeToursRequest`.
|
|
@@ -244,10 +244,11 @@ module Google
|
|
|
244
244
|
# Required. Target project or location to make a call.
|
|
245
245
|
#
|
|
246
246
|
# Format:
|
|
247
|
+
#
|
|
247
248
|
# * `projects/{project-id}`
|
|
248
|
-
# * `projects/{project-id}/locations
|
|
249
|
+
# * `projects/{project-id}/locations/-`
|
|
249
250
|
#
|
|
250
|
-
#
|
|
251
|
+
# Regional `{location-id}` values are not supported.
|
|
251
252
|
# @param timeout [::Google::Protobuf::Duration, ::Hash]
|
|
252
253
|
# If this timeout is set, the server returns a response before the timeout
|
|
253
254
|
# period has elapsed or the server deadline for synchronous requests is
|
|
@@ -523,10 +524,11 @@ module Google
|
|
|
523
524
|
# Required. Target project and location to make a call.
|
|
524
525
|
#
|
|
525
526
|
# Format:
|
|
527
|
+
#
|
|
526
528
|
# * `projects/{project-id}`
|
|
527
|
-
# * `projects/{project-id}/locations
|
|
529
|
+
# * `projects/{project-id}/locations/-`
|
|
528
530
|
#
|
|
529
|
-
#
|
|
531
|
+
# Regional `{location-id}` values are not supported.
|
|
530
532
|
# @param model_configs [::Array<::Google::Maps::RouteOptimization::V1::BatchOptimizeToursRequest::AsyncModelConfig, ::Hash>]
|
|
531
533
|
# Required. Input/Output information each purchase model, such as file paths
|
|
532
534
|
# and data formats.
|
|
@@ -615,10 +617,6 @@ module Google
|
|
|
615
617
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursResponse OptimizeToursResponse},
|
|
616
618
|
# if successful.
|
|
617
619
|
#
|
|
618
|
-
# Experimental: See
|
|
619
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
620
|
-
# for more details.
|
|
621
|
-
#
|
|
622
620
|
# @overload optimize_tours_long_running(request, options = nil)
|
|
623
621
|
# Pass arguments to `optimize_tours_long_running` via a request object, either of type
|
|
624
622
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursRequest} or an equivalent Hash.
|
|
@@ -638,10 +636,11 @@ module Google
|
|
|
638
636
|
# Required. Target project or location to make a call.
|
|
639
637
|
#
|
|
640
638
|
# Format:
|
|
639
|
+
#
|
|
641
640
|
# * `projects/{project-id}`
|
|
642
|
-
# * `projects/{project-id}/locations
|
|
641
|
+
# * `projects/{project-id}/locations/-`
|
|
643
642
|
#
|
|
644
|
-
#
|
|
643
|
+
# Regional `{location-id}` values are not supported.
|
|
645
644
|
# @param timeout [::Google::Protobuf::Duration, ::Hash]
|
|
646
645
|
# If this timeout is set, the server returns a response before the timeout
|
|
647
646
|
# period has elapsed or the server deadline for synchronous requests is
|
|
@@ -903,15 +902,11 @@ module Google
|
|
|
903
902
|
# `<parent>/operations/<operation_id>` and can be used to track
|
|
904
903
|
# progress of the computation. The
|
|
905
904
|
# {::Google::Longrunning::Operation#metadata metadata} field type is
|
|
906
|
-
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriMetadata
|
|
905
|
+
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriMetadata OptimizeToursUriMetadata}.
|
|
907
906
|
# The {::Google::Longrunning::Operation#response response} field type is
|
|
908
907
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriResponse OptimizeToursUriResponse},
|
|
909
908
|
# if successful.
|
|
910
909
|
#
|
|
911
|
-
# Experimental: See
|
|
912
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
913
|
-
# for more details.
|
|
914
|
-
#
|
|
915
910
|
# @overload optimize_tours_uri(request, options = nil)
|
|
916
911
|
# Pass arguments to `optimize_tours_uri` via a request object, either of type
|
|
917
912
|
# {::Google::Maps::RouteOptimization::V1::OptimizeToursUriRequest} or an equivalent Hash.
|
|
@@ -931,10 +926,11 @@ module Google
|
|
|
931
926
|
# Required. Target project or location to make a call.
|
|
932
927
|
#
|
|
933
928
|
# Format:
|
|
929
|
+
#
|
|
934
930
|
# * `projects/{project-id}`
|
|
935
|
-
# * `projects/{project-id}/locations
|
|
931
|
+
# * `projects/{project-id}/locations/-`
|
|
936
932
|
#
|
|
937
|
-
#
|
|
933
|
+
# Regional `{location-id}` values are not supported.
|
|
938
934
|
# @param input [::Google::Maps::RouteOptimization::V1::Uri, ::Hash]
|
|
939
935
|
# Required. The URI of the Cloud Storage object containing the
|
|
940
936
|
# `OptimizeToursRequest`.
|
|
@@ -13,7 +13,7 @@ require 'google/protobuf/timestamp_pb'
|
|
|
13
13
|
require 'google/type/latlng_pb'
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
descriptor_data = "\nAgoogle/maps/routeoptimization/v1/route_optimization_service.proto\x12 google.maps.routeoptimization.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a#google/longrunning/operations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x18google/type/latlng.proto\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xa8\x01\n\x17OptimizeToursUriRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12:\n\x05input\x18\x02 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x02\x12;\n\x06output\x18\x03 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x02\"W\n\x18OptimizeToursUriResponse\x12;\n\x06output\x18\x01 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x01\"\x1a\n\x18OptimizeToursUriMetadata\"\xe5\x02\n\x19\x42\x61tchOptimizeToursRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12i\n\rmodel_configs\x18\x02 \x03(\x0b\x32L.google.maps.routeoptimization.v1.BatchOptimizeToursRequest.AsyncModelConfigB\x04\xe2\x41\x01\x02\x1a\xc6\x01\n\x10\x41syncModelConfig\x12\x1a\n\x0c\x64isplay_name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x01\x12I\n\x0cinput_config\x18\x02 \x01(\x0b\x32-.google.maps.routeoptimization.v1.InputConfigB\x04\xe2\x41\x01\x02\x12K\n\routput_config\x18\x03 \x01(\x0b\x32..google.maps.routeoptimization.v1.OutputConfigB\x04\xe2\x41\x01\x02\"\x1c\n\x1a\x42\x61tchOptimizeToursResponse\"\x1c\n\x1a\x42\x61tchOptimizeToursMetadata\"\"\n OptimizeToursLongRunningMetadata\"\xb3\t\n\x14OptimizeToursRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12>\n\x05model\x18\x03 \x01(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentModel\x12X\n\x0csolving_mode\x18\x04 \x01(\x0e\x32\x42.google.maps.routeoptimization.v1.OptimizeToursRequest.SolvingMode\x12V\n\x0bsearch_mode\x18\x06 \x01(\x0e\x32\x41.google.maps.routeoptimization.v1.OptimizeToursRequest.SearchMode\x12W\n\x1einjected_first_solution_routes\x18\x07 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x62\n\x1cinjected_solution_constraint\x18\x08 \x01(\x0b\x32<.google.maps.routeoptimization.v1.InjectedSolutionConstraint\x12O\n\x16refresh_details_routes\x18\t \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x31\n)interpret_injected_solutions_using_labels\x18\n \x01(\x08\x12\x1d\n\x15\x63onsider_road_traffic\x18\x0b \x01(\x08\x12\x1a\n\x12populate_polylines\x18\x0c \x01(\x08\x12%\n\x1dpopulate_transition_polylines\x18\r \x01(\x08\x12\x36\n.allow_large_deadline_despite_interruption_risk\x18\x0e \x01(\x08\x12\x1e\n\x16use_geodesic_distances\x18\x0f \x01(\x08\x12\'\n\x1ageodesic_meters_per_second\x18\x10 \x01(\x01H\x00\x88\x01\x01\x12\"\n\x15max_validation_errors\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\r\n\x05label\x18\x11 \x01(\t\"{\n\x0bSolvingMode\x12\x11\n\rDEFAULT_SOLVE\x10\x00\x12\x11\n\rVALIDATE_ONLY\x10\x01\x12$\n DETECT_SOME_INFEASIBLE_SHIPMENTS\x10\x02\x12 \n\x1cTRANSFORM_AND_RETURN_REQUEST\x10\x03\"Z\n\nSearchMode\x12\x1b\n\x17SEARCH_MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bRETURN_FAST\x10\x01\x12\x1e\n\x1a\x43ONSUME_ALL_AVAILABLE_TIME\x10\x02\x42\x1d\n\x1b_geodesic_meters_per_secondB\x18\n\x16_max_validation_errors\"\x81\x07\n\x15OptimizeToursResponse\x12?\n\x06routes\x18\x01 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x15\n\rrequest_label\x18\x03 \x01(\t\x12L\n\x11skipped_shipments\x18\x04 \x03(\x0b\x32\x31.google.maps.routeoptimization.v1.SkippedShipment\x12Y\n\x11validation_errors\x18\x05 \x03(\x0b\x32>.google.maps.routeoptimization.v1.OptimizeToursValidationError\x12Q\n\x11processed_request\x18\x15 \x01(\x0b\x32\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x12P\n\x07metrics\x18\x06 \x01(\x0b\x32?.google.maps.routeoptimization.v1.OptimizeToursResponse.Metrics\x1a\xc1\x03\n\x07Metrics\x12U\n\x18\x61ggregated_route_metrics\x18\x01 \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.AggregatedMetrics\x12(\n skipped_mandatory_shipment_count\x18\x02 \x01(\x05\x12\x1a\n\x12used_vehicle_count\x18\x03 \x01(\x05\x12?\n\x1b\x65\x61rliest_vehicle_start_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x17latest_vehicle_end_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12Y\n\x05\x63osts\x18\n \x03(\x0b\x32J.google.maps.routeoptimization.v1.OptimizeToursResponse.Metrics.CostsEntry\x12\x12\n\ntotal_cost\x18\x06 \x01(\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xfc\x0c\n\rShipmentModel\x12=\n\tshipments\x18\x01 \x03(\x0b\x32*.google.maps.routeoptimization.v1.Shipment\x12;\n\x08vehicles\x18\x02 \x03(\x0b\x32).google.maps.routeoptimization.v1.Vehicle\x12M\n\nobjectives\x18\x11 \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.ShipmentModel.Objective\x12 \n\x13max_active_vehicles\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x35\n\x11global_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fglobal_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x1dglobal_duration_cost_per_hour\x18\x07 \x01(\x01\x12j\n\x1a\x64uration_distance_matrices\x18\x08 \x03(\x0b\x32\x46.google.maps.routeoptimization.v1.ShipmentModel.DurationDistanceMatrix\x12)\n!duration_distance_matrix_src_tags\x18\t \x03(\t\x12)\n!duration_distance_matrix_dst_tags\x18\n \x03(\t\x12U\n\x15transition_attributes\x18\x0b \x03(\x0b\x32\x36.google.maps.routeoptimization.v1.TransitionAttributes\x12\x66\n\x1fshipment_type_incompatibilities\x18\x0c \x03(\x0b\x32=.google.maps.routeoptimization.v1.ShipmentTypeIncompatibility\x12]\n\x1ashipment_type_requirements\x18\r \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.ShipmentTypeRequirement\x12X\n\x10precedence_rules\x18\x0e \x03(\x0b\x32>.google.maps.routeoptimization.v1.ShipmentModel.PrecedenceRule\x1a\xef\x01\n\tObjective\x12Q\n\x04type\x18\x01 \x01(\x0e\x32>.google.maps.routeoptimization.v1.ShipmentModel.Objective.TypeH\x00\x88\x01\x01\x12\x13\n\x06weight\x18\x02 \x01(\x01H\x01\x88\x01\x01\"f\n\x04Type\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x10\n\x0cMIN_DISTANCE\x10\n\x12\x14\n\x10MIN_WORKING_TIME\x10\x0b\x12\x13\n\x0fMIN_TRAVEL_TIME\x10\x0c\x12\x14\n\x10MIN_NUM_VEHICLES\x10\rB\x07\n\x05_typeB\t\n\x07_weight\x1a\xd2\x01\n\x16\x44urationDistanceMatrix\x12X\n\x04rows\x18\x01 \x03(\x0b\x32J.google.maps.routeoptimization.v1.ShipmentModel.DurationDistanceMatrix.Row\x12\x19\n\x11vehicle_start_tag\x18\x02 \x01(\t\x1a\x43\n\x03Row\x12,\n\tdurations\x18\x01 \x03(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06meters\x18\x02 \x03(\x01\x1a\xd1\x01\n\x0ePrecedenceRule\x12\x18\n\x0b\x66irst_index\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x11\x66irst_is_delivery\x18\x03 \x01(\x08\x12\x19\n\x0csecond_index\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x1a\n\x12second_is_delivery\x18\x04 \x01(\x08\x12\x32\n\x0foffset_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\n\x0c_first_indexB\x0f\n\r_second_indexB\x16\n\x14_max_active_vehicles\"\xde\x0b\n\x08Shipment\x12\x14\n\x0c\x64isplay_name\x18\x10 \x01(\t\x12H\n\x07pickups\x18\x01 \x03(\x0b\x32\x37.google.maps.routeoptimization.v1.Shipment.VisitRequest\x12K\n\ndeliveries\x18\x02 \x03(\x0b\x32\x37.google.maps.routeoptimization.v1.Shipment.VisitRequest\x12Q\n\x0cload_demands\x18\x0e \x03(\x0b\x32;.google.maps.routeoptimization.v1.Shipment.LoadDemandsEntry\x12\x19\n\x0cpenalty_cost\x18\x04 \x01(\x01H\x00\x88\x01\x01\x12\x1f\n\x17\x61llowed_vehicle_indices\x18\x05 \x03(\x05\x12\x19\n\x11\x63osts_per_vehicle\x18\x06 \x03(\x01\x12!\n\x19\x63osts_per_vehicle_indices\x18\x07 \x03(\x05\x12\x35\n(pickup_to_delivery_relative_detour_limit\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12K\n(pickup_to_delivery_absolute_detour_limit\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\x1dpickup_to_delivery_time_limit\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x15\n\rshipment_type\x18\x0b \x01(\t\x12\r\n\x05label\x18\x0c \x01(\t\x12\x0e\n\x06ignore\x18\r \x01(\x08\x1a\xa0\x05\n\x0cVisitRequest\x12-\n\x10\x61rrival_location\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x44\n\x10\x61rrival_waypoint\x18\x02 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12/\n\x12\x64\x65parture_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x46\n\x12\x64\x65parture_waypoint\x18\x04 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12\x42\n\x0ctime_windows\x18\x06 \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12+\n\x08\x64uration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04\x63ost\x18\x08 \x01(\x01\x12^\n\x0cload_demands\x18\x0c \x03(\x0b\x32H.google.maps.routeoptimization.v1.Shipment.VisitRequest.LoadDemandsEntry\x12\x13\n\x0bvisit_types\x18\n \x03(\t\x12\r\n\x05label\x18\x0b \x01(\t\x12\x1a\n\ravoid_u_turns\x18\r \x01(\x08H\x00\x88\x01\x01\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\x42\x10\n\x0e_avoid_u_turns\x1a\x16\n\x04Load\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\x42\x0f\n\r_penalty_costB+\n)_pickup_to_delivery_relative_detour_limit\"\xa6\x02\n\x1bShipmentTypeIncompatibility\x12\r\n\x05types\x18\x01 \x03(\t\x12o\n\x14incompatibility_mode\x18\x02 \x01(\x0e\x32Q.google.maps.routeoptimization.v1.ShipmentTypeIncompatibility.IncompatibilityMode\"\x86\x01\n\x13IncompatibilityMode\x12$\n INCOMPATIBILITY_MODE_UNSPECIFIED\x10\x00\x12!\n\x1dNOT_PERFORMED_BY_SAME_VEHICLE\x10\x01\x12&\n\"NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY\x10\x02\"\xec\x02\n\x17ShipmentTypeRequirement\x12+\n#required_shipment_type_alternatives\x18\x01 \x03(\t\x12 \n\x18\x64\x65pendent_shipment_types\x18\x02 \x03(\t\x12\x63\n\x10requirement_mode\x18\x03 \x01(\x0e\x32I.google.maps.routeoptimization.v1.ShipmentTypeRequirement.RequirementMode\"\x9c\x01\n\x0fRequirementMode\x12 \n\x1cREQUIREMENT_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19PERFORMED_BY_SAME_VEHICLE\x10\x01\x12\"\n\x1eIN_SAME_VEHICLE_AT_PICKUP_TIME\x10\x02\x12$\n IN_SAME_VEHICLE_AT_DELIVERY_TIME\x10\x03\"p\n\x0eRouteModifiers\x12\x13\n\x0b\x61void_tolls\x18\x02 \x01(\x08\x12\x16\n\x0e\x61void_highways\x18\x03 \x01(\x08\x12\x15\n\ravoid_ferries\x18\x04 \x01(\x08\x12\x1a\n\x0c\x61void_indoor\x18\x05 \x01(\x08\x42\x04\xe2\x41\x01\x01\"\x9e\x17\n\x07Vehicle\x12\x14\n\x0c\x64isplay_name\x18 \x01(\t\x12I\n\x0btravel_mode\x18\x01 \x01(\x0e\x32\x34.google.maps.routeoptimization.v1.Vehicle.TravelMode\x12I\n\x0froute_modifiers\x18\x02 \x01(\x0b\x32\x30.google.maps.routeoptimization.v1.RouteModifiers\x12+\n\x0estart_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x42\n\x0estart_waypoint\x18\x04 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12)\n\x0c\x65nd_location\x18\x05 \x01(\x0b\x32\x13.google.type.LatLng\x12@\n\x0c\x65nd_waypoint\x18\x06 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12\x12\n\nstart_tags\x18\x07 \x03(\t\x12\x10\n\x08\x65nd_tags\x18\x08 \x03(\t\x12H\n\x12start_time_windows\x18\t \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12\x46\n\x10\x65nd_time_windows\x18\n \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12%\n\x18travel_duration_multiple\x18\x0b \x01(\x01H\x00\x88\x01\x01\x12S\n\x10unloading_policy\x18\x0c \x01(\x0e\x32\x39.google.maps.routeoptimization.v1.Vehicle.UnloadingPolicy\x12N\n\x0bload_limits\x18\x1e \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.Vehicle.LoadLimitsEntry\x12\x15\n\rcost_per_hour\x18\x10 \x01(\x01\x12\x1e\n\x16\x63ost_per_traveled_hour\x18\x11 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x12 \x01(\x01\x12\x12\n\nfixed_cost\x18\x13 \x01(\x01\x12\x1e\n\x16used_if_route_is_empty\x18\x14 \x01(\x08\x12U\n\x14route_duration_limit\x18\x15 \x01(\x0b\x32\x37.google.maps.routeoptimization.v1.Vehicle.DurationLimit\x12V\n\x15travel_duration_limit\x18\x16 \x01(\x0b\x32\x37.google.maps.routeoptimization.v1.Vehicle.DurationLimit\x12M\n\x14route_distance_limit\x18\x17 \x01(\x0b\x32/.google.maps.routeoptimization.v1.DistanceLimit\x12z\n#extra_visit_duration_for_visit_type\x18\x18 \x03(\x0b\x32M.google.maps.routeoptimization.v1.Vehicle.ExtraVisitDurationForVisitTypeEntry\x12?\n\nbreak_rule\x18\x19 \x01(\x0b\x32+.google.maps.routeoptimization.v1.BreakRule\x12\r\n\x05label\x18\x1b \x01(\t\x12\x0e\n\x06ignore\x18\x1c \x01(\x08\x1a\xa0\x06\n\tLoadLimit\x12\x15\n\x08max_load\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\rsoft_max_load\x18\x02 \x01(\x03\x12$\n\x1c\x63ost_per_unit_above_soft_max\x18\x03 \x01(\x01\x12Y\n\x13start_load_interval\x18\x04 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval\x12W\n\x11\x65nd_load_interval\x18\x05 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval\x12]\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.LoadCostH\x01\x88\x01\x01\x12\x61\n\x16\x63ost_per_traveled_hour\x18\x07 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.LoadCostH\x02\x88\x01\x01\x1a\x31\n\x08Interval\x12\x0b\n\x03min\x18\x01 \x01(\x03\x12\x10\n\x03max\x18\x02 \x01(\x03H\x00\x88\x01\x01\x42\x06\n\x04_max\x1a\xd6\x01\n\x08LoadCost\x12\x1b\n\x0eload_threshold\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12*\n\x1d\x63ost_per_unit_below_threshold\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12*\n\x1d\x63ost_per_unit_above_threshold\x18\x03 \x01(\x01H\x02\x88\x01\x01\x42\x11\n\x0f_load_thresholdB \n\x1e_cost_per_unit_below_thresholdB \n\x1e_cost_per_unit_above_thresholdB\x0b\n\t_max_loadB\x15\n\x13_cost_per_kilometerB\x19\n\x17_cost_per_traveled_hour\x1a\xf0\x02\n\rDurationLimit\x12/\n\x0cmax_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11soft_max_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12)\n\x1c\x63ost_per_hour_after_soft_max\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12>\n\x1bquadratic_soft_max_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n-cost_per_square_hour_after_quadratic_soft_max\x18\x05 \x01(\x01H\x01\x88\x01\x01\x42\x1f\n\x1d_cost_per_hour_after_soft_maxB0\n._cost_per_square_hour_after_quadratic_soft_max\x1a\x66\n\x0fLoadLimitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x42\n\x05value\x18\x02 \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.Vehicle.LoadLimit:\x02\x38\x01\x1a`\n#ExtraVisitDurationForVisitTypeEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x38\x01\"C\n\nTravelMode\x12\x1b\n\x17TRAVEL_MODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44RIVING\x10\x01\x12\x0b\n\x07WALKING\x10\x02\"b\n\x0fUnloadingPolicy\x12 \n\x1cUNLOADING_POLICY_UNSPECIFIED\x10\x00\x12\x15\n\x11LAST_IN_FIRST_OUT\x10\x01\x12\x16\n\x12\x46IRST_IN_FIRST_OUT\x10\x02\x42\x1b\n\x19_travel_duration_multiple\"\x84\x03\n\nTimeWindow\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fsoft_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rsoft_end_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n$cost_per_hour_before_soft_start_time\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12.\n!cost_per_hour_after_soft_end_time\x18\x06 \x01(\x01H\x01\x88\x01\x01\x42\'\n%_cost_per_hour_before_soft_start_timeB$\n\"_cost_per_hour_after_soft_end_time\"\x95\x02\n\rDistanceLimit\x12\x17\n\nmax_meters\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1c\n\x0fsoft_max_meters\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12.\n!cost_per_kilometer_below_soft_max\x18\x04 \x01(\x01H\x02\x88\x01\x01\x12.\n!cost_per_kilometer_above_soft_max\x18\x03 \x01(\x01H\x03\x88\x01\x01\x42\r\n\x0b_max_metersB\x12\n\x10_soft_max_metersB$\n\"_cost_per_kilometer_below_soft_maxB$\n\"_cost_per_kilometer_above_soft_max\"\x89\x02\n\x14TransitionAttributes\x12\x0f\n\x07src_tag\x18\x01 \x01(\t\x12\x18\n\x10\x65xcluded_src_tag\x18\x02 \x01(\t\x12\x0f\n\x07\x64st_tag\x18\x03 \x01(\t\x12\x18\n\x10\x65xcluded_dst_tag\x18\x04 \x01(\t\x12\x0c\n\x04\x63ost\x18\x05 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x01\x12G\n\x0e\x64istance_limit\x18\x07 \x01(\x0b\x32/.google.maps.routeoptimization.v1.DistanceLimit\x12(\n\x05\x64\x65lay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xa5\x01\n\x08Waypoint\x12>\n\x08location\x18\x01 \x01(\x0b\x32*.google.maps.routeoptimization.v1.LocationH\x00\x12\x12\n\x08place_id\x18\x02 \x01(\tH\x00\x12\x1a\n\x0cside_of_road\x18\x03 \x01(\x08\x42\x04\xe2\x41\x01\x01\x12\x18\n\x10vehicle_stopover\x18\x04 \x01(\x08\x42\x0f\n\rlocation_type\"R\n\x08Location\x12$\n\x07lat_lng\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x14\n\x07heading\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_heading\"\x99\x04\n\tBreakRule\x12P\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x38.google.maps.routeoptimization.v1.BreakRule.BreakRequest\x12^\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32?.google.maps.routeoptimization.v1.BreakRule.FrequencyConstraint\x1a\xc1\x01\n\x0c\x42reakRequest\x12=\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x02\x12;\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x02\x12\x35\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\x1a\x95\x01\n\x13\x46requencyConstraint\x12;\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\x12\x41\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\"\xa2\x11\n\rShipmentRoute\x12\x15\n\rvehicle_index\x18\x01 \x01(\x05\x12\x15\n\rvehicle_label\x18\x02 \x01(\t\x12\x36\n\x12vehicle_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10vehicle_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x06visits\x18\x07 \x03(\x0b\x32\x35.google.maps.routeoptimization.v1.ShipmentRoute.Visit\x12O\n\x0btransitions\x18\x08 \x03(\x0b\x32:.google.maps.routeoptimization.v1.ShipmentRoute.Transition\x12#\n\x1bhas_traffic_infeasibilities\x18\t \x01(\x08\x12W\n\x0eroute_polyline\x18\n \x01(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline\x12\x45\n\x06\x62reaks\x18\x0b \x03(\x0b\x32\x35.google.maps.routeoptimization.v1.ShipmentRoute.Break\x12\x44\n\x07metrics\x18\x0c \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.AggregatedMetrics\x12K\n\x10vehicle_fullness\x18\x14 \x01(\x0b\x32\x31.google.maps.routeoptimization.v1.VehicleFullness\x12T\n\x0broute_costs\x18\x11 \x03(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.RouteCostsEntry\x12\x18\n\x10route_total_cost\x18\x12 \x01(\x01\x1a\xee\x03\n\x05Visit\x12\x16\n\x0eshipment_index\x18\x01 \x01(\x05\x12\x11\n\tis_pickup\x18\x02 \x01(\x08\x12\x1b\n\x13visit_request_index\x18\x03 \x01(\x05\x12.\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\\\n\x0cload_demands\x18\x0b \x03(\x0b\x32\x46.google.maps.routeoptimization.v1.ShipmentRoute.Visit.LoadDemandsEntry\x12)\n\x06\x64\x65tour\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0eshipment_label\x18\x07 \x01(\t\x12\x13\n\x0bvisit_label\x18\x08 \x01(\t\x12-\n injected_solution_location_token\x18\r \x01(\x05H\x00\x88\x01\x01\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\x42#\n!_injected_solution_location_token\x1a\xc8\x05\n\nTransition\x12\x32\n\x0ftravel_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nstart_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12W\n\x0eroute_polyline\x18\t \x01(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline\x12\x19\n\x0broute_token\x18\x0c \x01(\tB\x04\xe2\x41\x01\x03\x12\x63\n\rvehicle_loads\x18\x0b \x03(\x0b\x32L.google.maps.routeoptimization.v1.ShipmentRoute.Transition.VehicleLoadsEntry\x1ap\n\x11VehicleLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12J\n\x05value\x18\x02 \x01(\x0b\x32;.google.maps.routeoptimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a\x1d\n\x0bVehicleLoad\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x03\x1a!\n\x0f\x45ncodedPolyline\x12\x0e\n\x06points\x18\x01 \x01(\t\x1a\x64\n\x05\x42reak\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x31\n\x0fRouteCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xcf\x07\n\x0fSkippedShipment\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\x12\x19\n\x0cpenalty_cost\x18\x06 \x01(\x01H\x00\x88\x01\x01\x12\x31\n$estimated_incompatible_vehicle_ratio\x18\x05 \x01(\x01H\x01\x88\x01\x01\x12I\n\x07reasons\x18\x03 \x03(\x0b\x32\x38.google.maps.routeoptimization.v1.SkippedShipment.Reason\x1a\xca\x05\n\x06Reason\x12K\n\x04\x63ode\x18\x01 \x01(\x0e\x32=.google.maps.routeoptimization.v1.SkippedShipment.Reason.Code\x12\"\n\x15\x65xample_vehicle_index\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1f\n\x17\x65xample_vehicle_indices\x18\x05 \x03(\x05\x12&\n\x1e\x65xample_exceeded_capacity_type\x18\x03 \x01(\t\"\xeb\x03\n\x04\x43ode\x12\x14\n\x10\x43ODE_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_VEHICLE\x10\x01\x12#\n\x1f\x44\x45MAND_EXCEEDS_VEHICLE_CAPACITY\x10\x02\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT\x10\x03\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT\x10\x04\x12<\n8CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT\x10\x05\x12\x33\n/CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS\x10\x06\x12\x17\n\x13VEHICLE_NOT_ALLOWED\x10\x07\x12\x13\n\x0fVEHICLE_IGNORED\x10\x08\x12\x14\n\x10SHIPMENT_IGNORED\x10\t\x12+\n\'SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT\x10\n\x12/\n+VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED\x10\x0b\x12\x15\n\x11ZERO_PENALTY_COST\x10\rB\x18\n\x16_example_vehicle_indexB\x0f\n\r_penalty_costB\'\n%_estimated_incompatible_vehicle_ratio\"\xfd\x05\n\x11\x41ggregatedMetrics\x12 \n\x18performed_shipment_count\x18\x01 \x01(\x05\x12/\n\"performed_mandatory_shipment_count\x18\x0c \x01(\x05H\x00\x88\x01\x01\x12\x30\n#performed_shipment_penalty_cost_sum\x18\r \x01(\x01H\x01\x88\x01\x01\x12\x32\n\x0ftravel_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0evisit_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x08 \x01(\x01\x12T\n\tmax_loads\x18\t \x03(\x0b\x32\x41.google.maps.routeoptimization.v1.AggregatedMetrics.MaxLoadsEntry\x1al\n\rMaxLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12J\n\x05value\x18\x02 \x01(\x0b\x32;.google.maps.routeoptimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x42%\n#_performed_mandatory_shipment_countB&\n$_performed_shipment_penalty_cost_sum\"\x93\x02\n\x0fVehicleFullness\x12\x19\n\x0cmax_fullness\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x1c\n\x0ftravel_duration\x18\x03 \x01(\x01H\x02\x88\x01\x01\x12\x1c\n\x0f\x61\x63tive_duration\x18\x04 \x01(\x01H\x03\x88\x01\x01\x12\x15\n\x08max_load\x18\x05 \x01(\x01H\x04\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_span\x18\x06 \x01(\x01H\x05\x88\x01\x01\x42\x0f\n\r_max_fullnessB\x0b\n\t_distanceB\x12\n\x10_travel_durationB\x12\n\x10_active_durationB\x0b\n\t_max_loadB\x0e\n\x0c_active_span\"\xb3\x06\n\x1aInjectedSolutionConstraint\x12?\n\x06routes\x18\x01 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12L\n\x11skipped_shipments\x18\x02 \x03(\x0b\x32\x31.google.maps.routeoptimization.v1.SkippedShipment\x12q\n\x16\x63onstraint_relaxations\x18\x03 \x03(\x0b\x32Q.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation\x1a\x92\x04\n\x14\x43onstraintRelaxation\x12q\n\x0brelaxations\x18\x01 \x03(\x0b\x32\\.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation\x12\x17\n\x0fvehicle_indices\x18\x02 \x03(\x05\x1a\xed\x02\n\nRelaxation\x12q\n\x05level\x18\x01 \x01(\x0e\x32\x62.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level\x12\x32\n\x0ethreshold_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1d\n\x15threshold_visit_count\x18\x03 \x01(\x05\"\x98\x01\n\x05Level\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12%\n!RELAX_VISIT_TIMES_AFTER_THRESHOLD\x10\x01\x12\x32\n.RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD\x10\x02\x12\x1d\n\x19RELAX_ALL_AFTER_THRESHOLD\x10\x03\"\x85\x03\n\x1cOptimizeToursValidationError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12]\n\x06\x66ields\x18\x03 \x03(\x0b\x32M.google.maps.routeoptimization.v1.OptimizeToursValidationError.FieldReference\x12\x15\n\rerror_message\x18\x04 \x01(\t\x12\x18\n\x10offending_values\x18\x05 \x01(\t\x1a\xb0\x01\n\x0e\x46ieldReference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x05index\x18\x02 \x01(\x05H\x00\x12\r\n\x03key\x18\x04 \x01(\tH\x00\x12`\n\tsub_field\x18\x03 \x01(\x0b\x32M.google.maps.routeoptimization.v1.OptimizeToursValidationError.FieldReferenceB\x0e\n\x0cindex_or_key\"\xa3\x01\n\x0bInputConfig\x12\x41\n\ngcs_source\x18\x01 \x01(\x0b\x32+.google.maps.routeoptimization.v1.GcsSourceH\x00\x12G\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32,.google.maps.routeoptimization.v1.DataFormatB\x04\xe2\x41\x01\x02\x42\x08\n\x06source\"\xb3\x01\n\x0cOutputConfig\x12K\n\x0fgcs_destination\x18\x01 \x01(\x0b\x32\x30.google.maps.routeoptimization.v1.GcsDestinationH\x00\x12G\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32,.google.maps.routeoptimization.v1.DataFormatB\x04\xe2\x41\x01\x02\x42\r\n\x0b\x64\x65stination\"\x1e\n\tGcsSource\x12\x11\n\x03uri\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\"#\n\x0eGcsDestination\x12\x11\n\x03uri\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02*C\n\nDataFormat\x12\x1b\n\x17\x44\x41TA_FORMAT_UNSPECIFIED\x10\x00\x12\x08\n\x04JSON\x10\x01\x12\x0e\n\nPROTO_TEXT\x10\x02\x32\xc1\t\n\x11RouteOptimization\x12\xea\x01\n\rOptimizeTours\x12\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x1a\x37.google.maps.routeoptimization.v1.OptimizeToursResponse\"h\x82\xd3\xe4\x93\x02\x62\"1/v1/{parent=projects/*/locations/*}:optimizeTours:\x01*Z*\"%/v1/{parent=projects/*}:optimizeTours:\x01*\x12\xa0\x02\n\x12\x42\x61tchOptimizeTours\x12;.google.maps.routeoptimization.v1.BatchOptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xad\x01\xca\x41\x38\n\x1a\x42\x61tchOptimizeToursResponse\x12\x1a\x42\x61tchOptimizeToursMetadata\x82\xd3\xe4\x93\x02l\"6/v1/{parent=projects/*/locations/*}:batchOptimizeTours:\x01*Z/\"*/v1/{parent=projects/*}:batchOptimizeTours:\x01*\x12\xae\x02\n\x18OptimizeToursLongRunning\x12\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xba\x01\xca\x41\x39\n\x15OptimizeToursResponse\x12 OptimizeToursLongRunningMetadata\x82\xd3\xe4\x93\x02x\"</v1/{parent=projects/*/locations/*}:optimizeToursLongRunning:\x01*Z5\"0/v1/{parent=projects/*}:optimizeToursLongRunning:\x01*\x12\x94\x02\n\x10OptimizeToursUri\x12\x39.google.maps.routeoptimization.v1.OptimizeToursUriRequest\x1a\x1d.google.longrunning.Operation\"\xa5\x01\xca\x41\x34\n\x18OptimizeToursUriResponse\x12\x18OptimizeToursUriMetadata\x82\xd3\xe4\x93\x02h\"4/v1/{parent=projects/*/locations/*}:OptimizeToursUri:\x01*Z-\"(/v1/{parent=projects/*}:OptimizeToursUri:\x01*\x1aT\xca\x41 routeoptimization.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\x8d\x02\n$com.google.maps.routeoptimization.v1B\x1dRouteOptimizationServiceProtoP\x01ZXcloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb;routeoptimizationpb\xaa\x02 Google.Maps.RouteOptimization.V1\xca\x02 Google\\Maps\\RouteOptimization\\V1\xea\x02#Google::Maps::RouteOptimization::V1b\x06proto3"
|
|
16
|
+
descriptor_data = "\nAgoogle/maps/routeoptimization/v1/route_optimization_service.proto\x12 google.maps.routeoptimization.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a#google/longrunning/operations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x18google/type/latlng.proto\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xa8\x01\n\x17OptimizeToursUriRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12:\n\x05input\x18\x02 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x02\x12;\n\x06output\x18\x03 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x02\"W\n\x18OptimizeToursUriResponse\x12;\n\x06output\x18\x01 \x01(\x0b\x32%.google.maps.routeoptimization.v1.UriB\x04\xe2\x41\x01\x01\"\x1a\n\x18OptimizeToursUriMetadata\"\xe5\x02\n\x19\x42\x61tchOptimizeToursRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12i\n\rmodel_configs\x18\x02 \x03(\x0b\x32L.google.maps.routeoptimization.v1.BatchOptimizeToursRequest.AsyncModelConfigB\x04\xe2\x41\x01\x02\x1a\xc6\x01\n\x10\x41syncModelConfig\x12\x1a\n\x0c\x64isplay_name\x18\x01 \x01(\tB\x04\xe2\x41\x01\x01\x12I\n\x0cinput_config\x18\x02 \x01(\x0b\x32-.google.maps.routeoptimization.v1.InputConfigB\x04\xe2\x41\x01\x02\x12K\n\routput_config\x18\x03 \x01(\x0b\x32..google.maps.routeoptimization.v1.OutputConfigB\x04\xe2\x41\x01\x02\"\x1c\n\x1a\x42\x61tchOptimizeToursResponse\"\x1c\n\x1a\x42\x61tchOptimizeToursMetadata\"\"\n OptimizeToursLongRunningMetadata\"\xb3\t\n\x14OptimizeToursRequest\x12\x14\n\x06parent\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12>\n\x05model\x18\x03 \x01(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentModel\x12X\n\x0csolving_mode\x18\x04 \x01(\x0e\x32\x42.google.maps.routeoptimization.v1.OptimizeToursRequest.SolvingMode\x12V\n\x0bsearch_mode\x18\x06 \x01(\x0e\x32\x41.google.maps.routeoptimization.v1.OptimizeToursRequest.SearchMode\x12W\n\x1einjected_first_solution_routes\x18\x07 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x62\n\x1cinjected_solution_constraint\x18\x08 \x01(\x0b\x32<.google.maps.routeoptimization.v1.InjectedSolutionConstraint\x12O\n\x16refresh_details_routes\x18\t \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x31\n)interpret_injected_solutions_using_labels\x18\n \x01(\x08\x12\x1d\n\x15\x63onsider_road_traffic\x18\x0b \x01(\x08\x12\x1a\n\x12populate_polylines\x18\x0c \x01(\x08\x12%\n\x1dpopulate_transition_polylines\x18\r \x01(\x08\x12\x36\n.allow_large_deadline_despite_interruption_risk\x18\x0e \x01(\x08\x12\x1e\n\x16use_geodesic_distances\x18\x0f \x01(\x08\x12\'\n\x1ageodesic_meters_per_second\x18\x10 \x01(\x01H\x00\x88\x01\x01\x12\"\n\x15max_validation_errors\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\r\n\x05label\x18\x11 \x01(\t\"{\n\x0bSolvingMode\x12\x11\n\rDEFAULT_SOLVE\x10\x00\x12\x11\n\rVALIDATE_ONLY\x10\x01\x12$\n DETECT_SOME_INFEASIBLE_SHIPMENTS\x10\x02\x12 \n\x1cTRANSFORM_AND_RETURN_REQUEST\x10\x03\"Z\n\nSearchMode\x12\x1b\n\x17SEARCH_MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bRETURN_FAST\x10\x01\x12\x1e\n\x1a\x43ONSUME_ALL_AVAILABLE_TIME\x10\x02\x42\x1d\n\x1b_geodesic_meters_per_secondB\x18\n\x16_max_validation_errors\"\x81\x07\n\x15OptimizeToursResponse\x12?\n\x06routes\x18\x01 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12\x15\n\rrequest_label\x18\x03 \x01(\t\x12L\n\x11skipped_shipments\x18\x04 \x03(\x0b\x32\x31.google.maps.routeoptimization.v1.SkippedShipment\x12Y\n\x11validation_errors\x18\x05 \x03(\x0b\x32>.google.maps.routeoptimization.v1.OptimizeToursValidationError\x12Q\n\x11processed_request\x18\x15 \x01(\x0b\x32\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x12P\n\x07metrics\x18\x06 \x01(\x0b\x32?.google.maps.routeoptimization.v1.OptimizeToursResponse.Metrics\x1a\xc1\x03\n\x07Metrics\x12U\n\x18\x61ggregated_route_metrics\x18\x01 \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.AggregatedMetrics\x12(\n skipped_mandatory_shipment_count\x18\x02 \x01(\x05\x12\x1a\n\x12used_vehicle_count\x18\x03 \x01(\x05\x12?\n\x1b\x65\x61rliest_vehicle_start_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12;\n\x17latest_vehicle_end_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12Y\n\x05\x63osts\x18\n \x03(\x0b\x32J.google.maps.routeoptimization.v1.OptimizeToursResponse.Metrics.CostsEntry\x12\x12\n\ntotal_cost\x18\x06 \x01(\x01\x1a,\n\nCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xfc\x0c\n\rShipmentModel\x12=\n\tshipments\x18\x01 \x03(\x0b\x32*.google.maps.routeoptimization.v1.Shipment\x12;\n\x08vehicles\x18\x02 \x03(\x0b\x32).google.maps.routeoptimization.v1.Vehicle\x12M\n\nobjectives\x18\x11 \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.ShipmentModel.Objective\x12 \n\x13max_active_vehicles\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x35\n\x11global_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fglobal_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x1dglobal_duration_cost_per_hour\x18\x07 \x01(\x01\x12j\n\x1a\x64uration_distance_matrices\x18\x08 \x03(\x0b\x32\x46.google.maps.routeoptimization.v1.ShipmentModel.DurationDistanceMatrix\x12)\n!duration_distance_matrix_src_tags\x18\t \x03(\t\x12)\n!duration_distance_matrix_dst_tags\x18\n \x03(\t\x12U\n\x15transition_attributes\x18\x0b \x03(\x0b\x32\x36.google.maps.routeoptimization.v1.TransitionAttributes\x12\x66\n\x1fshipment_type_incompatibilities\x18\x0c \x03(\x0b\x32=.google.maps.routeoptimization.v1.ShipmentTypeIncompatibility\x12]\n\x1ashipment_type_requirements\x18\r \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.ShipmentTypeRequirement\x12X\n\x10precedence_rules\x18\x0e \x03(\x0b\x32>.google.maps.routeoptimization.v1.ShipmentModel.PrecedenceRule\x1a\xef\x01\n\tObjective\x12Q\n\x04type\x18\x01 \x01(\x0e\x32>.google.maps.routeoptimization.v1.ShipmentModel.Objective.TypeH\x00\x88\x01\x01\x12\x13\n\x06weight\x18\x02 \x01(\x01H\x01\x88\x01\x01\"f\n\x04Type\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x10\n\x0cMIN_DISTANCE\x10\n\x12\x14\n\x10MIN_WORKING_TIME\x10\x0b\x12\x13\n\x0fMIN_TRAVEL_TIME\x10\x0c\x12\x14\n\x10MIN_NUM_VEHICLES\x10\rB\x07\n\x05_typeB\t\n\x07_weight\x1a\xd2\x01\n\x16\x44urationDistanceMatrix\x12X\n\x04rows\x18\x01 \x03(\x0b\x32J.google.maps.routeoptimization.v1.ShipmentModel.DurationDistanceMatrix.Row\x12\x19\n\x11vehicle_start_tag\x18\x02 \x01(\t\x1a\x43\n\x03Row\x12,\n\tdurations\x18\x01 \x03(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06meters\x18\x02 \x03(\x01\x1a\xd1\x01\n\x0ePrecedenceRule\x12\x18\n\x0b\x66irst_index\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x11\x66irst_is_delivery\x18\x03 \x01(\x08\x12\x19\n\x0csecond_index\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x1a\n\x12second_is_delivery\x18\x04 \x01(\x08\x12\x32\n\x0foffset_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\n\x0c_first_indexB\x0f\n\r_second_indexB\x16\n\x14_max_active_vehicles\"\xe4\x0b\n\x08Shipment\x12\x14\n\x0c\x64isplay_name\x18\x10 \x01(\t\x12H\n\x07pickups\x18\x01 \x03(\x0b\x32\x37.google.maps.routeoptimization.v1.Shipment.VisitRequest\x12K\n\ndeliveries\x18\x02 \x03(\x0b\x32\x37.google.maps.routeoptimization.v1.Shipment.VisitRequest\x12Q\n\x0cload_demands\x18\x0e \x03(\x0b\x32;.google.maps.routeoptimization.v1.Shipment.LoadDemandsEntry\x12\x1f\n\x0cpenalty_cost\x18\x04 \x01(\x01\x42\x04\xe2\x41\x01\x01H\x00\x88\x01\x01\x12\x1f\n\x17\x61llowed_vehicle_indices\x18\x05 \x03(\x05\x12\x19\n\x11\x63osts_per_vehicle\x18\x06 \x03(\x01\x12!\n\x19\x63osts_per_vehicle_indices\x18\x07 \x03(\x05\x12\x35\n(pickup_to_delivery_relative_detour_limit\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12K\n(pickup_to_delivery_absolute_detour_limit\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\x1dpickup_to_delivery_time_limit\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x15\n\rshipment_type\x18\x0b \x01(\t\x12\r\n\x05label\x18\x0c \x01(\t\x12\x0e\n\x06ignore\x18\r \x01(\x08\x1a\xa0\x05\n\x0cVisitRequest\x12-\n\x10\x61rrival_location\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x44\n\x10\x61rrival_waypoint\x18\x02 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12/\n\x12\x64\x65parture_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x46\n\x12\x64\x65parture_waypoint\x18\x04 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12\x42\n\x0ctime_windows\x18\x06 \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12+\n\x08\x64uration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04\x63ost\x18\x08 \x01(\x01\x12^\n\x0cload_demands\x18\x0c \x03(\x0b\x32H.google.maps.routeoptimization.v1.Shipment.VisitRequest.LoadDemandsEntry\x12\x13\n\x0bvisit_types\x18\n \x03(\t\x12\r\n\x05label\x18\x0b \x01(\t\x12\x1a\n\ravoid_u_turns\x18\r \x01(\x08H\x00\x88\x01\x01\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\x42\x10\n\x0e_avoid_u_turns\x1a\x16\n\x04Load\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\x42\x0f\n\r_penalty_costB+\n)_pickup_to_delivery_relative_detour_limit\"\xa6\x02\n\x1bShipmentTypeIncompatibility\x12\r\n\x05types\x18\x01 \x03(\t\x12o\n\x14incompatibility_mode\x18\x02 \x01(\x0e\x32Q.google.maps.routeoptimization.v1.ShipmentTypeIncompatibility.IncompatibilityMode\"\x86\x01\n\x13IncompatibilityMode\x12$\n INCOMPATIBILITY_MODE_UNSPECIFIED\x10\x00\x12!\n\x1dNOT_PERFORMED_BY_SAME_VEHICLE\x10\x01\x12&\n\"NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY\x10\x02\"\xec\x02\n\x17ShipmentTypeRequirement\x12+\n#required_shipment_type_alternatives\x18\x01 \x03(\t\x12 \n\x18\x64\x65pendent_shipment_types\x18\x02 \x03(\t\x12\x63\n\x10requirement_mode\x18\x03 \x01(\x0e\x32I.google.maps.routeoptimization.v1.ShipmentTypeRequirement.RequirementMode\"\x9c\x01\n\x0fRequirementMode\x12 \n\x1cREQUIREMENT_MODE_UNSPECIFIED\x10\x00\x12\x1d\n\x19PERFORMED_BY_SAME_VEHICLE\x10\x01\x12\"\n\x1eIN_SAME_VEHICLE_AT_PICKUP_TIME\x10\x02\x12$\n IN_SAME_VEHICLE_AT_DELIVERY_TIME\x10\x03\"p\n\x0eRouteModifiers\x12\x13\n\x0b\x61void_tolls\x18\x02 \x01(\x08\x12\x16\n\x0e\x61void_highways\x18\x03 \x01(\x08\x12\x15\n\ravoid_ferries\x18\x04 \x01(\x08\x12\x1a\n\x0c\x61void_indoor\x18\x05 \x01(\x08\x42\x04\xe2\x41\x01\x01\"\xaf\x17\n\x07Vehicle\x12\x14\n\x0c\x64isplay_name\x18 \x01(\t\x12I\n\x0btravel_mode\x18\x01 \x01(\x0e\x32\x34.google.maps.routeoptimization.v1.Vehicle.TravelMode\x12I\n\x0froute_modifiers\x18\x02 \x01(\x0b\x32\x30.google.maps.routeoptimization.v1.RouteModifiers\x12+\n\x0estart_location\x18\x03 \x01(\x0b\x32\x13.google.type.LatLng\x12\x42\n\x0estart_waypoint\x18\x04 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12)\n\x0c\x65nd_location\x18\x05 \x01(\x0b\x32\x13.google.type.LatLng\x12@\n\x0c\x65nd_waypoint\x18\x06 \x01(\x0b\x32*.google.maps.routeoptimization.v1.Waypoint\x12\x12\n\nstart_tags\x18\x07 \x03(\t\x12\x10\n\x08\x65nd_tags\x18\x08 \x03(\t\x12H\n\x12start_time_windows\x18\t \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12\x46\n\x10\x65nd_time_windows\x18\n \x03(\x0b\x32,.google.maps.routeoptimization.v1.TimeWindow\x12%\n\x18travel_duration_multiple\x18\x0b \x01(\x01H\x00\x88\x01\x01\x12S\n\x10unloading_policy\x18\x0c \x01(\x0e\x32\x39.google.maps.routeoptimization.v1.Vehicle.UnloadingPolicy\x12N\n\x0bload_limits\x18\x1e \x03(\x0b\x32\x39.google.maps.routeoptimization.v1.Vehicle.LoadLimitsEntry\x12\x15\n\rcost_per_hour\x18\x10 \x01(\x01\x12\x1e\n\x16\x63ost_per_traveled_hour\x18\x11 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x12 \x01(\x01\x12\x12\n\nfixed_cost\x18\x13 \x01(\x01\x12\x1e\n\x16used_if_route_is_empty\x18\x14 \x01(\x08\x12U\n\x14route_duration_limit\x18\x15 \x01(\x0b\x32\x37.google.maps.routeoptimization.v1.Vehicle.DurationLimit\x12V\n\x15travel_duration_limit\x18\x16 \x01(\x0b\x32\x37.google.maps.routeoptimization.v1.Vehicle.DurationLimit\x12M\n\x14route_distance_limit\x18\x17 \x01(\x0b\x32/.google.maps.routeoptimization.v1.DistanceLimit\x12z\n#extra_visit_duration_for_visit_type\x18\x18 \x03(\x0b\x32M.google.maps.routeoptimization.v1.Vehicle.ExtraVisitDurationForVisitTypeEntry\x12?\n\nbreak_rule\x18\x19 \x01(\x0b\x32+.google.maps.routeoptimization.v1.BreakRule\x12\r\n\x05label\x18\x1b \x01(\t\x12\x0e\n\x06ignore\x18\x1c \x01(\x08\x1a\xa0\x06\n\tLoadLimit\x12\x15\n\x08max_load\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\rsoft_max_load\x18\x02 \x01(\x03\x12$\n\x1c\x63ost_per_unit_above_soft_max\x18\x03 \x01(\x01\x12Y\n\x13start_load_interval\x18\x04 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval\x12W\n\x11\x65nd_load_interval\x18\x05 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.Interval\x12]\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.LoadCostH\x01\x88\x01\x01\x12\x61\n\x16\x63ost_per_traveled_hour\x18\x07 \x01(\x0b\x32<.google.maps.routeoptimization.v1.Vehicle.LoadLimit.LoadCostH\x02\x88\x01\x01\x1a\x31\n\x08Interval\x12\x0b\n\x03min\x18\x01 \x01(\x03\x12\x10\n\x03max\x18\x02 \x01(\x03H\x00\x88\x01\x01\x42\x06\n\x04_max\x1a\xd6\x01\n\x08LoadCost\x12\x1b\n\x0eload_threshold\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12*\n\x1d\x63ost_per_unit_below_threshold\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12*\n\x1d\x63ost_per_unit_above_threshold\x18\x03 \x01(\x01H\x02\x88\x01\x01\x42\x11\n\x0f_load_thresholdB \n\x1e_cost_per_unit_below_thresholdB \n\x1e_cost_per_unit_above_thresholdB\x0b\n\t_max_loadB\x15\n\x13_cost_per_kilometerB\x19\n\x17_cost_per_traveled_hour\x1a\xf0\x02\n\rDurationLimit\x12/\n\x0cmax_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11soft_max_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12)\n\x1c\x63ost_per_hour_after_soft_max\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12>\n\x1bquadratic_soft_max_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n-cost_per_square_hour_after_quadratic_soft_max\x18\x05 \x01(\x01H\x01\x88\x01\x01\x42\x1f\n\x1d_cost_per_hour_after_soft_maxB0\n._cost_per_square_hour_after_quadratic_soft_max\x1a\x66\n\x0fLoadLimitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x42\n\x05value\x18\x02 \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.Vehicle.LoadLimit:\x02\x38\x01\x1a`\n#ExtraVisitDurationForVisitTypeEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration:\x02\x38\x01\"T\n\nTravelMode\x12\x1b\n\x17TRAVEL_MODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x44RIVING\x10\x01\x12\x0b\n\x07WALKING\x10\x02\x12\x0f\n\x0bTWO_WHEELER\x10\x05\"b\n\x0fUnloadingPolicy\x12 \n\x1cUNLOADING_POLICY_UNSPECIFIED\x10\x00\x12\x15\n\x11LAST_IN_FIRST_OUT\x10\x01\x12\x16\n\x12\x46IRST_IN_FIRST_OUT\x10\x02\x42\x1b\n\x19_travel_duration_multiple\"\x84\x03\n\nTimeWindow\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\x0fsoft_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rsoft_end_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n$cost_per_hour_before_soft_start_time\x18\x05 \x01(\x01H\x00\x88\x01\x01\x12.\n!cost_per_hour_after_soft_end_time\x18\x06 \x01(\x01H\x01\x88\x01\x01\x42\'\n%_cost_per_hour_before_soft_start_timeB$\n\"_cost_per_hour_after_soft_end_time\"\x95\x02\n\rDistanceLimit\x12\x17\n\nmax_meters\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1c\n\x0fsoft_max_meters\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12.\n!cost_per_kilometer_below_soft_max\x18\x04 \x01(\x01H\x02\x88\x01\x01\x12.\n!cost_per_kilometer_above_soft_max\x18\x03 \x01(\x01H\x03\x88\x01\x01\x42\r\n\x0b_max_metersB\x12\n\x10_soft_max_metersB$\n\"_cost_per_kilometer_below_soft_maxB$\n\"_cost_per_kilometer_above_soft_max\"\x89\x02\n\x14TransitionAttributes\x12\x0f\n\x07src_tag\x18\x01 \x01(\t\x12\x18\n\x10\x65xcluded_src_tag\x18\x02 \x01(\t\x12\x0f\n\x07\x64st_tag\x18\x03 \x01(\t\x12\x18\n\x10\x65xcluded_dst_tag\x18\x04 \x01(\t\x12\x0c\n\x04\x63ost\x18\x05 \x01(\x01\x12\x1a\n\x12\x63ost_per_kilometer\x18\x06 \x01(\x01\x12G\n\x0e\x64istance_limit\x18\x07 \x01(\x0b\x32/.google.maps.routeoptimization.v1.DistanceLimit\x12(\n\x05\x64\x65lay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xa5\x01\n\x08Waypoint\x12>\n\x08location\x18\x01 \x01(\x0b\x32*.google.maps.routeoptimization.v1.LocationH\x00\x12\x12\n\x08place_id\x18\x02 \x01(\tH\x00\x12\x1a\n\x0cside_of_road\x18\x03 \x01(\x08\x42\x04\xe2\x41\x01\x01\x12\x18\n\x10vehicle_stopover\x18\x04 \x01(\x08\x42\x0f\n\rlocation_type\"R\n\x08Location\x12$\n\x07lat_lng\x18\x01 \x01(\x0b\x32\x13.google.type.LatLng\x12\x14\n\x07heading\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_heading\"\x99\x04\n\tBreakRule\x12P\n\x0e\x62reak_requests\x18\x01 \x03(\x0b\x32\x38.google.maps.routeoptimization.v1.BreakRule.BreakRequest\x12^\n\x15\x66requency_constraints\x18\x02 \x03(\x0b\x32?.google.maps.routeoptimization.v1.BreakRule.FrequencyConstraint\x1a\xc1\x01\n\x0c\x42reakRequest\x12=\n\x13\x65\x61rliest_start_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x02\x12;\n\x11latest_start_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x02\x12\x35\n\x0cmin_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\x1a\x95\x01\n\x13\x46requencyConstraint\x12;\n\x12min_break_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\x12\x41\n\x18max_inter_break_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x04\xe2\x41\x01\x02\"\xd1\x12\n\rShipmentRoute\x12\x15\n\rvehicle_index\x18\x01 \x01(\x05\x12\x15\n\rvehicle_label\x18\x02 \x01(\t\x12\x36\n\x12vehicle_start_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x10vehicle_end_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x06visits\x18\x07 \x03(\x0b\x32\x35.google.maps.routeoptimization.v1.ShipmentRoute.Visit\x12O\n\x0btransitions\x18\x08 \x03(\x0b\x32:.google.maps.routeoptimization.v1.ShipmentRoute.Transition\x12#\n\x1bhas_traffic_infeasibilities\x18\t \x01(\x08\x12W\n\x0eroute_polyline\x18\n \x01(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline\x12\x45\n\x06\x62reaks\x18\x0b \x03(\x0b\x32\x35.google.maps.routeoptimization.v1.ShipmentRoute.Break\x12\x44\n\x07metrics\x18\x0c \x01(\x0b\x32\x33.google.maps.routeoptimization.v1.AggregatedMetrics\x12K\n\x10vehicle_fullness\x18\x14 \x01(\x0b\x32\x31.google.maps.routeoptimization.v1.VehicleFullness\x12T\n\x0broute_costs\x18\x11 \x03(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.RouteCostsEntry\x12\x18\n\x10route_total_cost\x18\x12 \x01(\x01\x1a\x9d\x05\n\x05Visit\x12\x16\n\x0eshipment_index\x18\x01 \x01(\x05\x12\x11\n\tis_pickup\x18\x02 \x01(\x08\x12\x1b\n\x13visit_request_index\x18\x03 \x01(\x05\x12.\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\\\n\x0cload_demands\x18\x0b \x03(\x0b\x32\x46.google.maps.routeoptimization.v1.ShipmentRoute.Visit.LoadDemandsEntry\x12)\n\x06\x64\x65tour\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0eshipment_label\x18\x07 \x01(\t\x12\x13\n\x0bvisit_label\x18\x08 \x01(\t\x12-\n injected_solution_location_token\x18\r \x01(\x05H\x00\x88\x01\x01\x12Y\n\nvisit_type\x18\x0e \x01(\x0e\x32?.google.maps.routeoptimization.v1.ShipmentRoute.Visit.VisitTypeB\x04\xe2\x41\x01\x01\x1a\x63\n\x10LoadDemandsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.google.maps.routeoptimization.v1.Shipment.Load:\x02\x38\x01\"R\n\tVisitType\x12\x1a\n\x16VISIT_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fPICKUP_SHIPMENT\x10\x01\x12\x14\n\x10\x44\x45LIVER_SHIPMENT\x10\x02\x42#\n!_injected_solution_location_token\x1a\xc8\x05\n\nTransition\x12\x32\n\x0ftravel_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x02 \x01(\x01\x12 \n\x18traffic_info_unavailable\x18\x03 \x01(\x08\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nstart_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12W\n\x0eroute_polyline\x18\t \x01(\x0b\x32?.google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline\x12\x19\n\x0broute_token\x18\x0c \x01(\tB\x04\xe2\x41\x01\x03\x12\x63\n\rvehicle_loads\x18\x0b \x03(\x0b\x32L.google.maps.routeoptimization.v1.ShipmentRoute.Transition.VehicleLoadsEntry\x1ap\n\x11VehicleLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12J\n\x05value\x18\x02 \x01(\x0b\x32;.google.maps.routeoptimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x1a\x1d\n\x0bVehicleLoad\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x03\x1a!\n\x0f\x45ncodedPolyline\x12\x0e\n\x06points\x18\x01 \x01(\t\x1a\x64\n\x05\x42reak\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x31\n\x0fRouteCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"\xcf\x07\n\x0fSkippedShipment\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\x12\x19\n\x0cpenalty_cost\x18\x06 \x01(\x01H\x00\x88\x01\x01\x12\x31\n$estimated_incompatible_vehicle_ratio\x18\x05 \x01(\x01H\x01\x88\x01\x01\x12I\n\x07reasons\x18\x03 \x03(\x0b\x32\x38.google.maps.routeoptimization.v1.SkippedShipment.Reason\x1a\xca\x05\n\x06Reason\x12K\n\x04\x63ode\x18\x01 \x01(\x0e\x32=.google.maps.routeoptimization.v1.SkippedShipment.Reason.Code\x12\"\n\x15\x65xample_vehicle_index\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1f\n\x17\x65xample_vehicle_indices\x18\x05 \x03(\x05\x12&\n\x1e\x65xample_exceeded_capacity_type\x18\x03 \x01(\t\"\xeb\x03\n\x04\x43ode\x12\x14\n\x10\x43ODE_UNSPECIFIED\x10\x00\x12\x0e\n\nNO_VEHICLE\x10\x01\x12#\n\x1f\x44\x45MAND_EXCEEDS_VEHICLE_CAPACITY\x10\x02\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT\x10\x03\x12\x35\n1CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT\x10\x04\x12<\n8CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT\x10\x05\x12\x33\n/CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS\x10\x06\x12\x17\n\x13VEHICLE_NOT_ALLOWED\x10\x07\x12\x13\n\x0fVEHICLE_IGNORED\x10\x08\x12\x14\n\x10SHIPMENT_IGNORED\x10\t\x12+\n\'SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT\x10\n\x12/\n+VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED\x10\x0b\x12\x15\n\x11ZERO_PENALTY_COST\x10\rB\x18\n\x16_example_vehicle_indexB\x0f\n\r_penalty_costB\'\n%_estimated_incompatible_vehicle_ratio\"\xfd\x05\n\x11\x41ggregatedMetrics\x12 \n\x18performed_shipment_count\x18\x01 \x01(\x05\x12/\n\"performed_mandatory_shipment_count\x18\x0c \x01(\x05H\x00\x88\x01\x01\x12\x30\n#performed_shipment_penalty_cost_sum\x18\r \x01(\x01H\x01\x88\x01\x01\x12\x32\n\x0ftravel_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rwait_duration\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x64\x65lay_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0e\x62reak_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0evisit_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1e\n\x16travel_distance_meters\x18\x08 \x01(\x01\x12T\n\tmax_loads\x18\t \x03(\x0b\x32\x41.google.maps.routeoptimization.v1.AggregatedMetrics.MaxLoadsEntry\x1al\n\rMaxLoadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12J\n\x05value\x18\x02 \x01(\x0b\x32;.google.maps.routeoptimization.v1.ShipmentRoute.VehicleLoad:\x02\x38\x01\x42%\n#_performed_mandatory_shipment_countB&\n$_performed_shipment_penalty_cost_sum\"\x93\x02\n\x0fVehicleFullness\x12\x19\n\x0cmax_fullness\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x1c\n\x0ftravel_duration\x18\x03 \x01(\x01H\x02\x88\x01\x01\x12\x1c\n\x0f\x61\x63tive_duration\x18\x04 \x01(\x01H\x03\x88\x01\x01\x12\x15\n\x08max_load\x18\x05 \x01(\x01H\x04\x88\x01\x01\x12\x18\n\x0b\x61\x63tive_span\x18\x06 \x01(\x01H\x05\x88\x01\x01\x42\x0f\n\r_max_fullnessB\x0b\n\t_distanceB\x12\n\x10_travel_durationB\x12\n\x10_active_durationB\x0b\n\t_max_loadB\x0e\n\x0c_active_span\"\xb3\x06\n\x1aInjectedSolutionConstraint\x12?\n\x06routes\x18\x01 \x03(\x0b\x32/.google.maps.routeoptimization.v1.ShipmentRoute\x12L\n\x11skipped_shipments\x18\x02 \x03(\x0b\x32\x31.google.maps.routeoptimization.v1.SkippedShipment\x12q\n\x16\x63onstraint_relaxations\x18\x03 \x03(\x0b\x32Q.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation\x1a\x92\x04\n\x14\x43onstraintRelaxation\x12q\n\x0brelaxations\x18\x01 \x03(\x0b\x32\\.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation\x12\x17\n\x0fvehicle_indices\x18\x02 \x03(\x05\x1a\xed\x02\n\nRelaxation\x12q\n\x05level\x18\x01 \x01(\x0e\x32\x62.google.maps.routeoptimization.v1.InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level\x12\x32\n\x0ethreshold_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1d\n\x15threshold_visit_count\x18\x03 \x01(\x05\"\x98\x01\n\x05Level\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12%\n!RELAX_VISIT_TIMES_AFTER_THRESHOLD\x10\x01\x12\x32\n.RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD\x10\x02\x12\x1d\n\x19RELAX_ALL_AFTER_THRESHOLD\x10\x03\"\x85\x03\n\x1cOptimizeToursValidationError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12]\n\x06\x66ields\x18\x03 \x03(\x0b\x32M.google.maps.routeoptimization.v1.OptimizeToursValidationError.FieldReference\x12\x15\n\rerror_message\x18\x04 \x01(\t\x12\x18\n\x10offending_values\x18\x05 \x01(\t\x1a\xb0\x01\n\x0e\x46ieldReference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x05index\x18\x02 \x01(\x05H\x00\x12\r\n\x03key\x18\x04 \x01(\tH\x00\x12`\n\tsub_field\x18\x03 \x01(\x0b\x32M.google.maps.routeoptimization.v1.OptimizeToursValidationError.FieldReferenceB\x0e\n\x0cindex_or_key\"\xa3\x01\n\x0bInputConfig\x12\x41\n\ngcs_source\x18\x01 \x01(\x0b\x32+.google.maps.routeoptimization.v1.GcsSourceH\x00\x12G\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32,.google.maps.routeoptimization.v1.DataFormatB\x04\xe2\x41\x01\x02\x42\x08\n\x06source\"\xb3\x01\n\x0cOutputConfig\x12K\n\x0fgcs_destination\x18\x01 \x01(\x0b\x32\x30.google.maps.routeoptimization.v1.GcsDestinationH\x00\x12G\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32,.google.maps.routeoptimization.v1.DataFormatB\x04\xe2\x41\x01\x02\x42\r\n\x0b\x64\x65stination\"\x1e\n\tGcsSource\x12\x11\n\x03uri\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02\"#\n\x0eGcsDestination\x12\x11\n\x03uri\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02*C\n\nDataFormat\x12\x1b\n\x17\x44\x41TA_FORMAT_UNSPECIFIED\x10\x00\x12\x08\n\x04JSON\x10\x01\x12\x0e\n\nPROTO_TEXT\x10\x02\x32\xc1\t\n\x11RouteOptimization\x12\xea\x01\n\rOptimizeTours\x12\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x1a\x37.google.maps.routeoptimization.v1.OptimizeToursResponse\"h\x82\xd3\xe4\x93\x02\x62\"1/v1/{parent=projects/*/locations/*}:optimizeTours:\x01*Z*\"%/v1/{parent=projects/*}:optimizeTours:\x01*\x12\xa0\x02\n\x12\x42\x61tchOptimizeTours\x12;.google.maps.routeoptimization.v1.BatchOptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xad\x01\xca\x41\x38\n\x1a\x42\x61tchOptimizeToursResponse\x12\x1a\x42\x61tchOptimizeToursMetadata\x82\xd3\xe4\x93\x02l\"6/v1/{parent=projects/*/locations/*}:batchOptimizeTours:\x01*Z/\"*/v1/{parent=projects/*}:batchOptimizeTours:\x01*\x12\xae\x02\n\x18OptimizeToursLongRunning\x12\x36.google.maps.routeoptimization.v1.OptimizeToursRequest\x1a\x1d.google.longrunning.Operation\"\xba\x01\xca\x41\x39\n\x15OptimizeToursResponse\x12 OptimizeToursLongRunningMetadata\x82\xd3\xe4\x93\x02x\"</v1/{parent=projects/*/locations/*}:optimizeToursLongRunning:\x01*Z5\"0/v1/{parent=projects/*}:optimizeToursLongRunning:\x01*\x12\x94\x02\n\x10OptimizeToursUri\x12\x39.google.maps.routeoptimization.v1.OptimizeToursUriRequest\x1a\x1d.google.longrunning.Operation\"\xa5\x01\xca\x41\x34\n\x18OptimizeToursUriResponse\x12\x18OptimizeToursUriMetadata\x82\xd3\xe4\x93\x02h\"4/v1/{parent=projects/*/locations/*}:OptimizeToursUri:\x01*Z-\"(/v1/{parent=projects/*}:OptimizeToursUri:\x01*\x1aT\xca\x41 routeoptimization.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\x8d\x02\n$com.google.maps.routeoptimization.v1B\x1dRouteOptimizationServiceProtoP\x01ZXcloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb;routeoptimizationpb\xaa\x02 Google.Maps.RouteOptimization.V1\xca\x02 Google\\Maps\\RouteOptimization\\V1\xea\x02#Google::Maps::RouteOptimization::V1b\x06proto3"
|
|
17
17
|
|
|
18
18
|
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
19
19
|
pool.add_serialized_file(descriptor_data)
|
|
@@ -67,6 +67,7 @@ module Google
|
|
|
67
67
|
BreakRule::FrequencyConstraint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.BreakRule.FrequencyConstraint").msgclass
|
|
68
68
|
ShipmentRoute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute").msgclass
|
|
69
69
|
ShipmentRoute::Visit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute.Visit").msgclass
|
|
70
|
+
ShipmentRoute::Visit::VisitType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute.Visit.VisitType").enummodule
|
|
70
71
|
ShipmentRoute::Transition = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute.Transition").msgclass
|
|
71
72
|
ShipmentRoute::VehicleLoad = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute.VehicleLoad").msgclass
|
|
72
73
|
ShipmentRoute::EncodedPolyline = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.maps.routeoptimization.v1.ShipmentRoute.EncodedPolyline").msgclass
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
2
2
|
# Source: google/maps/routeoptimization/v1/route_optimization_service.proto for package 'Google.Maps.RouteOptimization.V1'
|
|
3
3
|
# Original file comments:
|
|
4
|
-
# Copyright
|
|
4
|
+
# Copyright 2026 Google LLC
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -105,10 +105,6 @@ module Google
|
|
|
105
105
|
# [OptimizeToursResponse][google.maps.routeoptimization.v1.OptimizeToursResponse],
|
|
106
106
|
# if successful.
|
|
107
107
|
#
|
|
108
|
-
# Experimental: See
|
|
109
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
110
|
-
# for more details.
|
|
111
|
-
#
|
|
112
108
|
rpc :OptimizeToursLongRunning, ::Google::Maps::RouteOptimization::V1::OptimizeToursRequest, ::Google::Longrunning::Operation
|
|
113
109
|
# This is a variant of the
|
|
114
110
|
# [OptimizeToursLongRunning][google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursLongRunning]
|
|
@@ -129,14 +125,10 @@ module Google
|
|
|
129
125
|
# `<parent>/operations/<operation_id>` and can be used to track
|
|
130
126
|
# progress of the computation. The
|
|
131
127
|
# [metadata][google.longrunning.Operation.metadata] field type is
|
|
132
|
-
# [
|
|
128
|
+
# [OptimizeToursUriMetadata][google.maps.routeoptimization.v1.OptimizeToursUriMetadata].
|
|
133
129
|
# The [response][google.longrunning.Operation.response] field type is
|
|
134
130
|
# [OptimizeToursUriResponse][google.maps.routeoptimization.v1.OptimizeToursUriResponse],
|
|
135
131
|
# if successful.
|
|
136
|
-
#
|
|
137
|
-
# Experimental: See
|
|
138
|
-
# https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
|
139
|
-
# for more details.
|
|
140
132
|
rpc :OptimizeToursUri, ::Google::Maps::RouteOptimization::V1::OptimizeToursUriRequest, ::Google::Longrunning::Operation
|
|
141
133
|
end
|
|
142
134
|
|
|
@@ -44,10 +44,11 @@ module Google
|
|
|
44
44
|
# Required. Target project or location to make a call.
|
|
45
45
|
#
|
|
46
46
|
# Format:
|
|
47
|
+
#
|
|
47
48
|
# * `projects/{project-id}`
|
|
48
|
-
# * `projects/{project-id}/locations
|
|
49
|
+
# * `projects/{project-id}/locations/-`
|
|
49
50
|
#
|
|
50
|
-
#
|
|
51
|
+
# Regional `{location-id}` values are not supported.
|
|
51
52
|
# @!attribute [rw] input
|
|
52
53
|
# @return [::Google::Maps::RouteOptimization::V1::Uri]
|
|
53
54
|
# Required. The URI of the Cloud Storage object containing the
|
|
@@ -93,10 +94,11 @@ module Google
|
|
|
93
94
|
# Required. Target project and location to make a call.
|
|
94
95
|
#
|
|
95
96
|
# Format:
|
|
97
|
+
#
|
|
96
98
|
# * `projects/{project-id}`
|
|
97
|
-
# * `projects/{project-id}/locations
|
|
99
|
+
# * `projects/{project-id}/locations/-`
|
|
98
100
|
#
|
|
99
|
-
#
|
|
101
|
+
# Regional `{location-id}` values are not supported.
|
|
100
102
|
# @!attribute [rw] model_configs
|
|
101
103
|
# @return [::Array<::Google::Maps::RouteOptimization::V1::BatchOptimizeToursRequest::AsyncModelConfig>]
|
|
102
104
|
# Required. Input/Output information each purchase model, such as file paths
|
|
@@ -148,10 +150,11 @@ module Google
|
|
|
148
150
|
# Required. Target project or location to make a call.
|
|
149
151
|
#
|
|
150
152
|
# Format:
|
|
153
|
+
#
|
|
151
154
|
# * `projects/{project-id}`
|
|
152
|
-
# * `projects/{project-id}/locations
|
|
155
|
+
# * `projects/{project-id}/locations/-`
|
|
153
156
|
#
|
|
154
|
-
#
|
|
157
|
+
# Regional `{location-id}` values are not supported.
|
|
155
158
|
# @!attribute [rw] timeout
|
|
156
159
|
# @return [::Google::Protobuf::Duration]
|
|
157
160
|
# If this timeout is set, the server returns a response before the timeout
|
|
@@ -451,7 +454,10 @@ module Google
|
|
|
451
454
|
# fields of the same name.
|
|
452
455
|
# @!attribute [rw] skipped_mandatory_shipment_count
|
|
453
456
|
# @return [::Integer]
|
|
454
|
-
# Number of
|
|
457
|
+
# Number of high priority shipments skipped.
|
|
458
|
+
# High priority shipments are those with an unset
|
|
459
|
+
# {::Google::Maps::RouteOptimization::V1::Shipment#penalty_cost Shipment.penalty_cost}
|
|
460
|
+
# field.
|
|
455
461
|
# @!attribute [rw] used_vehicle_count
|
|
456
462
|
# @return [::Integer]
|
|
457
463
|
# Number of vehicles used. Note: if a vehicle route is empty and
|
|
@@ -833,14 +839,14 @@ module Google
|
|
|
833
839
|
# considered as null.
|
|
834
840
|
# @!attribute [rw] penalty_cost
|
|
835
841
|
# @return [::Float]
|
|
836
|
-
# If the shipment is not completed, this penalty is added to the
|
|
837
|
-
# cost of the routes. A shipment is considered completed if one of
|
|
838
|
-
# and delivery alternatives is visited. The cost may be expressed
|
|
839
|
-
# same unit used for all other cost-related fields in the model and
|
|
840
|
-
#
|
|
841
|
-
#
|
|
842
|
-
# *IMPORTANT*: If this penalty is not specified, it is considered
|
|
843
|
-
#
|
|
842
|
+
# Optional. If the shipment is not completed, this penalty is added to the
|
|
843
|
+
# overall cost of the routes. A shipment is considered completed if one of
|
|
844
|
+
# its pickup and delivery alternatives is visited. The cost may be expressed
|
|
845
|
+
# in the same unit used for all other cost-related fields in the model and
|
|
846
|
+
# must be non-negative.
|
|
847
|
+
#
|
|
848
|
+
# *IMPORTANT*: If this penalty is not specified, it is considered higher
|
|
849
|
+
# priority than shipments with a specified `penalty cost`.
|
|
844
850
|
# @!attribute [rw] allowed_vehicle_indices
|
|
845
851
|
# @return [::Array<::Integer>]
|
|
846
852
|
# The set of vehicles that may perform this shipment. If empty, all vehicles
|
|
@@ -1094,6 +1100,7 @@ module Google
|
|
|
1094
1100
|
|
|
1095
1101
|
# In this mode, two shipments with incompatible types can never be on the
|
|
1096
1102
|
# same vehicle at the same time:
|
|
1103
|
+
#
|
|
1097
1104
|
# * They can share the same vehicle only if one is delivered before the
|
|
1098
1105
|
# other is picked up.
|
|
1099
1106
|
# * When both shipments are pickups-only (no deliveries) or deliveries-only
|
|
@@ -1574,12 +1581,14 @@ module Google
|
|
|
1574
1581
|
# makes the route incur a cost, quadratic in the duration. This cost adds
|
|
1575
1582
|
# up to other costs defined in the model, with the same unit.
|
|
1576
1583
|
#
|
|
1577
|
-
# If
|
|
1578
|
-
#
|
|
1579
|
-
# less than `max_duration`, and the difference must be no larger than one
|
|
1580
|
-
# day:
|
|
1584
|
+
# If `quadratic_soft_max_duration` is set, the following conditions must be
|
|
1585
|
+
# met:
|
|
1581
1586
|
#
|
|
1582
|
-
#
|
|
1587
|
+
# * It must be non-negative.
|
|
1588
|
+
# * `max_duration` must be defined.
|
|
1589
|
+
# * `quadratic_soft_max_duration` must be less than `max_duration`.
|
|
1590
|
+
# * The difference must be no more than one day:
|
|
1591
|
+
# `max_duration - quadratic_soft_max_duration <= 86400 seconds`
|
|
1583
1592
|
# @!attribute [rw] cost_per_square_hour_after_quadratic_soft_max
|
|
1584
1593
|
# @return [::Float]
|
|
1585
1594
|
# Cost per square hour incurred if the
|
|
@@ -1635,6 +1644,13 @@ module Google
|
|
|
1635
1644
|
|
|
1636
1645
|
# Travel mode corresponding to walking directions.
|
|
1637
1646
|
WALKING = 2
|
|
1647
|
+
|
|
1648
|
+
# Two-wheeled, motorized vehicle. For example, motorcycle. Note that this
|
|
1649
|
+
# differs from the BICYCLING travel mode which covers human-powered mode.
|
|
1650
|
+
# This travel mode is supported only in the countries listed at
|
|
1651
|
+
# [Countries and regions supported for two-wheeled
|
|
1652
|
+
# vehicles](https://developers.google.com/maps/documentation/routes/coverage-two-wheeled).
|
|
1653
|
+
TWO_WHEELER = 5
|
|
1638
1654
|
end
|
|
1639
1655
|
|
|
1640
1656
|
# Policy on how a vehicle can be unloaded. Applies only to shipments having
|
|
@@ -2201,6 +2217,12 @@ module Google
|
|
|
2201
2217
|
# Experimental: See
|
|
2202
2218
|
# https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request
|
|
2203
2219
|
# for more details.
|
|
2220
|
+
# @!attribute [rw] visit_type
|
|
2221
|
+
# @return [::Google::Maps::RouteOptimization::V1::ShipmentRoute::Visit::VisitType]
|
|
2222
|
+
# Optional. Specifies the type of the visit.
|
|
2223
|
+
# Overrides the
|
|
2224
|
+
# {::Google::Maps::RouteOptimization::V1::ShipmentRoute::Visit#is_pickup Visit.is_pickup}
|
|
2225
|
+
# field.
|
|
2204
2226
|
class Visit
|
|
2205
2227
|
include ::Google::Protobuf::MessageExts
|
|
2206
2228
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
|
@@ -2213,6 +2235,20 @@ module Google
|
|
|
2213
2235
|
include ::Google::Protobuf::MessageExts
|
|
2214
2236
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
|
2215
2237
|
end
|
|
2238
|
+
|
|
2239
|
+
# Indicates whether the visit is a pickup, a delivery, or a visit to a
|
|
2240
|
+
# [Stop][google.maps.routeoptimization.v1.Stop]. Visits to a stop are used
|
|
2241
|
+
# only when multimodal optimization is enabled.
|
|
2242
|
+
module VisitType
|
|
2243
|
+
# Unspecified visit type.
|
|
2244
|
+
VISIT_TYPE_UNSPECIFIED = 0
|
|
2245
|
+
|
|
2246
|
+
# Visit corresponds to a shipment pickup.
|
|
2247
|
+
PICKUP_SHIPMENT = 1
|
|
2248
|
+
|
|
2249
|
+
# Visit corresponds to a shipment delivery.
|
|
2250
|
+
DELIVER_SHIPMENT = 2
|
|
2251
|
+
end
|
|
2216
2252
|
end
|
|
2217
2253
|
|
|
2218
2254
|
# Transition between two events on the route. See the description of
|
|
@@ -2517,7 +2553,7 @@ module Google
|
|
|
2517
2553
|
|
|
2518
2554
|
# Aggregated metrics for
|
|
2519
2555
|
# {::Google::Maps::RouteOptimization::V1::ShipmentRoute ShipmentRoute} (resp. for
|
|
2520
|
-
# {::Google::Maps::RouteOptimization::V1::OptimizeToursResponse OptimizeToursResponse}
|
|
2556
|
+
# {::Google::Maps::RouteOptimization::V1::OptimizeToursResponse OptimizeToursResponse})
|
|
2521
2557
|
# over all
|
|
2522
2558
|
# {::Google::Maps::RouteOptimization::V1::ShipmentRoute::Transition Transition}
|
|
2523
2559
|
# and/or {::Google::Maps::RouteOptimization::V1::ShipmentRoute::Visit Visit} (resp.
|
|
@@ -2529,7 +2565,10 @@ module Google
|
|
|
2529
2565
|
# counts once.
|
|
2530
2566
|
# @!attribute [rw] performed_mandatory_shipment_count
|
|
2531
2567
|
# @return [::Integer]
|
|
2532
|
-
# Number of
|
|
2568
|
+
# Number of high priority shipments performed. High priority shipments are
|
|
2569
|
+
# those with an unset
|
|
2570
|
+
# {::Google::Maps::RouteOptimization::V1::Shipment#penalty_cost Shipment.penalty_cost}
|
|
2571
|
+
# field.
|
|
2533
2572
|
#
|
|
2534
2573
|
# Experimental: This field's behavior or existence may change in future.
|
|
2535
2574
|
# @!attribute [rw] performed_shipment_penalty_cost_sum
|