xref: /aosp_15_r20/external/googleapis/google/maps/fleetengine/delivery/v1/common.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package maps.fleetengine.delivery.v1;
18
19import "google/api/field_behavior.proto";
20import "google/protobuf/timestamp.proto";
21import "google/protobuf/wrappers.proto";
22import "google/type/latlng.proto";
23
24option csharp_namespace = "Google.Maps.FleetEngine.Delivery.V1";
25option go_package = "cloud.google.com/go/maps/fleetengine/delivery/apiv1/deliverypb;deliverypb";
26option java_multiple_files = true;
27option java_outer_classname = "Common";
28option java_package = "google.maps.fleetengine.delivery.v1";
29option objc_class_prefix = "CFED";
30
31// Describes a vehicle attribute as a key-value pair. The "key:value" string
32// length cannot exceed 256 characters.
33message DeliveryVehicleAttribute {
34  // The attribute's key.
35  string key = 1;
36
37  // The attribute's value.
38  string value = 2;
39
40  // The attribute's value, can be in string, bool, or double type.
41  oneof delivery_vehicle_attribute_value {
42    // String typed attribute value.
43    //
44    // Note: This is identical to the `value` field which will eventually be
45    // deprecated. For create or update methods, either field can be used, but
46    // it's strongly recommended to use `string_value`. If both `string_value`
47    // and `value` are set, they must be identical or an error will be thrown.
48    // Both fields are populated in responses.
49    string string_value = 3;
50
51    // Boolean typed attribute value.
52    bool bool_value = 4;
53
54    // Double typed attribute value.
55    double number_value = 5;
56  }
57}
58
59// The location, speed, and heading of a vehicle at a point in time.
60message DeliveryVehicleLocation {
61  // The location of the vehicle.
62  // When it is sent to Fleet Engine, the vehicle's location is a GPS location.
63  // When you receive it in a response, the vehicle's location can be either a
64  // GPS location, a supplemental location, or some other estimated location.
65  // The source is specified in `location_sensor`.
66  google.type.LatLng location = 1;
67
68  // Deprecated: Use `latlng_accuracy` instead.
69  google.protobuf.DoubleValue horizontal_accuracy = 8 [deprecated = true];
70
71  // Accuracy of `location` in meters as a radius.
72  google.protobuf.DoubleValue latlng_accuracy = 22;
73
74  // Direction the vehicle is moving in degrees.  0 represents North.
75  // The valid range is [0,360).
76  google.protobuf.Int32Value heading = 2;
77
78  // Deprecated: Use `heading_accuracy` instead.
79  google.protobuf.DoubleValue bearing_accuracy = 10 [deprecated = true];
80
81  // Accuracy of `heading` in degrees.
82  google.protobuf.DoubleValue heading_accuracy = 23;
83
84  // Altitude in meters above WGS84.
85  google.protobuf.DoubleValue altitude = 5;
86
87  // Deprecated: Use `altitude_accuracy` instead.
88  google.protobuf.DoubleValue vertical_accuracy = 9 [deprecated = true];
89
90  // Accuracy of `altitude` in meters.
91  google.protobuf.DoubleValue altitude_accuracy = 24;
92
93  // Speed of the vehicle in kilometers per hour.
94  // Deprecated: Use `speed` instead.
95  google.protobuf.Int32Value speed_kmph = 3 [deprecated = true];
96
97  // Speed of the vehicle in meters/second
98  google.protobuf.DoubleValue speed = 6;
99
100  // Accuracy of `speed` in meters/second.
101  google.protobuf.DoubleValue speed_accuracy = 7;
102
103  // The time when `location` was reported by the sensor according to the
104  // sensor's clock.
105  google.protobuf.Timestamp update_time = 4;
106
107  // Output only. The time when the server received the location information.
108  google.protobuf.Timestamp server_time = 13
109      [(google.api.field_behavior) = OUTPUT_ONLY];
110
111  // Provider of location data (for example, `GPS`).
112  DeliveryVehicleLocationSensor location_sensor = 11;
113
114  // Whether `location` is snapped to a road.
115  google.protobuf.BoolValue is_road_snapped = 27;
116
117  // Input only. Indicates whether the GPS sensor is enabled on the mobile
118  // device.
119  google.protobuf.BoolValue is_gps_sensor_enabled = 12
120      [(google.api.field_behavior) = INPUT_ONLY];
121
122  // Input only. Time (in seconds) since this location was first sent to the
123  // server. This will be zero for the first update. If the time is unknown (for
124  // example, when the app restarts), this value resets to zero.
125  google.protobuf.Int32Value time_since_update = 14
126      [(google.api.field_behavior) = INPUT_ONLY];
127
128  // Input only. Deprecated: Other signals are now used to determine if a
129  // location is stale.
130  google.protobuf.Int32Value num_stale_updates = 15
131      [deprecated = true, (google.api.field_behavior) = INPUT_ONLY];
132
133  // Raw vehicle location (unprocessed by road-snapper).
134  google.type.LatLng raw_location = 16;
135
136  // Timestamp associated with the raw location.
137  google.protobuf.Timestamp raw_location_time = 17;
138
139  // Source of the raw location. Defaults to `GPS`.
140  DeliveryVehicleLocationSensor raw_location_sensor = 28;
141
142  // Accuracy of `raw_location` as a radius, in meters.
143  google.protobuf.DoubleValue raw_location_accuracy = 25;
144
145  // Supplemental location provided by the integrating app.
146  google.type.LatLng supplemental_location = 18;
147
148  // Timestamp associated with the supplemental location.
149  google.protobuf.Timestamp supplemental_location_time = 19;
150
151  // Source of the supplemental location. Defaults to
152  // `CUSTOMER_SUPPLIED_LOCATION`.
153  DeliveryVehicleLocationSensor supplemental_location_sensor = 20;
154
155  // Accuracy of `supplemental_location` as a radius, in meters.
156  google.protobuf.DoubleValue supplemental_location_accuracy = 21;
157
158  // Deprecated: Use `is_road_snapped` instead.
159  bool road_snapped = 26 [deprecated = true];
160}
161
162// The sensor or methodology used to determine the location.
163enum DeliveryVehicleLocationSensor {
164  // The sensor is unspecified or unknown.
165  UNKNOWN_SENSOR = 0;
166
167  // GPS or Assisted GPS.
168  GPS = 1;
169
170  // Assisted GPS, cell tower ID, or WiFi access point.
171  NETWORK = 2;
172
173  // Cell tower ID or WiFi access point.
174  PASSIVE = 3;
175
176  // A location determined by the mobile device to be the most likely
177  // road position.
178  ROAD_SNAPPED_LOCATION_PROVIDER = 4;
179
180  // A customer-supplied location from an independent source.  Typically, this
181  // value is used for a location provided from sources other than the mobile
182  // device running Driver SDK.  If the original source is described by one of
183  // the other enum values, use that value. Locations marked
184  // CUSTOMER_SUPPLIED_LOCATION are typically provided via a DeliveryVehicle's
185  // `last_location.supplemental_location_sensor`.
186  CUSTOMER_SUPPLIED_LOCATION = 5;
187
188  // A location calculated by Fleet Engine based on the signals available to it.
189  // Output only. This value will be rejected if it is received in a request.
190  FLEET_ENGINE_LOCATION = 6;
191
192  // Android's Fused Location Provider.
193  FUSED_LOCATION_PROVIDER = 100;
194
195  // The location provider on Apple operating systems.
196  CORE_LOCATION = 200;
197}
198
199// The vehicle's navigation status.
200enum DeliveryVehicleNavigationStatus {
201  // Unspecified navigation status.
202  UNKNOWN_NAVIGATION_STATUS = 0;
203
204  // The Driver app's navigation is in `FREE_NAV` mode.
205  NO_GUIDANCE = 1;
206
207  // Turn-by-turn navigation is available and the Driver app navigation has
208  // entered `GUIDED_NAV` mode.
209  ENROUTE_TO_DESTINATION = 2;
210
211  // The vehicle has gone off the suggested route.
212  OFF_ROUTE = 3;
213
214  // The vehicle is within approximately 50m of the destination.
215  ARRIVED_AT_DESTINATION = 4;
216}
217
218// A time range.
219message TimeWindow {
220  // Required. The start time of the time window (inclusive).
221  google.protobuf.Timestamp start_time = 1
222      [(google.api.field_behavior) = REQUIRED];
223
224  // Required. The end time of the time window (inclusive).
225  google.protobuf.Timestamp end_time = 2
226      [(google.api.field_behavior) = REQUIRED];
227}
228
229// Describes a task attribute as a key-value pair. The "key:value" string length
230// cannot exceed 256 characters.
231message TaskAttribute {
232  // The attribute's key. Keys may not contain the colon character (:).
233  string key = 1;
234
235  // The attribute's value, can be in string, bool, or double type. If none are
236  // set the TaskAttribute string_value will be stored as the empty string "".
237  oneof task_attribute_value {
238    // String typed attribute value.
239    string string_value = 2;
240
241    // Boolean typed attribute value.
242    bool bool_value = 3;
243
244    // Double typed attribute value.
245    double number_value = 4;
246  }
247}
248