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;
+}
