Updating to use maven plugin and updating to latest versions Change-Id: I73f1c3dfca68f94a71654c85a46efd9c1e5385cb
diff --git a/order-redirect/java/pom.xml b/order-redirect/java/pom.xml index fdca852..d159c16 100644 --- a/order-redirect/java/pom.xml +++ b/order-redirect/java/pom.xml
@@ -9,10 +9,10 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>11.0</java.version> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <protobuf.version>3.22.0</protobuf.version> + <java.version>23.0</java.version> + <maven.compiler.source>23</maven.compiler.source> + <maven.compiler.target>23</maven.compiler.target> + <protobuf.version>4.29.3</protobuf.version> </properties> <dependencies> <dependency> @@ -63,6 +63,22 @@ </execution> </executions> </plugin> - </plugins> + <plugin> + <groupId>org.xolstice.maven.plugins</groupId> + <artifactId>protobuf-maven-plugin</artifactId> + <version>0.6.1</version> + <configuration> + <protocExecutable>protoc</protocExecutable> + </configuration> + <executions> + <execution> + <goals> + <goal>compile</goal> + <goal>test-compile</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> </build> -</project> \ No newline at end of file +</project>
diff --git a/order-redirect/java/src/main/proto/action.proto b/order-redirect/java/src/main/proto/action.proto new file mode 100644 index 0000000..9a8d50e --- /dev/null +++ b/order-redirect/java/src/main/proto/action.proto
@@ -0,0 +1,46 @@ + +// Feeds declaration +syntax = "proto3"; + +package madden.ingestion; + +option java_multiple_files = true; +option java_package = "com.google.madden.ingestion"; +option go_package = "google/madden/ingestion"; + +message ActionFeed { + repeated ActionDetail data = 1; +} + +message ActionDetail { + // Reference to entity id + optional string entity_id = 2; + optional string link_id = 3; + // Deep link for action detail + optional string url = 4; + repeated Action actions = 1; +} + +// Information about an Action which could be performed. +message Action { + // Deprecated fields not to be reused. + reserved 1; + oneof action_info { + FoodOrderingInfo food_ordering_info = 3; + } +} + +message AppointmentInfo { + // Deep link for appointment action. + string url = 1; +} + +message FoodOrderingInfo { + // Service type for food ordering action. + enum ServiceType { + UNKNOWN = 0; + DELIVERY = 1; + TAKEOUT = 2; + } + ServiceType service_type = 1; +}
diff --git a/order-redirect/java/src/main/proto/entity.proto b/order-redirect/java/src/main/proto/entity.proto new file mode 100644 index 0000000..451c639 --- /dev/null +++ b/order-redirect/java/src/main/proto/entity.proto
@@ -0,0 +1,71 @@ +// Feeds declaration +syntax = "proto3"; + +package madden.ingestion; + +option java_multiple_files = true; +option java_package = "com.google.madden.ingestion"; +option go_package = "google/madden/ingestion"; + +message EntityFeed { + repeated Entity data = 1; +} + +// +// Information about an Entity that is on the partner's platform. For example, +// an Entity could be a retail store, a hospital, an online business etc. +// +message Entity { + // An opaque string generated by the partner that identifies an Entity. + // Must be unique across all entities. + // Strongly recommended to only include URL-safe characters. (required) + string entity_id = 1; + + // If present, the name, telephone, url and location are used to support + // matching partner inventory with entities already present on Google. This + // information will not be displayed. + + // The name of the Entity. (required) + string name = 2; + + // The contact telephone number of the Entity including its country and area + // codes, e.g. +14567891234. Highly recommended. (optional) + string telephone = 3; + + // The url of the Entity's public website. Highly recommended. (optional) + string url = 4; + + // The location of the Entity (required) + madden.ingestion.GeoCoordinates location = 5; +} + +// The Geo data of a location, including latitude, longitude, and address. +// At least one of [lat/lng or address] should be provided (or both). +message GeoCoordinates { + double latitude = 1; // In degrees. (optional) + double longitude = 2; // In degrees. (optional) + + // Address for a location, could either be structured or unstructured. + oneof addresses { + // Postal address of the location, preferred. + PostalAddress address = 3; + // An unstructured address could also be provided as a fallback. + // E.g. "1600 amphitheatre parkway mountain view, ca 94043" + string unstructured_address = 4; + } +} + +// The postal address for a merchant. +message PostalAddress { + // The country, using ISO 3166-1 alpha-2 country code, e.g. "US" (required) + string country = 1; + // The locality/city, e.g. "Mountain View". (required) + string locality = 2; + // The region/state/province, e.g. "CA". This field is only required in + // countries where region is commonly a part of the address. (optional) + string region = 3; + // The postal code, e.g. "94043". (required) + string postal_code = 4; + // The street address, e.g. "1600 Amphitheatre Pkwy". (required) + string street_address = 5; +} \ No newline at end of file
diff --git a/order-redirect/java/src/main/proto/food-service.proto b/order-redirect/java/src/main/proto/food-service.proto new file mode 100644 index 0000000..e5151c9 --- /dev/null +++ b/order-redirect/java/src/main/proto/food-service.proto
@@ -0,0 +1,313 @@ + +// Feeds declaration +syntax = "proto3"; + +package food.ordering.service.v1; + +option go_package = "google/food/ordering/services/v1"; +option java_package = "com.google.food.ordering.services.v1"; +option java_multiple_files = true; + +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; +import "google/type/timeofday.proto"; +import "google/type/latlng.proto"; +import "google/type/money.proto"; +import "google/type/dayofweek.proto"; + +// Food Ordering Team's EPA Service Feeds Spec. +message FoodServiceFeed { + // Service feed entity data. + repeated ServiceData data = 1; +} + +// Service feed entity data. +message ServiceData { + oneof type { + FoodOrderingService service = 1; + ServiceHours service_hours = 2; + ServiceArea service_area = 3; + Fee fee = 4; + } +} + +message FoodOrderingService { + // Unique identifier of the provided service. + // Required. + string service_id = 1 + ; + enum ServiceType { + SERVICE_TYPE_UNKNOWN = 0; + DELIVERY = 1; + TAKEOUT = 2; + } + // The type of the service. + // Required and cannot be SERVICE_TYPE_UNKNOWN. + ServiceType service_type = 2 + ; + // The parent entity’s ID. + // Required. + string parent_entity_id = 3 + ; + // Indicates if the entity is disabled. + // Optional. + optional bool disabled = 4; + // The lead time given in the service entity will apply to all + // the service hours unless an overridden property is set in the + // service hours entity. + // Required. + ETA lead_time = 5 + ; + + // Parent action detail's link ID. + // Required. + string action_link_id = 6 + ; +} + +// Lead time range [min, max). At least one of min or max needs to be provided. +// In the case of only one field is given, the lead time is treated as a fixed +// value instead of a range. +message ETA { + // Indicates a range of ETA duration. + google.protobuf.Duration min_lead_time_duration = 1 + ; + google.protobuf.Duration max_lead_time_duration = 2 + ; +} + +// A closed-open time range. +message TimeOfDayRange { + // A Time indicating the beginning time of the day of the range (inclusive). + // Required. If not given, we assume 00:00:00. + google.type.TimeOfDay open_time = 1; + // A Time indicating the ending time of the day of the range (exclusive). + // Required. If not given, we assume 23:59:59. + google.type.TimeOfDay close_time = 2; +} + +// A closed-open duration range. +message DurationInterval { + // The minimum duration (inclusive). + // Required. + google.protobuf.Duration min_offset = 1 + ; + // The maximum duration (exclusive). + // Required. + google.protobuf.Duration max_offset = 2 + ; +} + +// A closed-open timestamp range. +message ValidityRange { + // The beginning time of the range (inclusive). + // Optional. + google.protobuf.Timestamp valid_from_time = 1 + ; + // The ending time of the range (exclusive). + // Optional. + google.protobuf.Timestamp valid_through_time = 2 + ; +} + +// The TimeWindow object is a composite entity that describes a list +// of windows the user's order can be either placed or fulfilled. +message TimeOfDayWindow { + // The time window the order can be placed/fulfilled. + // Required. + TimeOfDayRange time_windows = 1 + ; + // The list of days in a week the windows are applied. + // Required. If not given, we assume 7 days a week. + repeated google.type.DayOfWeek day_of_week = 2 + ; +} + +message AsapTimeWindow { + // A time window the ASAP order can be placed and fulfilled. + // Required. + TimeOfDayWindow time_windows = 1 + ; + + // Indicates the lead time, specific to service_time, the service can + // be fulfilled. + // Optional. + ETA lead_time = 2; +} + +// The fulfillment time window for advance orders. +message AdvanceTimeWindow { + // A time window the advance order can be fulfilled. + // Required. + TimeOfDayWindow time_windows = 1 + ; + // a window that an advance order can be placed. For example, an advance + // order must be placed at least 60 minutes ahead and not exceeding 2 + // days, the interval would be [PT60M, P2D). + // Optional. + DurationInterval advance_booking_interval = 2; +} + +// Service hours entity for ASAP/Advance orders. +message ServiceHours { + // Unique identifier of the provided advance service hours. + // Required. + string hours_id = 1 + ; + + // The unique identifier of the Service entity correlated to this ServiceHours + // entity. + // Required. + repeated string service_ids = 2 + ; + // The hours the orders can be fulfilled. For ASAP services, this is also + // orderable time. + // One of the fields (asap_hours/advance_hours) is required to be set. + repeated AsapTimeWindow asap_hours = 3 + ; + repeated AdvanceTimeWindow advance_hours = 4; + + // When advance ordering services, this is the time windows the orders can be + // placed. + // Required when advance_hour is given. Invalid when asap_hour is given. + repeated TimeOfDayWindow orderable_time = 5 + ; + + // Indicates if the service hours are for special occasions + // (e.g. Thanksgiving/...) + // Optional + optional bool special_hour = 6; + // A timestamp window indicating the validity of the special hours. + // Optional. Required if it's special hours. + ValidityRange validity_range = 7 + ; +} + +// Geographical circular area described by a point and radius. +message GeoCircle { + // Geographical center of the area. + // Required. + google.type.LatLng center = + 1 + ; + + // Radius for the circular area, in meters. Must be greater than 0. + // Required. + double radius = 2 + ; +} + +// Geolocation of interests. +message Locality { + string country_code = 1 + ; + + // Postal code in the country's local format in string. + string postal_code = + 2 + ; +} + +// Represents a loop of geo coordinates. This should be a valid S2Loop. +message Loop { + // Points making the boundary of loop. + repeated google.type.LatLng point = + 1 + ; +} + +// Represents a polygon shaped region. +message Polygon { + reserved 1; + + // List of S2Loops which defines a polygon. A point is considered in the + // polygon if it is contained in odd number of loops. + repeated Loop loops = 2 + ; +} + +message ServiceArea { + // Unique identifier. + // Required. + string area_id = 1 + ; + // Identifier to the parent service entity. + // Required. + repeated string service_ids = 2 + ; + // One of the following needs to be provided to define the service area. + // Required. + oneof region { + + GeoCircle circle = 3; + Locality locality = 4; + Polygon polygon = 5; + } + + // Sets to true if the assigned area is excluded from serving. + // Optional. + optional bool excluded_area = 6; +} + +// Wrapper for a range of monetary amount that could be bounded or unbounded. +// At least one of min_amount or max_amount is required. +message MoneyRange { + // Minimum amount. + google.type.Money min_amount = 1 + ; + // Maximum amount. + google.type.Money max_amount = 2 + ; +} + +// Variable fee which changes based on the price of the order. +message PercentageBasedFee { + // Optional, base fee not including the variable percentage based fee. + google.type.Money base_value = 1 + ; + + // Optional, overall range of possible values of the PercentageBasedFee. + optional MoneyRange range = 2; + + // Optional, percentage representing an additional variable fee based on + // the cart subtotal. E.g. 15.0 represents a fee of 15% of the cart. + optional double percentage_of_cart_value = 3 + ; +} + +message Fee { + // Unique identifier to the Fee entity. + // Required. + string fee_id = 1 + ; + enum FeeType { + FEE_TYPE_UNKNOWN = 0; + DELIVERY = 1; + SERVICE = 2; + } + // Indicates the nature of the service, e.g. delivery fee/service fee. + // Required. + FeeType fee_type = 2 + ; + + oneof amount { + + // A fixed amount of fees to be collected. + google.type.Money fixed_amount = 3; + // A range of fees that could be collected. Will mirror + // madden.ingestion.MoneyRange for the starting point. + MoneyRange range_amount = 4; + // Fees in terms of amount percentage. Will mirror + // madden.ingestion.QuantitativeValue for the starter. + PercentageBasedFee cart_percentage = 5; + } + // Service association needs to be provided. + // Required. + repeated string service_ids = 6 + ; + // Service area can be provided to further restrict eligibility of the + // fee. + // Optional. + repeated string area_ids = 7 + ; +}
diff --git a/order-redirect/java/src/main/proto/google/protobuf/duration.proto b/order-redirect/java/src/main/proto/google/protobuf/duration.proto new file mode 100644 index 0000000..41f40c2 --- /dev/null +++ b/order-redirect/java/src/main/proto/google/protobuf/duration.proto
@@ -0,0 +1,115 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/protobuf/types/known/durationpb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DurationProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; + +// A Duration represents a signed, fixed-length span of time represented +// as a count of seconds and fractions of seconds at nanosecond +// resolution. It is independent of any calendar and concepts like "day" +// or "month". It is related to Timestamp in that the difference between +// two Timestamp values is a Duration and it can be added or subtracted +// from a Timestamp. Range is approximately +-10,000 years. +// +// # Examples +// +// Example 1: Compute Duration from two Timestamps in pseudo code. +// +// Timestamp start = ...; +// Timestamp end = ...; +// Duration duration = ...; +// +// duration.seconds = end.seconds - start.seconds; +// duration.nanos = end.nanos - start.nanos; +// +// if (duration.seconds < 0 && duration.nanos > 0) { +// duration.seconds += 1; +// duration.nanos -= 1000000000; +// } else if (duration.seconds > 0 && duration.nanos < 0) { +// duration.seconds -= 1; +// duration.nanos += 1000000000; +// } +// +// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +// +// Timestamp start = ...; +// Duration duration = ...; +// Timestamp end = ...; +// +// end.seconds = start.seconds + duration.seconds; +// end.nanos = start.nanos + duration.nanos; +// +// if (end.nanos < 0) { +// end.seconds -= 1; +// end.nanos += 1000000000; +// } else if (end.nanos >= 1000000000) { +// end.seconds += 1; +// end.nanos -= 1000000000; +// } +// +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// +// # JSON Mapping +// +// In JSON format, the Duration type is encoded as a string rather than an +// object, where the string ends in the suffix "s" (indicating seconds) and +// is preceded by the number of seconds, with nanoseconds expressed as +// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +// microsecond should be expressed in JSON format as "3.000001s". +// +message Duration { + // Signed seconds of the span of time. Must be from -315,576,000,000 + // to +315,576,000,000 inclusive. Note: these bounds are computed from: + // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + int64 seconds = 1; + + // Signed fractions of a second at nanosecond resolution of the span + // of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For durations + // of one second or more, a non-zero value for the `nanos` field must be + // of the same sign as the `seconds` field. Must be from -999,999,999 + // to +999,999,999 inclusive. + int32 nanos = 2; +}
diff --git a/order-redirect/java/src/main/proto/google/protobuf/timestamp.proto b/order-redirect/java/src/main/proto/google/protobuf/timestamp.proto new file mode 100644 index 0000000..fd0bc07 --- /dev/null +++ b/order-redirect/java/src/main/proto/google/protobuf/timestamp.proto
@@ -0,0 +1,144 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/protobuf/types/known/timestamppb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; + +// A Timestamp represents a point in time independent of any time zone or local +// calendar, encoded as a count of seconds and fractions of seconds at +// nanosecond resolution. The count is relative to an epoch at UTC midnight on +// January 1, 1970, in the proleptic Gregorian calendar which extends the +// Gregorian calendar backwards to year one. +// +// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +// second table is needed for interpretation, using a [24-hour linear +// smear](https://developers.google.com/time/smear). +// +// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +// restricting to that range, we ensure that we can convert to and from [RFC +// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// Example 5: Compute Timestamp from Java `Instant.now()`. +// +// Instant now = Instant.now(); +// +// Timestamp timestamp = +// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) +// .setNanos(now.getNano()).build(); +// +// Example 6: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard +// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using +// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() +// ) to obtain a formatter capable of generating timestamps in this format. +// +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +}
diff --git a/order-redirect/java/src/main/proto/google/type/dayofweek.proto b/order-redirect/java/src/main/proto/google/type/dayofweek.proto new file mode 100644 index 0000000..4c80c62 --- /dev/null +++ b/order-redirect/java/src/main/proto/google/type/dayofweek.proto
@@ -0,0 +1,50 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/dayofweek;dayofweek"; +option java_multiple_files = true; +option java_outer_classname = "DayOfWeekProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents a day of the week. +enum DayOfWeek { + // The day of the week is unspecified. + DAY_OF_WEEK_UNSPECIFIED = 0; + + // Monday + MONDAY = 1; + + // Tuesday + TUESDAY = 2; + + // Wednesday + WEDNESDAY = 3; + + // Thursday + THURSDAY = 4; + + // Friday + FRIDAY = 5; + + // Saturday + SATURDAY = 6; + + // Sunday + SUNDAY = 7; +}
diff --git a/order-redirect/java/src/main/proto/google/type/latlng.proto b/order-redirect/java/src/main/proto/google/type/latlng.proto new file mode 100644 index 0000000..9231456 --- /dev/null +++ b/order-redirect/java/src/main/proto/google/type/latlng.proto
@@ -0,0 +1,37 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/latlng;latlng"; +option java_multiple_files = true; +option java_outer_classname = "LatLngProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// An object that represents a latitude/longitude pair. This is expressed as a +// pair of doubles to represent degrees latitude and degrees longitude. Unless +// specified otherwise, this must conform to the +// <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84 +// standard</a>. Values must be within normalized ranges. +message LatLng { + // The latitude in degrees. It must be in the range [-90.0, +90.0]. + double latitude = 1; + + // The longitude in degrees. It must be in the range [-180.0, +180.0]. + double longitude = 2; +}
diff --git a/order-redirect/java/src/main/proto/google/type/money.proto b/order-redirect/java/src/main/proto/google/type/money.proto new file mode 100644 index 0000000..98d6494 --- /dev/null +++ b/order-redirect/java/src/main/proto/google/type/money.proto
@@ -0,0 +1,42 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/money;money"; +option java_multiple_files = true; +option java_outer_classname = "MoneyProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents an amount of money with its currency type. +message Money { + // The three-letter currency code defined in ISO 4217. + string currency_code = 1; + + // The whole units of the amount. + // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. + int64 units = 2; + + // Number of nano (10^-9) units of the amount. + // The value must be between -999,999,999 and +999,999,999 inclusive. + // If `units` is positive, `nanos` must be positive or zero. + // If `units` is zero, `nanos` can be positive, zero, or negative. + // If `units` is negative, `nanos` must be negative or zero. + // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. + int32 nanos = 3; +}
diff --git a/order-redirect/java/src/main/proto/google/type/timeofday.proto b/order-redirect/java/src/main/proto/google/type/timeofday.proto new file mode 100644 index 0000000..5cb48aa --- /dev/null +++ b/order-redirect/java/src/main/proto/google/type/timeofday.proto
@@ -0,0 +1,44 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/timeofday;timeofday"; +option java_multiple_files = true; +option java_outer_classname = "TimeOfDayProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + +// Represents a time of day. The date and time zone are either not significant +// or are specified elsewhere. An API may choose to allow leap seconds. Related +// types are [google.type.Date][google.type.Date] and +// `google.protobuf.Timestamp`. +message TimeOfDay { + // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose + // to allow the value "24:00:00" for scenarios like business closing time. + int32 hours = 1; + + // Minutes of hour of day. Must be from 0 to 59. + int32 minutes = 2; + + // Seconds of minutes of the time. Must normally be from 0 to 59. An API may + // allow the value 60 if it allows leap-seconds. + int32 seconds = 3; + + // Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. + int32 nanos = 4; +}