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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd6fa7df5cb2573c2de0d993ad938defa87de483d00f46fca6363bb16ea83e52
4
- data.tar.gz: b83bffbf4f335ef511421b1b08f9cdcab059e1659a461eb741d756da08a7bba1
3
+ metadata.gz: b1525ba9074d3a3bed3570d767fb746e346528d033a7e0985466e75342005802
4
+ data.tar.gz: 384ee42b1aa97966629a99c3c7515d85d2347eaab33e117e6c8281dddd246d3b
5
5
  SHA512:
6
- metadata.gz: 4c8a650d14c5a114c32b01e9a280d6936cc0f73a04c01bdf18c93cccfaf6c8ae7a23ee1a74a9d1fbe17f71bfbb74bdcd2aaad9ea11d8e05cb2d78d887ae2f73e
7
- data.tar.gz: f18eaa92d7e58ec09fbc9f8ca3b788f495b975f840429213a5fddc8ca83e2ed657d7758a60c88d211c63a246f19c0fc4671b0bbecf554aef450df45423a5913b
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 that are actively supported
91
- by Ruby Core—that is, Ruby versions that are either in normal maintenance or
92
- in security maintenance, and not end of life. Older versions of Ruby _may_
93
- still work, but are unsupported and not recommended. See
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/{location-id}`
256
+ # * `projects/{project-id}/locations/-`
256
257
  #
257
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
543
+ # * `projects/{project-id}/locations/-`
542
544
  #
543
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
662
+ # * `projects/{project-id}/locations/-`
664
663
  #
665
- # If no location is specified, a region will be chosen automatically.
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 OptimizeToursLongRunningMetadata}.
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/{location-id}`
959
+ # * `projects/{project-id}/locations/-`
964
960
  #
965
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
249
+ # * `projects/{project-id}/locations/-`
249
250
  #
250
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
529
+ # * `projects/{project-id}/locations/-`
528
530
  #
529
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
641
+ # * `projects/{project-id}/locations/-`
643
642
  #
644
- # If no location is specified, a region will be chosen automatically.
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 OptimizeToursLongRunningMetadata}.
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/{location-id}`
931
+ # * `projects/{project-id}/locations/-`
936
932
  #
937
- # If no location is specified, a region will be chosen automatically.
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`.
@@ -21,7 +21,7 @@ module Google
21
21
  module Maps
22
22
  module RouteOptimization
23
23
  module V1
24
- VERSION = "0.2.0"
24
+ VERSION = "0.3.0"
25
25
  end
26
26
  end
27
27
  end
@@ -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 2025 Google LLC
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
- # [OptimizeToursLongRunningMetadata][google.maps.routeoptimization.v1.OptimizeToursUriMetadata].
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/{location-id}`
49
+ # * `projects/{project-id}/locations/-`
49
50
  #
50
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
99
+ # * `projects/{project-id}/locations/-`
98
100
  #
99
- # If no location is specified, a region will be chosen automatically.
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/{location-id}`
155
+ # * `projects/{project-id}/locations/-`
153
156
  #
154
- # If no location is specified, a region will be chosen automatically.
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 mandatory shipments skipped.
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 overall
837
- # cost of the routes. A shipment is considered completed if one of its pickup
838
- # and delivery alternatives is visited. The cost may be expressed in the
839
- # same unit used for all other cost-related fields in the model and must be
840
- # positive.
841
- #
842
- # *IMPORTANT*: If this penalty is not specified, it is considered infinite,
843
- # i.e. the shipment must be completed.
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 defined, `quadratic_soft_max_duration` must be nonnegative. If
1578
- # `max_duration` is also defined, `quadratic_soft_max_duration` must be
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
- # `max_duration - quadratic_soft_max_duration <= 86400 seconds`
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 mandatory shipments performed.
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-maps-route_optimization-v1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google LLC