, Void> settingsUpdater) {
+ super.applyToAllUnaryMethods(
+ getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater);
+ return this;
+ }
+
+ /** Returns the builder for the settings used for calls to manageLoyaltyCustomerMatch. */
+ public UnaryCallSettings.Builder<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchSettings() {
+ return getStubSettingsBuilder().manageLoyaltyCustomerMatchSettings();
+ }
+
+ @Override
+ public LoyaltyCustomerMatchServiceSettings build() throws IOException {
+ return new LoyaltyCustomerMatchServiceSettings(this);
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/gapic_metadata.json b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/gapic_metadata.json
new file mode 100644
index 000000000000..9e48719b682f
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/gapic_metadata.json
@@ -0,0 +1,21 @@
+{
+ "schema": "1.0",
+ "comment": "This file maps proto services/RPCs to the corresponding library clients/methods",
+ "language": "java",
+ "protoPackage": "google.shopping.merchant.loyaltycustomers.v1",
+ "libraryPackage": "com.google.shopping.merchant.loyaltycustomers.v1",
+ "services": {
+ "LoyaltyCustomerMatchService": {
+ "clients": {
+ "grpc": {
+ "libraryClient": "LoyaltyCustomerMatchServiceClient",
+ "rpcs": {
+ "ManageLoyaltyCustomerMatch": {
+ "methods": ["manageLoyaltyCustomerMatch", "manageLoyaltyCustomerMatchCallable"]
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/package-info.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/package-info.java
new file mode 100644
index 000000000000..87a11fd4a605
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/package-info.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+/**
+ * A client to Merchant API
+ *
+ * The interfaces provided are listed below, along with usage samples.
+ *
+ *
======================= LoyaltyCustomerMatchServiceClient =======================
+ *
+ *
Service Description: Manages customer loyalty program memberships for merchants.
+ *
+ *
This service allows all merchants, including non-advertisers, to share their first-party
+ * customer data of loyalty program members. Google uses this data to personalize organic free
+ * listing shopping experiences, in compliance with the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ *
+ *
The service follows a non-standard, imperative pattern, exposing a single
+ * `ManageLoyaltyCustomerMatch` method rather than conventional resource identifiers and CRUD
+ * operations. This design protects user privacy by preventing the discovery of a customer's
+ * presence or membership status through standard GET or LIST methods.
+ *
+ *
Sample for LoyaltyCustomerMatchServiceClient:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ * LoyaltyCustomerMatchServiceClient.create()) {
+ * ManageLoyaltyCustomerMatchRequest request =
+ * ManageLoyaltyCustomerMatchRequest.newBuilder()
+ * .setParent(AccountName.of("[ACCOUNT]").toString())
+ * .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ * .build();
+ * ManageLoyaltyCustomerMatchResponse response =
+ * loyaltyCustomerMatchServiceClient.manageLoyaltyCustomerMatch(request);
+ * }
+ * }
+ */
+@Generated("by gapic-generator-java")
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import javax.annotation.Generated;
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceCallableFactory.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceCallableFactory.java
new file mode 100644
index 000000000000..9471119be199
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceCallableFactory.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.gax.grpc.GrpcCallSettings;
+import com.google.api.gax.grpc.GrpcCallableFactory;
+import com.google.api.gax.grpc.GrpcStubCallableFactory;
+import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.BidiStreamingCallable;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.ClientStreamingCallable;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
+import com.google.api.gax.rpc.PagedCallSettings;
+import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+import com.google.api.gax.rpc.StreamingCallSettings;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.longrunning.Operation;
+import com.google.longrunning.stub.OperationsStub;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * gRPC callable factory implementation for the LoyaltyCustomerMatchService service API.
+ *
+ * This class is for advanced usage.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+public class GrpcLoyaltyCustomerMatchServiceCallableFactory implements GrpcStubCallableFactory {
+
+ @Override
+ public UnaryCallable createUnaryCallable(
+ GrpcCallSettings grpcCallSettings,
+ UnaryCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createUnaryCallable(grpcCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ UnaryCallable createPagedCallable(
+ GrpcCallSettings grpcCallSettings,
+ PagedCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createPagedCallable(grpcCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public UnaryCallable createBatchingCallable(
+ GrpcCallSettings grpcCallSettings,
+ BatchingCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createBatchingCallable(
+ grpcCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ OperationCallable createOperationCallable(
+ GrpcCallSettings grpcCallSettings,
+ OperationCallSettings callSettings,
+ ClientContext clientContext,
+ OperationsStub operationsStub) {
+ return GrpcCallableFactory.createOperationCallable(
+ grpcCallSettings, callSettings, clientContext, operationsStub);
+ }
+
+ @Override
+ public
+ BidiStreamingCallable createBidiStreamingCallable(
+ GrpcCallSettings grpcCallSettings,
+ StreamingCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createBidiStreamingCallable(
+ grpcCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ ServerStreamingCallable createServerStreamingCallable(
+ GrpcCallSettings grpcCallSettings,
+ ServerStreamingCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createServerStreamingCallable(
+ grpcCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ ClientStreamingCallable createClientStreamingCallable(
+ GrpcCallSettings grpcCallSettings,
+ StreamingCallSettings callSettings,
+ ClientContext clientContext) {
+ return GrpcCallableFactory.createClientStreamingCallable(
+ grpcCallSettings, callSettings, clientContext);
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceStub.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceStub.java
new file mode 100644
index 000000000000..dc92153fe685
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/GrpcLoyaltyCustomerMatchServiceStub.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.core.BackgroundResourceAggregation;
+import com.google.api.gax.grpc.GrpcCallSettings;
+import com.google.api.gax.grpc.GrpcStubCallableFactory;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.RequestParamsBuilder;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.longrunning.stub.GrpcOperationsStub;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+import io.grpc.MethodDescriptor;
+import io.grpc.protobuf.ProtoUtils;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * gRPC stub implementation for the LoyaltyCustomerMatchService service API.
+ *
+ * This class is for advanced usage and reflects the underlying API directly.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+public class GrpcLoyaltyCustomerMatchServiceStub extends LoyaltyCustomerMatchServiceStub {
+ private static final MethodDescriptor<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchMethodDescriptor =
+ MethodDescriptor
+ .newBuilder()
+ .setType(MethodDescriptor.MethodType.UNARY)
+ .setFullMethodName(
+ "google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchService/ManageLoyaltyCustomerMatch")
+ .setRequestMarshaller(
+ ProtoUtils.marshaller(ManageLoyaltyCustomerMatchRequest.getDefaultInstance()))
+ .setResponseMarshaller(
+ ProtoUtils.marshaller(ManageLoyaltyCustomerMatchResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
+ .build();
+
+ private final UnaryCallable
+ manageLoyaltyCustomerMatchCallable;
+
+ private final BackgroundResource backgroundResources;
+ private final GrpcOperationsStub operationsStub;
+ private final GrpcStubCallableFactory callableFactory;
+
+ public static final GrpcLoyaltyCustomerMatchServiceStub create(
+ LoyaltyCustomerMatchServiceStubSettings settings) throws IOException {
+ return new GrpcLoyaltyCustomerMatchServiceStub(settings, ClientContext.create(settings));
+ }
+
+ public static final GrpcLoyaltyCustomerMatchServiceStub create(ClientContext clientContext)
+ throws IOException {
+ return new GrpcLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings.newBuilder().build(), clientContext);
+ }
+
+ public static final GrpcLoyaltyCustomerMatchServiceStub create(
+ ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException {
+ return new GrpcLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings.newBuilder().build(),
+ clientContext,
+ callableFactory);
+ }
+
+ /**
+ * Constructs an instance of GrpcLoyaltyCustomerMatchServiceStub, using the given settings. This
+ * is protected so that it is easy to make a subclass, but otherwise, the static factory methods
+ * should be preferred.
+ */
+ protected GrpcLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings settings, ClientContext clientContext)
+ throws IOException {
+ this(settings, clientContext, new GrpcLoyaltyCustomerMatchServiceCallableFactory());
+ }
+
+ /**
+ * Constructs an instance of GrpcLoyaltyCustomerMatchServiceStub, using the given settings. This
+ * is protected so that it is easy to make a subclass, but otherwise, the static factory methods
+ * should be preferred.
+ */
+ protected GrpcLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings settings,
+ ClientContext clientContext,
+ GrpcStubCallableFactory callableFactory)
+ throws IOException {
+ this.callableFactory = callableFactory;
+ this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory);
+
+ GrpcCallSettings
+ manageLoyaltyCustomerMatchTransportSettings =
+ GrpcCallSettings
+ .newBuilder()
+ .setMethodDescriptor(manageLoyaltyCustomerMatchMethodDescriptor)
+ .setParamsExtractor(
+ request -> {
+ RequestParamsBuilder builder = RequestParamsBuilder.create();
+ builder.add("parent", String.valueOf(request.getParent()));
+ return builder.build();
+ })
+ .setResourceNameExtractor(request -> request.getParent())
+ .build();
+
+ this.manageLoyaltyCustomerMatchCallable =
+ callableFactory.createUnaryCallable(
+ manageLoyaltyCustomerMatchTransportSettings,
+ settings.manageLoyaltyCustomerMatchSettings(),
+ clientContext);
+
+ this.backgroundResources =
+ new BackgroundResourceAggregation(clientContext.getBackgroundResources());
+ }
+
+ public GrpcOperationsStub getOperationsStub() {
+ return operationsStub;
+ }
+
+ @Override
+ public UnaryCallable
+ manageLoyaltyCustomerMatchCallable() {
+ return manageLoyaltyCustomerMatchCallable;
+ }
+
+ @Override
+ public final void close() {
+ try {
+ backgroundResources.close();
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to close resource", e);
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ backgroundResources.shutdown();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return backgroundResources.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return backgroundResources.isTerminated();
+ }
+
+ @Override
+ public void shutdownNow() {
+ backgroundResources.shutdownNow();
+ }
+
+ @Override
+ public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
+ return backgroundResources.awaitTermination(duration, unit);
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceCallableFactory.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceCallableFactory.java
new file mode 100644
index 000000000000..f0f1def9b760
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceCallableFactory.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.gax.httpjson.HttpJsonCallSettings;
+import com.google.api.gax.httpjson.HttpJsonCallableFactory;
+import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable;
+import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.httpjson.longrunning.stub.OperationsStub;
+import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
+import com.google.api.gax.rpc.PagedCallSettings;
+import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.longrunning.Operation;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * REST callable factory implementation for the LoyaltyCustomerMatchService service API.
+ *
+ * This class is for advanced usage.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+public class HttpJsonLoyaltyCustomerMatchServiceCallableFactory
+ implements HttpJsonStubCallableFactory {
+
+ @Override
+ public UnaryCallable createUnaryCallable(
+ HttpJsonCallSettings httpJsonCallSettings,
+ UnaryCallSettings callSettings,
+ ClientContext clientContext) {
+ return HttpJsonCallableFactory.createUnaryCallable(
+ httpJsonCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ UnaryCallable createPagedCallable(
+ HttpJsonCallSettings httpJsonCallSettings,
+ PagedCallSettings callSettings,
+ ClientContext clientContext) {
+ return HttpJsonCallableFactory.createPagedCallable(
+ httpJsonCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public UnaryCallable createBatchingCallable(
+ HttpJsonCallSettings httpJsonCallSettings,
+ BatchingCallSettings callSettings,
+ ClientContext clientContext) {
+ return HttpJsonCallableFactory.createBatchingCallable(
+ httpJsonCallSettings, callSettings, clientContext);
+ }
+
+ @Override
+ public
+ OperationCallable createOperationCallable(
+ HttpJsonCallSettings httpJsonCallSettings,
+ OperationCallSettings callSettings,
+ ClientContext clientContext,
+ OperationsStub operationsStub) {
+ UnaryCallable innerCallable =
+ HttpJsonCallableFactory.createBaseUnaryCallable(
+ httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext);
+ HttpJsonOperationSnapshotCallable initialCallable =
+ new HttpJsonOperationSnapshotCallable(
+ innerCallable,
+ httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory());
+ return HttpJsonCallableFactory.createOperationCallable(
+ callSettings, clientContext, operationsStub.longRunningClient(), initialCallable);
+ }
+
+ @Override
+ public
+ ServerStreamingCallable createServerStreamingCallable(
+ HttpJsonCallSettings httpJsonCallSettings,
+ ServerStreamingCallSettings callSettings,
+ ClientContext clientContext) {
+ return HttpJsonCallableFactory.createServerStreamingCallable(
+ httpJsonCallSettings, callSettings, clientContext);
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceStub.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceStub.java
new file mode 100644
index 000000000000..e88ca6002238
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/HttpJsonLoyaltyCustomerMatchServiceStub.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.core.InternalApi;
+import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.core.BackgroundResourceAggregation;
+import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.HttpJsonCallSettings;
+import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
+import com.google.api.gax.httpjson.ProtoMessageResponseParser;
+import com.google.api.gax.httpjson.ProtoRestSerializer;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.RequestParamsBuilder;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.protobuf.TypeRegistry;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * REST stub implementation for the LoyaltyCustomerMatchService service API.
+ *
+ * This class is for advanced usage and reflects the underlying API directly.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+public class HttpJsonLoyaltyCustomerMatchServiceStub extends LoyaltyCustomerMatchServiceStub {
+ private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build();
+
+ private static final ApiMethodDescriptor<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchMethodDescriptor =
+ ApiMethodDescriptor
+ .newBuilder()
+ .setFullMethodName(
+ "google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchService/ManageLoyaltyCustomerMatch")
+ .setHttpMethod("POST")
+ .setType(ApiMethodDescriptor.MethodType.UNARY)
+ .setRequestFormatter(
+ ProtoMessageRequestFormatter.newBuilder()
+ .setPath(
+ "/loyaltyCustomers/v1/{parent=accounts/*}/loyaltyCustomers:manage",
+ request -> {
+ Map fields = new HashMap<>();
+ ProtoRestSerializer serializer =
+ ProtoRestSerializer.create();
+ serializer.putPathParam(fields, "parent", request.getParent());
+ return fields;
+ })
+ .setQueryParamsExtractor(
+ request -> {
+ Map> fields = new HashMap<>();
+ ProtoRestSerializer serializer =
+ ProtoRestSerializer.create();
+ serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int");
+ return fields;
+ })
+ .setRequestBodyExtractor(
+ request ->
+ ProtoRestSerializer.create()
+ .toBody("*", request.toBuilder().clearParent().build(), true))
+ .build())
+ .setResponseParser(
+ ProtoMessageResponseParser.newBuilder()
+ .setDefaultInstance(ManageLoyaltyCustomerMatchResponse.getDefaultInstance())
+ .setDefaultTypeRegistry(typeRegistry)
+ .build())
+ .build();
+
+ private final UnaryCallable
+ manageLoyaltyCustomerMatchCallable;
+
+ private final BackgroundResource backgroundResources;
+ private final HttpJsonStubCallableFactory callableFactory;
+
+ public static final HttpJsonLoyaltyCustomerMatchServiceStub create(
+ LoyaltyCustomerMatchServiceStubSettings settings) throws IOException {
+ return new HttpJsonLoyaltyCustomerMatchServiceStub(settings, ClientContext.create(settings));
+ }
+
+ public static final HttpJsonLoyaltyCustomerMatchServiceStub create(ClientContext clientContext)
+ throws IOException {
+ return new HttpJsonLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings.newHttpJsonBuilder().build(), clientContext);
+ }
+
+ public static final HttpJsonLoyaltyCustomerMatchServiceStub create(
+ ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
+ return new HttpJsonLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings.newHttpJsonBuilder().build(),
+ clientContext,
+ callableFactory);
+ }
+
+ /**
+ * Constructs an instance of HttpJsonLoyaltyCustomerMatchServiceStub, using the given settings.
+ * This is protected so that it is easy to make a subclass, but otherwise, the static factory
+ * methods should be preferred.
+ */
+ protected HttpJsonLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings settings, ClientContext clientContext)
+ throws IOException {
+ this(settings, clientContext, new HttpJsonLoyaltyCustomerMatchServiceCallableFactory());
+ }
+
+ /**
+ * Constructs an instance of HttpJsonLoyaltyCustomerMatchServiceStub, using the given settings.
+ * This is protected so that it is easy to make a subclass, but otherwise, the static factory
+ * methods should be preferred.
+ */
+ protected HttpJsonLoyaltyCustomerMatchServiceStub(
+ LoyaltyCustomerMatchServiceStubSettings settings,
+ ClientContext clientContext,
+ HttpJsonStubCallableFactory callableFactory)
+ throws IOException {
+ this.callableFactory = callableFactory;
+
+ HttpJsonCallSettings
+ manageLoyaltyCustomerMatchTransportSettings =
+ HttpJsonCallSettings
+ .newBuilder()
+ .setMethodDescriptor(manageLoyaltyCustomerMatchMethodDescriptor)
+ .setTypeRegistry(typeRegistry)
+ .setParamsExtractor(
+ request -> {
+ RequestParamsBuilder builder = RequestParamsBuilder.create();
+ builder.add("parent", String.valueOf(request.getParent()));
+ return builder.build();
+ })
+ .setResourceNameExtractor(request -> request.getParent())
+ .build();
+
+ this.manageLoyaltyCustomerMatchCallable =
+ callableFactory.createUnaryCallable(
+ manageLoyaltyCustomerMatchTransportSettings,
+ settings.manageLoyaltyCustomerMatchSettings(),
+ clientContext);
+
+ this.backgroundResources =
+ new BackgroundResourceAggregation(clientContext.getBackgroundResources());
+ }
+
+ @InternalApi
+ public static List getMethodDescriptors() {
+ List methodDescriptors = new ArrayList<>();
+ methodDescriptors.add(manageLoyaltyCustomerMatchMethodDescriptor);
+ return methodDescriptors;
+ }
+
+ @Override
+ public UnaryCallable
+ manageLoyaltyCustomerMatchCallable() {
+ return manageLoyaltyCustomerMatchCallable;
+ }
+
+ @Override
+ public final void close() {
+ try {
+ backgroundResources.close();
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to close resource", e);
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ backgroundResources.shutdown();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return backgroundResources.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return backgroundResources.isTerminated();
+ }
+
+ @Override
+ public void shutdownNow() {
+ backgroundResources.shutdownNow();
+ }
+
+ @Override
+ public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
+ return backgroundResources.awaitTermination(duration, unit);
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStub.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStub.java
new file mode 100644
index 000000000000..c8cfc8227f59
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStub.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Base stub class for the LoyaltyCustomerMatchService service API.
+ *
+ * This class is for advanced usage and reflects the underlying API directly.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+public abstract class LoyaltyCustomerMatchServiceStub implements BackgroundResource {
+
+ public UnaryCallable
+ manageLoyaltyCustomerMatchCallable() {
+ throw new UnsupportedOperationException(
+ "Not implemented: manageLoyaltyCustomerMatchCallable()");
+ }
+
+ @Override
+ public abstract void close();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStubSettings.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStubSettings.java
new file mode 100644
index 000000000000..16409e673a4e
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/LoyaltyCustomerMatchServiceStubSettings.java
@@ -0,0 +1,367 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.core.ApiFunction;
+import com.google.api.core.BetaApi;
+import com.google.api.core.ObsoleteApi;
+import com.google.api.gax.core.GaxProperties;
+import com.google.api.gax.core.GoogleCredentialsProvider;
+import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.grpc.GaxGrpcProperties;
+import com.google.api.gax.grpc.GrpcTransportChannel;
+import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
+import com.google.api.gax.httpjson.GaxHttpJsonProperties;
+import com.google.api.gax.httpjson.HttpJsonTransportChannel;
+import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.retrying.RetrySettings;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LibraryMetadata;
+import com.google.api.gax.rpc.StatusCode;
+import com.google.api.gax.rpc.StubSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+import java.io.IOException;
+import java.time.Duration;
+import java.util.List;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Settings class to configure an instance of {@link LoyaltyCustomerMatchServiceStub}.
+ *
+ * The default instance has everything set to sensible defaults:
+ *
+ *
+ * The default service address (merchantapi.googleapis.com) and default port (443) are used.
+ * Credentials are acquired automatically through Application Default Credentials.
+ * Retries are configured for idempotent methods but not for non-idempotent methods.
+ *
+ *
+ * The builder of this class is recursive, so contained classes are themselves builders. When
+ * build() is called, the tree of builders is called to create the complete settings object.
+ *
+ *
For example, to set the
+ * [RetrySettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetrySettings)
+ * of manageLoyaltyCustomerMatch:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * LoyaltyCustomerMatchServiceStubSettings.Builder loyaltyCustomerMatchServiceSettingsBuilder =
+ * LoyaltyCustomerMatchServiceStubSettings.newBuilder();
+ * loyaltyCustomerMatchServiceSettingsBuilder
+ * .manageLoyaltyCustomerMatchSettings()
+ * .setRetrySettings(
+ * loyaltyCustomerMatchServiceSettingsBuilder
+ * .manageLoyaltyCustomerMatchSettings()
+ * .getRetrySettings()
+ * .toBuilder()
+ * .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ * .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ * .setMaxAttempts(5)
+ * .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ * .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ * .setRetryDelayMultiplier(1.3)
+ * .setRpcTimeoutMultiplier(1.5)
+ * .setTotalTimeoutDuration(Duration.ofSeconds(300))
+ * .build());
+ * LoyaltyCustomerMatchServiceStubSettings loyaltyCustomerMatchServiceSettings =
+ * loyaltyCustomerMatchServiceSettingsBuilder.build();
+ * }
+ *
+ * Please refer to the [Client Side Retry
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
+ */
+@NullMarked
+@Generated("by gapic-generator-java")
+@SuppressWarnings("CanonicalDuration")
+public class LoyaltyCustomerMatchServiceStubSettings
+ extends StubSettings {
+ /** The default scopes of the service. */
+ private static final ImmutableList DEFAULT_SERVICE_SCOPES =
+ ImmutableList.builder().add("https://www.googleapis.com/auth/content").build();
+
+ private final UnaryCallSettings<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchSettings;
+
+ /** Returns the object with the settings used for calls to manageLoyaltyCustomerMatch. */
+ public UnaryCallSettings
+ manageLoyaltyCustomerMatchSettings() {
+ return manageLoyaltyCustomerMatchSettings;
+ }
+
+ public LoyaltyCustomerMatchServiceStub createStub() throws IOException {
+ if (getTransportChannelProvider()
+ .getTransportName()
+ .equals(GrpcTransportChannel.getGrpcTransportName())) {
+ return GrpcLoyaltyCustomerMatchServiceStub.create(this);
+ }
+ if (getTransportChannelProvider()
+ .getTransportName()
+ .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
+ return HttpJsonLoyaltyCustomerMatchServiceStub.create(this);
+ }
+ throw new UnsupportedOperationException(
+ String.format(
+ "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
+ }
+
+ /** Returns the default service name. */
+ @Override
+ public String getServiceName() {
+ return "merchantapi";
+ }
+
+ /** Returns a builder for the default ExecutorProvider for this service. */
+ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
+ return InstantiatingExecutorProvider.newBuilder();
+ }
+
+ /** Returns the default service endpoint. */
+ @ObsoleteApi("Use getEndpoint() instead")
+ public static String getDefaultEndpoint() {
+ return "merchantapi.googleapis.com:443";
+ }
+
+ /** Returns the default mTLS service endpoint. */
+ public static String getDefaultMtlsEndpoint() {
+ return "merchantapi.mtls.googleapis.com:443";
+ }
+
+ /** Returns the default service scopes. */
+ public static List getDefaultServiceScopes() {
+ return DEFAULT_SERVICE_SCOPES;
+ }
+
+ /** Returns a builder for the default credentials for this service. */
+ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
+ return GoogleCredentialsProvider.newBuilder()
+ .setScopesToApply(DEFAULT_SERVICE_SCOPES)
+ .setUseJwtAccessWithScope(true);
+ }
+
+ /** Returns a builder for the default gRPC ChannelProvider for this service. */
+ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
+ return InstantiatingGrpcChannelProvider.newBuilder()
+ .setMaxInboundMessageSize(Integer.MAX_VALUE);
+ }
+
+ /** Returns a builder for the default REST ChannelProvider for this service. */
+ @BetaApi
+ public static InstantiatingHttpJsonChannelProvider.Builder
+ defaultHttpJsonTransportProviderBuilder() {
+ return InstantiatingHttpJsonChannelProvider.newBuilder();
+ }
+
+ public static TransportChannelProvider defaultTransportChannelProvider() {
+ return defaultGrpcTransportProviderBuilder().build();
+ }
+
+ public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() {
+ return ApiClientHeaderProvider.newBuilder()
+ .setGeneratedLibToken(
+ "gapic", GaxProperties.getLibraryVersion(LoyaltyCustomerMatchServiceStubSettings.class))
+ .setTransportToken(
+ GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
+ }
+
+ public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() {
+ return ApiClientHeaderProvider.newBuilder()
+ .setGeneratedLibToken(
+ "gapic", GaxProperties.getLibraryVersion(LoyaltyCustomerMatchServiceStubSettings.class))
+ .setTransportToken(
+ GaxHttpJsonProperties.getHttpJsonTokenName(),
+ GaxHttpJsonProperties.getHttpJsonVersion());
+ }
+
+ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
+ return LoyaltyCustomerMatchServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder();
+ }
+
+ /** Returns a new gRPC builder for this class. */
+ public static Builder newBuilder() {
+ return Builder.createDefault();
+ }
+
+ /** Returns a new REST builder for this class. */
+ public static Builder newHttpJsonBuilder() {
+ return Builder.createHttpJsonDefault();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder(@Nullable ClientContext clientContext) {
+ return new Builder(clientContext);
+ }
+
+ /** Returns a builder containing all the values of this settings class. */
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ protected LoyaltyCustomerMatchServiceStubSettings(Builder settingsBuilder) throws IOException {
+ super(settingsBuilder);
+
+ manageLoyaltyCustomerMatchSettings =
+ settingsBuilder.manageLoyaltyCustomerMatchSettings().build();
+ }
+
+ @Override
+ protected LibraryMetadata getLibraryMetadata() {
+ return LibraryMetadata.newBuilder()
+ .setArtifactName("com.google.shopping:google-shopping-merchant-loyaltycustomers")
+ .setRepository("googleapis/google-cloud-java")
+ .setVersion(Version.VERSION)
+ .build();
+ }
+
+ /** Builder for LoyaltyCustomerMatchServiceStubSettings. */
+ public static class Builder
+ extends StubSettings.Builder {
+ private final ImmutableList> unaryMethodSettingsBuilders;
+ private final UnaryCallSettings.Builder<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchSettings;
+ private static final ImmutableMap>
+ RETRYABLE_CODE_DEFINITIONS;
+
+ static {
+ ImmutableMap.Builder> definitions =
+ ImmutableMap.builder();
+ definitions.put(
+ "retry_policy_0_codes",
+ ImmutableSet.copyOf(Lists.newArrayList(StatusCode.Code.UNAVAILABLE)));
+ RETRYABLE_CODE_DEFINITIONS = definitions.build();
+ }
+
+ private static final ImmutableMap RETRY_PARAM_DEFINITIONS;
+
+ static {
+ ImmutableMap.Builder definitions = ImmutableMap.builder();
+ RetrySettings settings = null;
+ settings =
+ RetrySettings.newBuilder()
+ .setInitialRetryDelayDuration(Duration.ofMillis(1000L))
+ .setRetryDelayMultiplier(1.3)
+ .setMaxRetryDelayDuration(Duration.ofMillis(10000L))
+ .setInitialRpcTimeoutDuration(Duration.ofMillis(60000L))
+ .setRpcTimeoutMultiplier(1.0)
+ .setMaxRpcTimeoutDuration(Duration.ofMillis(60000L))
+ .setTotalTimeoutDuration(Duration.ofMillis(60000L))
+ .build();
+ definitions.put("retry_policy_0_params", settings);
+ RETRY_PARAM_DEFINITIONS = definitions.build();
+ }
+
+ protected Builder() {
+ this(((ClientContext) null));
+ }
+
+ protected Builder(@Nullable ClientContext clientContext) {
+ super(clientContext);
+
+ manageLoyaltyCustomerMatchSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
+
+ unaryMethodSettingsBuilders =
+ ImmutableList.>of(manageLoyaltyCustomerMatchSettings);
+ initDefaults(this);
+ }
+
+ protected Builder(LoyaltyCustomerMatchServiceStubSettings settings) {
+ super(settings);
+
+ manageLoyaltyCustomerMatchSettings = settings.manageLoyaltyCustomerMatchSettings.toBuilder();
+
+ unaryMethodSettingsBuilders =
+ ImmutableList.>of(manageLoyaltyCustomerMatchSettings);
+ }
+
+ private static Builder createDefault() {
+ Builder builder = new Builder(((ClientContext) null));
+
+ builder.setTransportChannelProvider(defaultTransportChannelProvider());
+ builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
+ builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
+ builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
+ builder.setSwitchToMtlsEndpointAllowed(true);
+
+ return initDefaults(builder);
+ }
+
+ private static Builder createHttpJsonDefault() {
+ Builder builder = new Builder(((ClientContext) null));
+
+ builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build());
+ builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
+ builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build());
+ builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
+ builder.setSwitchToMtlsEndpointAllowed(true);
+
+ return initDefaults(builder);
+ }
+
+ private static Builder initDefaults(Builder builder) {
+ builder
+ .manageLoyaltyCustomerMatchSettings()
+ .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
+ .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
+
+ return builder;
+ }
+
+ /**
+ * Applies the given settings updater function to all of the unary API methods in this service.
+ *
+ * Note: This method does not support applying settings to streaming methods.
+ */
+ public Builder applyToAllUnaryMethods(
+ ApiFunction, Void> settingsUpdater) {
+ super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
+ return this;
+ }
+
+ public ImmutableList> unaryMethodSettingsBuilders() {
+ return unaryMethodSettingsBuilders;
+ }
+
+ /** Returns the builder for the settings used for calls to manageLoyaltyCustomerMatch. */
+ public UnaryCallSettings.Builder<
+ ManageLoyaltyCustomerMatchRequest, ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatchSettings() {
+ return manageLoyaltyCustomerMatchSettings;
+ }
+
+ @Override
+ public LoyaltyCustomerMatchServiceStubSettings build() throws IOException {
+ return new LoyaltyCustomerMatchServiceStubSettings(this);
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/Version.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/Version.java
new file mode 100644
index 000000000000..c8d5b86e6055
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/stub/Version.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub;
+
+import com.google.api.core.InternalApi;
+
+@InternalApi("For internal use only")
+final class Version {
+ // {x-version-update-start:google-shopping-merchant-loyaltycustomers:current}
+ static final String VERSION = "0.0.0-SNAPSHOT";
+ // {x-version-update-end}
+
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/resources/META-INF/native-image/com.google.shopping.merchant.loyaltycustomers.v1/reflect-config.json b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/resources/META-INF/native-image/com.google.shopping.merchant.loyaltycustomers.v1/reflect-config.json
new file mode 100644
index 000000000000..d11dc0d0cd3f
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/main/resources/META-INF/native-image/com.google.shopping.merchant.loyaltycustomers.v1/reflect-config.json
@@ -0,0 +1,1388 @@
+[
+ {
+ "name": "com.google.api.BatchingConfigProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.BatchingConfigProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.BatchingDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.BatchingDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.BatchingSettingsProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.BatchingSettingsProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ClientLibraryDestination",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ClientLibraryOrganization",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ClientLibrarySettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ClientLibrarySettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CommonLanguageSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CommonLanguageSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CppSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CppSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CustomHttpPattern",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.CustomHttpPattern$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.DotnetSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.DotnetSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.FieldBehavior",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.FlowControlLimitExceededBehaviorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.GoSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.GoSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.Http",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.Http$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.HttpRule",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.HttpRule$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.JavaSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.JavaSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.LaunchStage",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.MethodSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.MethodSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.MethodSettings$LongRunning",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.MethodSettings$LongRunning$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.NodeSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.NodeSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PhpSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PhpSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.Publishing",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.Publishing$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PythonSettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PythonSettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PythonSettings$ExperimentalFeatures",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.PythonSettings$ExperimentalFeatures$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceDescriptor",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceDescriptor$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceDescriptor$History",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceDescriptor$Style",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceReference",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.ResourceReference$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.RubySettings",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.RubySettings$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.SelectiveGapicGeneration",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.api.SelectiveGapicGeneration$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$Edition",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$VerificationState",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$EnforceNamingStyle",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$EnumType",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$FieldPresence",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$JsonFormat",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$MessageEncoding",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$RepeatedFieldEncoding",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$Utf8Validation",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$VisibilityFeature",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$VisibilityFeature$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSet$VisibilityFeature$DefaultSymbolVisibility",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSetDefaults",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSetDefaults$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FeatureSetDefaults$FeatureSetEditionDefault$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$CType",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$EditionDefault",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$EditionDefault$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$FeatureSupport",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$FeatureSupport$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$JSType",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionRetention",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionTargetType",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Semantic",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MessageOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MessageOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MethodOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MethodOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$OneofOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$OneofOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ServiceOptions",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$ServiceOptions$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$SymbolVisibility",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.Duration",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.protobuf.Duration$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer$LoyaltyTier",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier$Builder",
+ "queryAllDeclaredConstructors": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
\ No newline at end of file
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientHttpJsonTest.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientHttpJsonTest.java
new file mode 100644
index 000000000000..2a386657849e
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientHttpJsonTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import com.google.api.gax.core.NoCredentialsProvider;
+import com.google.api.gax.httpjson.GaxHttpJsonProperties;
+import com.google.api.gax.httpjson.testing.MockHttpService;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.ApiException;
+import com.google.api.gax.rpc.ApiExceptionFactory;
+import com.google.api.gax.rpc.InvalidArgumentException;
+import com.google.api.gax.rpc.StatusCode;
+import com.google.api.gax.rpc.testing.FakeStatusCode;
+import com.google.shopping.merchant.loyaltycustomers.v1.stub.HttpJsonLoyaltyCustomerMatchServiceStub;
+import java.io.IOException;
+import java.util.List;
+import javax.annotation.Generated;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+@Generated("by gapic-generator-java")
+public class LoyaltyCustomerMatchServiceClientHttpJsonTest {
+ private static MockHttpService mockService;
+ private static LoyaltyCustomerMatchServiceClient client;
+
+ @BeforeClass
+ public static void startStaticServer() throws IOException {
+ mockService =
+ new MockHttpService(
+ HttpJsonLoyaltyCustomerMatchServiceStub.getMethodDescriptors(),
+ LoyaltyCustomerMatchServiceSettings.getDefaultEndpoint());
+ LoyaltyCustomerMatchServiceSettings settings =
+ LoyaltyCustomerMatchServiceSettings.newHttpJsonBuilder()
+ .setTransportChannelProvider(
+ LoyaltyCustomerMatchServiceSettings.defaultHttpJsonTransportProviderBuilder()
+ .setHttpTransport(mockService)
+ .build())
+ .setCredentialsProvider(NoCredentialsProvider.create())
+ .build();
+ client = LoyaltyCustomerMatchServiceClient.create(settings);
+ }
+
+ @AfterClass
+ public static void stopServer() {
+ client.close();
+ }
+
+ @Before
+ public void setUp() {}
+
+ @After
+ public void tearDown() throws Exception {
+ mockService.reset();
+ }
+
+ @Test
+ public void manageLoyaltyCustomerMatchTest() throws Exception {
+ ManageLoyaltyCustomerMatchResponse expectedResponse =
+ ManageLoyaltyCustomerMatchResponse.newBuilder()
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ mockService.addResponse(expectedResponse);
+
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+
+ ManageLoyaltyCustomerMatchResponse actualResponse = client.manageLoyaltyCustomerMatch(request);
+ Assert.assertEquals(expectedResponse, actualResponse);
+
+ List actualRequests = mockService.getRequestPaths();
+ Assert.assertEquals(1, actualRequests.size());
+
+ String apiClientHeaderKey =
+ mockService
+ .getRequestHeaders()
+ .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey())
+ .iterator()
+ .next();
+ Assert.assertTrue(
+ GaxHttpJsonProperties.getDefaultApiClientHeaderPattern()
+ .matcher(apiClientHeaderKey)
+ .matches());
+ }
+
+ @Test
+ public void manageLoyaltyCustomerMatchExceptionTest() throws Exception {
+ ApiException exception =
+ ApiExceptionFactory.createException(
+ new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false);
+ mockService.addException(exception);
+
+ try {
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ client.manageLoyaltyCustomerMatch(request);
+ Assert.fail("No exception raised");
+ } catch (InvalidArgumentException e) {
+ // Expected exception.
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientTest.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientTest.java
new file mode 100644
index 000000000000..37c353e89456
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceClientTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import com.google.api.gax.core.NoCredentialsProvider;
+import com.google.api.gax.grpc.GaxGrpcProperties;
+import com.google.api.gax.grpc.testing.LocalChannelProvider;
+import com.google.api.gax.grpc.testing.MockGrpcService;
+import com.google.api.gax.grpc.testing.MockServiceHelper;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.InvalidArgumentException;
+import com.google.protobuf.AbstractMessage;
+import io.grpc.StatusRuntimeException;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+import javax.annotation.Generated;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+@Generated("by gapic-generator-java")
+public class LoyaltyCustomerMatchServiceClientTest {
+ private static MockLoyaltyCustomerMatchService mockLoyaltyCustomerMatchService;
+ private static MockServiceHelper mockServiceHelper;
+ private LocalChannelProvider channelProvider;
+ private LoyaltyCustomerMatchServiceClient client;
+
+ @BeforeClass
+ public static void startStaticServer() {
+ mockLoyaltyCustomerMatchService = new MockLoyaltyCustomerMatchService();
+ mockServiceHelper =
+ new MockServiceHelper(
+ UUID.randomUUID().toString(),
+ Arrays.asList(mockLoyaltyCustomerMatchService));
+ mockServiceHelper.start();
+ }
+
+ @AfterClass
+ public static void stopServer() {
+ mockServiceHelper.stop();
+ }
+
+ @Before
+ public void setUp() throws IOException {
+ mockServiceHelper.reset();
+ channelProvider = mockServiceHelper.createChannelProvider();
+ LoyaltyCustomerMatchServiceSettings settings =
+ LoyaltyCustomerMatchServiceSettings.newBuilder()
+ .setTransportChannelProvider(channelProvider)
+ .setCredentialsProvider(NoCredentialsProvider.create())
+ .build();
+ client = LoyaltyCustomerMatchServiceClient.create(settings);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ client.close();
+ }
+
+ @Test
+ public void manageLoyaltyCustomerMatchTest() throws Exception {
+ ManageLoyaltyCustomerMatchResponse expectedResponse =
+ ManageLoyaltyCustomerMatchResponse.newBuilder()
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ mockLoyaltyCustomerMatchService.addResponse(expectedResponse);
+
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+
+ ManageLoyaltyCustomerMatchResponse actualResponse = client.manageLoyaltyCustomerMatch(request);
+ Assert.assertEquals(expectedResponse, actualResponse);
+
+ List actualRequests = mockLoyaltyCustomerMatchService.getRequests();
+ Assert.assertEquals(1, actualRequests.size());
+ ManageLoyaltyCustomerMatchRequest actualRequest =
+ ((ManageLoyaltyCustomerMatchRequest) actualRequests.get(0));
+
+ Assert.assertEquals(request.getParent(), actualRequest.getParent());
+ Assert.assertEquals(request.getLoyaltyCustomer(), actualRequest.getLoyaltyCustomer());
+ Assert.assertTrue(
+ channelProvider.isHeaderSent(
+ ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
+ GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
+ }
+
+ @Test
+ public void manageLoyaltyCustomerMatchExceptionTest() throws Exception {
+ StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
+ mockLoyaltyCustomerMatchService.addException(exception);
+
+ try {
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ client.manageLoyaltyCustomerMatch(request);
+ Assert.fail("No exception raised");
+ } catch (InvalidArgumentException e) {
+ // Expected exception.
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchService.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchService.java
new file mode 100644
index 000000000000..f2cc3981aa79
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchService.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import com.google.api.core.BetaApi;
+import com.google.api.gax.grpc.testing.MockGrpcService;
+import com.google.protobuf.AbstractMessage;
+import io.grpc.ServerServiceDefinition;
+import java.util.List;
+import javax.annotation.Generated;
+
+@BetaApi
+@Generated("by gapic-generator-java")
+public class MockLoyaltyCustomerMatchService implements MockGrpcService {
+ private final MockLoyaltyCustomerMatchServiceImpl serviceImpl;
+
+ public MockLoyaltyCustomerMatchService() {
+ serviceImpl = new MockLoyaltyCustomerMatchServiceImpl();
+ }
+
+ @Override
+ public List getRequests() {
+ return serviceImpl.getRequests();
+ }
+
+ @Override
+ public void addResponse(AbstractMessage response) {
+ serviceImpl.addResponse(response);
+ }
+
+ @Override
+ public void addException(Exception exception) {
+ serviceImpl.addException(exception);
+ }
+
+ @Override
+ public ServerServiceDefinition getServiceDefinition() {
+ return serviceImpl.bindService();
+ }
+
+ @Override
+ public void reset() {
+ serviceImpl.reset();
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchServiceImpl.java b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchServiceImpl.java
new file mode 100644
index 000000000000..aa2b11dc8d59
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/google-shopping-merchant-loyaltycustomers/src/test/java/com/google/shopping/merchant/loyaltycustomers/v1/MockLoyaltyCustomerMatchServiceImpl.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import com.google.api.core.BetaApi;
+import com.google.protobuf.AbstractMessage;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceGrpc.LoyaltyCustomerMatchServiceImplBase;
+import io.grpc.stub.StreamObserver;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import javax.annotation.Generated;
+
+@BetaApi
+@Generated("by gapic-generator-java")
+public class MockLoyaltyCustomerMatchServiceImpl extends LoyaltyCustomerMatchServiceImplBase {
+ private List requests;
+ private Queue responses;
+
+ public MockLoyaltyCustomerMatchServiceImpl() {
+ requests = new ArrayList<>();
+ responses = new LinkedList<>();
+ }
+
+ public List getRequests() {
+ return requests;
+ }
+
+ public void addResponse(AbstractMessage response) {
+ responses.add(response);
+ }
+
+ public void setResponses(List responses) {
+ this.responses = new LinkedList(responses);
+ }
+
+ public void addException(Exception exception) {
+ responses.add(exception);
+ }
+
+ public void reset() {
+ requests = new ArrayList<>();
+ responses = new LinkedList<>();
+ }
+
+ @Override
+ public void manageLoyaltyCustomerMatch(
+ ManageLoyaltyCustomerMatchRequest request,
+ StreamObserver responseObserver) {
+ Object response = responses.poll();
+ if (response instanceof ManageLoyaltyCustomerMatchResponse) {
+ requests.add(request);
+ responseObserver.onNext(((ManageLoyaltyCustomerMatchResponse) response));
+ responseObserver.onCompleted();
+ } else if (response instanceof Exception) {
+ responseObserver.onError(((Exception) response));
+ } else {
+ responseObserver.onError(
+ new IllegalArgumentException(
+ String.format(
+ "Unrecognized response type %s for method ManageLoyaltyCustomerMatch, expected %s"
+ + " or %s",
+ response == null ? "null" : response.getClass().getName(),
+ ManageLoyaltyCustomerMatchResponse.class.getName(),
+ Exception.class.getName())));
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/pom.xml b/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/pom.xml
new file mode 100644
index 000000000000..4d511d99f0ed
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/pom.xml
@@ -0,0 +1,45 @@
+
+ 4.0.0
+ com.google.shopping.api.grpc
+ grpc-google-shopping-merchant-loyaltycustomers-v1
+ 0.1.0-SNAPSHOT
+ grpc-google-shopping-merchant-loyaltycustomers-v1
+ GRPC library for google-shopping-merchant-loyaltycustomers
+
+ com.google.shopping
+ google-shopping-merchant-loyaltycustomers-parent
+ 0.1.0-SNAPSHOT
+
+
+
+ io.grpc
+ grpc-api
+
+
+ io.grpc
+ grpc-stub
+
+
+ io.grpc
+ grpc-protobuf
+
+
+ com.google.protobuf
+ protobuf-java
+
+
+ com.google.api.grpc
+ proto-google-common-protos
+
+
+ com.google.shopping.api.grpc
+ proto-google-shopping-merchant-loyaltycustomers-v1
+
+
+ com.google.guava
+ guava
+
+
+
diff --git a/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceGrpc.java b/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceGrpc.java
new file mode 100644
index 000000000000..be8e6c9a2daa
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/grpc-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerMatchServiceGrpc.java
@@ -0,0 +1,599 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+
+/**
+ *
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+@io.grpc.stub.annotations.GrpcGenerated
+public final class LoyaltyCustomerMatchServiceGrpc {
+
+ private LoyaltyCustomerMatchServiceGrpc() {}
+
+ public static final java.lang.String SERVICE_NAME =
+ "google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchService";
+
+ // Static method descriptors that strictly reflect the proto.
+ private static volatile io.grpc.MethodDescriptor<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ getManageLoyaltyCustomerMatchMethod;
+
+ @io.grpc.stub.annotations.RpcMethod(
+ fullMethodName = SERVICE_NAME + '/' + "ManageLoyaltyCustomerMatch",
+ requestType =
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest.class,
+ responseType =
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse.class,
+ methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+ public static io.grpc.MethodDescriptor<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ getManageLoyaltyCustomerMatchMethod() {
+ io.grpc.MethodDescriptor<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ getManageLoyaltyCustomerMatchMethod;
+ if ((getManageLoyaltyCustomerMatchMethod =
+ LoyaltyCustomerMatchServiceGrpc.getManageLoyaltyCustomerMatchMethod)
+ == null) {
+ synchronized (LoyaltyCustomerMatchServiceGrpc.class) {
+ if ((getManageLoyaltyCustomerMatchMethod =
+ LoyaltyCustomerMatchServiceGrpc.getManageLoyaltyCustomerMatchMethod)
+ == null) {
+ LoyaltyCustomerMatchServiceGrpc.getManageLoyaltyCustomerMatchMethod =
+ getManageLoyaltyCustomerMatchMethod =
+ io.grpc.MethodDescriptor
+ .
+ newBuilder()
+ .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+ .setFullMethodName(
+ generateFullMethodName(SERVICE_NAME, "ManageLoyaltyCustomerMatch"))
+ .setSampledToLocalTracing(true)
+ .setRequestMarshaller(
+ io.grpc.protobuf.ProtoUtils.marshaller(
+ com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchRequest.getDefaultInstance()))
+ .setResponseMarshaller(
+ io.grpc.protobuf.ProtoUtils.marshaller(
+ com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchResponse.getDefaultInstance()))
+ .setSchemaDescriptor(
+ new LoyaltyCustomerMatchServiceMethodDescriptorSupplier(
+ "ManageLoyaltyCustomerMatch"))
+ .build();
+ }
+ }
+ }
+ return getManageLoyaltyCustomerMatchMethod;
+ }
+
+ /** Creates a new async stub that supports all call types for the service */
+ public static LoyaltyCustomerMatchServiceStub newStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory factory =
+ new io.grpc.stub.AbstractStub.StubFactory() {
+ @java.lang.Override
+ public LoyaltyCustomerMatchServiceStub newStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceStub(channel, callOptions);
+ }
+ };
+ return LoyaltyCustomerMatchServiceStub.newStub(factory, channel);
+ }
+
+ /** Creates a new blocking-style stub that supports all types of calls on the service */
+ public static LoyaltyCustomerMatchServiceBlockingV2Stub newBlockingV2Stub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory factory =
+ new io.grpc.stub.AbstractStub.StubFactory() {
+ @java.lang.Override
+ public LoyaltyCustomerMatchServiceBlockingV2Stub newStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceBlockingV2Stub(channel, callOptions);
+ }
+ };
+ return LoyaltyCustomerMatchServiceBlockingV2Stub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+ */
+ public static LoyaltyCustomerMatchServiceBlockingStub newBlockingStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory factory =
+ new io.grpc.stub.AbstractStub.StubFactory() {
+ @java.lang.Override
+ public LoyaltyCustomerMatchServiceBlockingStub newStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceBlockingStub(channel, callOptions);
+ }
+ };
+ return LoyaltyCustomerMatchServiceBlockingStub.newStub(factory, channel);
+ }
+
+ /** Creates a new ListenableFuture-style stub that supports unary calls on the service */
+ public static LoyaltyCustomerMatchServiceFutureStub newFutureStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory factory =
+ new io.grpc.stub.AbstractStub.StubFactory() {
+ @java.lang.Override
+ public LoyaltyCustomerMatchServiceFutureStub newStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceFutureStub(channel, callOptions);
+ }
+ };
+ return LoyaltyCustomerMatchServiceFutureStub.newStub(factory, channel);
+ }
+
+ /**
+ *
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public interface AsyncService {
+
+ /**
+ *
+ *
+ *
+ * Manages (inserts, updates, or removes) a customer's loyalty tier
+ * information.
+ * This method serves as a single interface for all changes to a customer's
+ * loyalty status. The specific action (insert, update, or remove) is
+ * determined by the current state of the merchant-to-customer association and
+ * the `loyalty_tier` value provided in the request.
+ * **Operation Logic:**
+ * * **Upsert (Insert/Update):** Providing any valid tier other than
+ * `NON_MEMBER` will associate the customer with that tier. If an association
+ * already exists, it will be updated; otherwise, a new one will be created.
+ * * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ * existing loyalty association for the customer.
+ * **Privacy Note:** To protect user privacy, this method consistently returns
+ * a `200 OK` status with a default `LoyaltyCustomer` response if the
+ * customer's identifier cannot be matched to a Google account or if the user
+ * has not opted into loyalty personalization.
+ *
+ */
+ default void manageLoyaltyCustomerMatch(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest request,
+ io.grpc.stub.StreamObserver<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ responseObserver) {
+ io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(
+ getManageLoyaltyCustomerMatchMethod(), responseObserver);
+ }
+ }
+
+ /**
+ * Base class for the server implementation of the service LoyaltyCustomerMatchService.
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public abstract static class LoyaltyCustomerMatchServiceImplBase
+ implements io.grpc.BindableService, AsyncService {
+
+ @java.lang.Override
+ public final io.grpc.ServerServiceDefinition bindService() {
+ return LoyaltyCustomerMatchServiceGrpc.bindService(this);
+ }
+ }
+
+ /**
+ * A stub to allow clients to do asynchronous rpc calls to service LoyaltyCustomerMatchService.
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public static final class LoyaltyCustomerMatchServiceStub
+ extends io.grpc.stub.AbstractAsyncStub {
+ private LoyaltyCustomerMatchServiceStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @java.lang.Override
+ protected LoyaltyCustomerMatchServiceStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceStub(channel, callOptions);
+ }
+
+ /**
+ *
+ *
+ *
+ * Manages (inserts, updates, or removes) a customer's loyalty tier
+ * information.
+ * This method serves as a single interface for all changes to a customer's
+ * loyalty status. The specific action (insert, update, or remove) is
+ * determined by the current state of the merchant-to-customer association and
+ * the `loyalty_tier` value provided in the request.
+ * **Operation Logic:**
+ * * **Upsert (Insert/Update):** Providing any valid tier other than
+ * `NON_MEMBER` will associate the customer with that tier. If an association
+ * already exists, it will be updated; otherwise, a new one will be created.
+ * * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ * existing loyalty association for the customer.
+ * **Privacy Note:** To protect user privacy, this method consistently returns
+ * a `200 OK` status with a default `LoyaltyCustomer` response if the
+ * customer's identifier cannot be matched to a Google account or if the user
+ * has not opted into loyalty personalization.
+ *
+ */
+ public void manageLoyaltyCustomerMatch(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest request,
+ io.grpc.stub.StreamObserver<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ responseObserver) {
+ io.grpc.stub.ClientCalls.asyncUnaryCall(
+ getChannel().newCall(getManageLoyaltyCustomerMatchMethod(), getCallOptions()),
+ request,
+ responseObserver);
+ }
+ }
+
+ /**
+ * A stub to allow clients to do synchronous rpc calls to service LoyaltyCustomerMatchService.
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public static final class LoyaltyCustomerMatchServiceBlockingV2Stub
+ extends io.grpc.stub.AbstractBlockingStub {
+ private LoyaltyCustomerMatchServiceBlockingV2Stub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @java.lang.Override
+ protected LoyaltyCustomerMatchServiceBlockingV2Stub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceBlockingV2Stub(channel, callOptions);
+ }
+
+ /**
+ *
+ *
+ *
+ * Manages (inserts, updates, or removes) a customer's loyalty tier
+ * information.
+ * This method serves as a single interface for all changes to a customer's
+ * loyalty status. The specific action (insert, update, or remove) is
+ * determined by the current state of the merchant-to-customer association and
+ * the `loyalty_tier` value provided in the request.
+ * **Operation Logic:**
+ * * **Upsert (Insert/Update):** Providing any valid tier other than
+ * `NON_MEMBER` will associate the customer with that tier. If an association
+ * already exists, it will be updated; otherwise, a new one will be created.
+ * * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ * existing loyalty association for the customer.
+ * **Privacy Note:** To protect user privacy, this method consistently returns
+ * a `200 OK` status with a default `LoyaltyCustomer` response if the
+ * customer's identifier cannot be matched to a Google account or if the user
+ * has not opted into loyalty personalization.
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ manageLoyaltyCustomerMatch(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ request)
+ throws io.grpc.StatusException {
+ return io.grpc.stub.ClientCalls.blockingV2UnaryCall(
+ getChannel(), getManageLoyaltyCustomerMatchMethod(), getCallOptions(), request);
+ }
+ }
+
+ /**
+ * A stub to allow clients to do limited synchronous rpc calls to service
+ * LoyaltyCustomerMatchService.
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public static final class LoyaltyCustomerMatchServiceBlockingStub
+ extends io.grpc.stub.AbstractBlockingStub {
+ private LoyaltyCustomerMatchServiceBlockingStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @java.lang.Override
+ protected LoyaltyCustomerMatchServiceBlockingStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceBlockingStub(channel, callOptions);
+ }
+
+ /**
+ *
+ *
+ *
+ * Manages (inserts, updates, or removes) a customer's loyalty tier
+ * information.
+ * This method serves as a single interface for all changes to a customer's
+ * loyalty status. The specific action (insert, update, or remove) is
+ * determined by the current state of the merchant-to-customer association and
+ * the `loyalty_tier` value provided in the request.
+ * **Operation Logic:**
+ * * **Upsert (Insert/Update):** Providing any valid tier other than
+ * `NON_MEMBER` will associate the customer with that tier. If an association
+ * already exists, it will be updated; otherwise, a new one will be created.
+ * * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ * existing loyalty association for the customer.
+ * **Privacy Note:** To protect user privacy, this method consistently returns
+ * a `200 OK` status with a default `LoyaltyCustomer` response if the
+ * customer's identifier cannot be matched to a Google account or if the user
+ * has not opted into loyalty personalization.
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ manageLoyaltyCustomerMatch(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ request) {
+ return io.grpc.stub.ClientCalls.blockingUnaryCall(
+ getChannel(), getManageLoyaltyCustomerMatchMethod(), getCallOptions(), request);
+ }
+ }
+
+ /**
+ * A stub to allow clients to do ListenableFuture-style rpc calls to service
+ * LoyaltyCustomerMatchService.
+ *
+ *
+ * Manages customer loyalty program memberships for merchants.
+ * This service allows all merchants, including non-advertisers, to share their
+ * first-party customer data of loyalty program members. Google uses this data
+ * to personalize organic free listing shopping experiences, in compliance with
+ * the [Merchant Center Terms of
+ * Service](https://support.google.com/merchants/answer/160173).
+ * The service follows a non-standard, imperative pattern,
+ * exposing a single `ManageLoyaltyCustomerMatch` method rather than
+ * conventional resource identifiers and CRUD operations. This design protects
+ * user privacy by preventing the discovery of a customer's presence or
+ * membership status through standard GET or LIST methods.
+ *
+ */
+ public static final class LoyaltyCustomerMatchServiceFutureStub
+ extends io.grpc.stub.AbstractFutureStub {
+ private LoyaltyCustomerMatchServiceFutureStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @java.lang.Override
+ protected LoyaltyCustomerMatchServiceFutureStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new LoyaltyCustomerMatchServiceFutureStub(channel, callOptions);
+ }
+
+ /**
+ *
+ *
+ *
+ * Manages (inserts, updates, or removes) a customer's loyalty tier
+ * information.
+ * This method serves as a single interface for all changes to a customer's
+ * loyalty status. The specific action (insert, update, or remove) is
+ * determined by the current state of the merchant-to-customer association and
+ * the `loyalty_tier` value provided in the request.
+ * **Operation Logic:**
+ * * **Upsert (Insert/Update):** Providing any valid tier other than
+ * `NON_MEMBER` will associate the customer with that tier. If an association
+ * already exists, it will be updated; otherwise, a new one will be created.
+ * * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ * existing loyalty association for the customer.
+ * **Privacy Note:** To protect user privacy, this method consistently returns
+ * a `200 OK` status with a default `LoyaltyCustomer` response if the
+ * customer's identifier cannot be matched to a Google account or if the user
+ * has not opted into loyalty personalization.
+ *
+ */
+ public com.google.common.util.concurrent.ListenableFuture<
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse>
+ manageLoyaltyCustomerMatch(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ request) {
+ return io.grpc.stub.ClientCalls.futureUnaryCall(
+ getChannel().newCall(getManageLoyaltyCustomerMatchMethod(), getCallOptions()), request);
+ }
+ }
+
+ private static final int METHODID_MANAGE_LOYALTY_CUSTOMER_MATCH = 0;
+
+ private static final class MethodHandlers
+ implements io.grpc.stub.ServerCalls.UnaryMethod,
+ io.grpc.stub.ServerCalls.ServerStreamingMethod,
+ io.grpc.stub.ServerCalls.ClientStreamingMethod,
+ io.grpc.stub.ServerCalls.BidiStreamingMethod {
+ private final AsyncService serviceImpl;
+ private final int methodId;
+
+ MethodHandlers(AsyncService serviceImpl, int methodId) {
+ this.serviceImpl = serviceImpl;
+ this.methodId = methodId;
+ }
+
+ @java.lang.Override
+ @java.lang.SuppressWarnings("unchecked")
+ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) {
+ switch (methodId) {
+ case METHODID_MANAGE_LOYALTY_CUSTOMER_MATCH:
+ serviceImpl.manageLoyaltyCustomerMatch(
+ (com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ request,
+ (io.grpc.stub.StreamObserver<
+ com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchResponse>)
+ responseObserver);
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ @java.lang.Override
+ @java.lang.SuppressWarnings("unchecked")
+ public io.grpc.stub.StreamObserver invoke(
+ io.grpc.stub.StreamObserver responseObserver) {
+ switch (methodId) {
+ default:
+ throw new AssertionError();
+ }
+ }
+ }
+
+ public static final io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+ return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+ .addMethod(
+ getManageLoyaltyCustomerMatchMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchRequest,
+ com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchResponse>(
+ service, METHODID_MANAGE_LOYALTY_CUSTOMER_MATCH)))
+ .build();
+ }
+
+ private abstract static class LoyaltyCustomerMatchServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoFileDescriptorSupplier,
+ io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+ LoyaltyCustomerMatchServiceBaseDescriptorSupplier() {}
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto.getDescriptor();
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+ return getFileDescriptor().findServiceByName("LoyaltyCustomerMatchService");
+ }
+ }
+
+ private static final class LoyaltyCustomerMatchServiceFileDescriptorSupplier
+ extends LoyaltyCustomerMatchServiceBaseDescriptorSupplier {
+ LoyaltyCustomerMatchServiceFileDescriptorSupplier() {}
+ }
+
+ private static final class LoyaltyCustomerMatchServiceMethodDescriptorSupplier
+ extends LoyaltyCustomerMatchServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+ private final java.lang.String methodName;
+
+ LoyaltyCustomerMatchServiceMethodDescriptorSupplier(java.lang.String methodName) {
+ this.methodName = methodName;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+ return getServiceDescriptor().findMethodByName(methodName);
+ }
+ }
+
+ private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+ public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+ io.grpc.ServiceDescriptor result = serviceDescriptor;
+ if (result == null) {
+ synchronized (LoyaltyCustomerMatchServiceGrpc.class) {
+ result = serviceDescriptor;
+ if (result == null) {
+ serviceDescriptor =
+ result =
+ io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+ .setSchemaDescriptor(new LoyaltyCustomerMatchServiceFileDescriptorSupplier())
+ .addMethod(getManageLoyaltyCustomerMatchMethod())
+ .build();
+ }
+ }
+ }
+ return result;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/pom.xml b/java-shopping-merchant-loyaltycustomers/pom.xml
new file mode 100644
index 000000000000..bd2f86a1afc1
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+ com.google.shopping
+ google-shopping-merchant-loyaltycustomers-parent
+ pom
+ 0.1.0-SNAPSHOT
+ Google Merchant Parent
+
+ Java idiomatic client for Google Cloud Platform services.
+
+
+
+ com.google.cloud
+ google-cloud-jar-parent
+ 1.91.0-SNAPSHOT
+ ../google-cloud-jar-parent/pom.xml
+
+
+
+ UTF-8
+ UTF-8
+ github
+ google-shopping-merchant-loyaltycustomers-parent
+
+
+
+
+
+
+ com.google.shopping
+ google-shopping-merchant-loyaltycustomers
+ 0.1.0-SNAPSHOT
+
+
+ com.google.shopping.api.grpc
+ grpc-google-shopping-merchant-loyaltycustomers-v1
+ 0.1.0-SNAPSHOT
+
+
+ com.google.shopping.api.grpc
+ proto-google-shopping-merchant-loyaltycustomers-v1
+ 0.1.0-SNAPSHOT
+
+
+
+
+
+
+
+ google-shopping-merchant-loyaltycustomers
+ grpc-google-shopping-merchant-loyaltycustomers-v1
+ proto-google-shopping-merchant-loyaltycustomers-v1
+
+ google-shopping-merchant-loyaltycustomers-bom
+
+
+
\ No newline at end of file
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/clirr-ignored-differences.xml b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/clirr-ignored-differences.xml
new file mode 100644
index 000000000000..0eca86fb8bb2
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/clirr-ignored-differences.xml
@@ -0,0 +1,80 @@
+
+
+
+
+ 7012
+ com/google/shopping/merchant/loyaltycustomers/v1/*OrBuilder
+ * get*(*)
+
+
+ 7012
+ com/google/shopping/merchant/loyaltycustomers/v1/*OrBuilder
+ boolean contains*(*)
+
+
+ 7012
+ com/google/shopping/merchant/loyaltycustomers/v1/*OrBuilder
+ boolean has*(*)
+
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * getDefaultInstanceForType()
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * addRepeatedField(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * clear()
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * clearField(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * clearOneof(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * clone()
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * mergeUnknownFields(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * setField(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * setRepeatedField(*)
+ **
+
+
+ 7006
+ com/google/shopping/merchant/loyaltycustomers/v1/**
+ * setUnknownFields(*)
+ **
+
+
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/pom.xml b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/pom.xml
new file mode 100644
index 000000000000..3af63ddbe88a
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/pom.xml
@@ -0,0 +1,41 @@
+
+ 4.0.0
+ com.google.shopping.api.grpc
+ proto-google-shopping-merchant-loyaltycustomers-v1
+ 0.1.0-SNAPSHOT
+ proto-google-shopping-merchant-loyaltycustomers-v1
+ Proto library for google-shopping-merchant-loyaltycustomers
+
+ com.google.shopping
+ google-shopping-merchant-loyaltycustomers-parent
+ 0.1.0-SNAPSHOT
+
+
+
+ com.google.protobuf
+ protobuf-java
+
+
+ com.google.api.grpc
+ proto-google-common-protos
+
+
+ com.google.api.grpc
+ proto-google-iam-v1
+
+
+ com.google.api
+ api-common
+
+
+ com.google.guava
+ guava
+
+
+ org.jspecify
+ jspecify
+
+
+
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AccountName.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AccountName.java
new file mode 100644
index 000000000000..4da13719a290
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AccountName.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+import com.google.api.pathtemplate.PathTemplate;
+import com.google.api.resourcenames.ResourceName;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import javax.annotation.Generated;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+@NullMarked
+@Generated("by gapic-generator-java")
+public class AccountName implements ResourceName {
+ private static final PathTemplate ACCOUNT =
+ PathTemplate.createWithoutUrlEncoding("accounts/{account}");
+ private volatile Map fieldValuesMap;
+ private final String account;
+
+ @Deprecated
+ protected AccountName() {
+ account = null;
+ }
+
+ private AccountName(Builder builder) {
+ account = Preconditions.checkNotNull(builder.getAccount());
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ public static AccountName of(String account) {
+ return newBuilder().setAccount(account).build();
+ }
+
+ public static String format(String account) {
+ return newBuilder().setAccount(account).build().toString();
+ }
+
+ public static @Nullable AccountName parse(String formattedString) {
+ if (formattedString.isEmpty()) {
+ return null;
+ }
+ Map matchMap =
+ ACCOUNT.validatedMatch(
+ formattedString, "AccountName.parse: formattedString not in valid format");
+ return of(matchMap.get("account"));
+ }
+
+ public static List parseList(List formattedStrings) {
+ List list = new ArrayList<>(formattedStrings.size());
+ for (String formattedString : formattedStrings) {
+ list.add(parse(formattedString));
+ }
+ return list;
+ }
+
+ public static List toStringList(List<@Nullable AccountName> values) {
+ List list = new ArrayList<>(values.size());
+ for (AccountName value : values) {
+ if (value == null) {
+ list.add("");
+ } else {
+ list.add(value.toString());
+ }
+ }
+ return list;
+ }
+
+ public static boolean isParsableFrom(String formattedString) {
+ return ACCOUNT.matches(formattedString);
+ }
+
+ @Override
+ public Map getFieldValuesMap() {
+ if (fieldValuesMap == null) {
+ synchronized (this) {
+ if (fieldValuesMap == null) {
+ ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder();
+ if (account != null) {
+ fieldMapBuilder.put("account", account);
+ }
+ fieldValuesMap = fieldMapBuilder.build();
+ }
+ }
+ }
+ return fieldValuesMap;
+ }
+
+ public String getFieldValue(String fieldName) {
+ return getFieldValuesMap().get(fieldName);
+ }
+
+ @Override
+ public String toString() {
+ return ACCOUNT.instantiate("account", account);
+ }
+
+ @Override
+ public boolean equals(@Nullable Object o) {
+ if (o == this) {
+ return true;
+ }
+ if (o != null && getClass() == o.getClass()) {
+ AccountName that = ((AccountName) o);
+ return Objects.equals(this.account, that.account);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int h = 1;
+ h *= 1000003;
+ h ^= Objects.hashCode(account);
+ return h;
+ }
+
+ /** Builder for accounts/{account}. */
+ public static class Builder {
+ private String account;
+
+ protected Builder() {}
+
+ public String getAccount() {
+ return account;
+ }
+
+ public Builder setAccount(String account) {
+ this.account = account;
+ return this;
+ }
+
+ private Builder(AccountName accountName) {
+ this.account = accountName.account;
+ }
+
+ public AccountName build() {
+ return new AccountName(this);
+ }
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfo.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfo.java
new file mode 100644
index 000000000000..bdbb7afbeba1
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfo.java
@@ -0,0 +1,1595 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+/**
+ *
+ *
+ *
+ * Represents a customer’s physical address.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.AddressInfo}
+ */
+@com.google.protobuf.Generated
+public final class AddressInfo extends com.google.protobuf.GeneratedMessage
+ implements
+ // @@protoc_insertion_point(message_implements:google.shopping.merchant.loyaltycustomers.v1.AddressInfo)
+ AddressInfoOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "AddressInfo");
+ }
+
+ // Use AddressInfo.newBuilder() to construct.
+ private AddressInfo(com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+
+ private AddressInfo() {
+ givenName_ = "";
+ familyName_ = "";
+ city_ = "";
+ state_ = "";
+ regionCode_ = "";
+ postalCode_ = "";
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder.class);
+ }
+
+ public static final int GIVEN_NAME_FIELD_NUMBER = 1;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object givenName_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The givenName.
+ */
+ @java.lang.Override
+ public java.lang.String getGivenName() {
+ java.lang.Object ref = givenName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ givenName_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for givenName.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getGivenNameBytes() {
+ java.lang.Object ref = givenName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ givenName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int FAMILY_NAME_FIELD_NUMBER = 2;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object familyName_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The familyName.
+ */
+ @java.lang.Override
+ public java.lang.String getFamilyName() {
+ java.lang.Object ref = familyName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ familyName_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for familyName.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getFamilyNameBytes() {
+ java.lang.Object ref = familyName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ familyName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int CITY_FIELD_NUMBER = 3;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object city_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The city.
+ */
+ @java.lang.Override
+ public java.lang.String getCity() {
+ java.lang.Object ref = city_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ city_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for city.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getCityBytes() {
+ java.lang.Object ref = city_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ city_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int STATE_FIELD_NUMBER = 4;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object state_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The state.
+ */
+ @java.lang.Override
+ public java.lang.String getState() {
+ java.lang.Object ref = state_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ state_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for state.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getStateBytes() {
+ java.lang.Object ref = state_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ state_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int REGION_CODE_FIELD_NUMBER = 5;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object regionCode_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The regionCode.
+ */
+ @java.lang.Override
+ public java.lang.String getRegionCode() {
+ java.lang.Object ref = regionCode_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ regionCode_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for regionCode.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getRegionCodeBytes() {
+ java.lang.Object ref = regionCode_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ regionCode_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int POSTAL_CODE_FIELD_NUMBER = 6;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object postalCode_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The postalCode.
+ */
+ @java.lang.Override
+ public java.lang.String getPostalCode() {
+ java.lang.Object ref = postalCode_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ postalCode_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for postalCode.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getPostalCodeBytes() {
+ java.lang.Object ref = postalCode_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ postalCode_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(givenName_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 1, givenName_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(familyName_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 2, familyName_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(city_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 3, city_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(state_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 4, state_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(regionCode_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 5, regionCode_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(postalCode_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 6, postalCode_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(givenName_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(1, givenName_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(familyName_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(2, familyName_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(city_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(3, city_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(state_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(4, state_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(regionCode_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(5, regionCode_);
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(postalCode_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(6, postalCode_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo)) {
+ return super.equals(obj);
+ }
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo other =
+ (com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo) obj;
+
+ if (!getGivenName().equals(other.getGivenName())) return false;
+ if (!getFamilyName().equals(other.getFamilyName())) return false;
+ if (!getCity().equals(other.getCity())) return false;
+ if (!getState().equals(other.getState())) return false;
+ if (!getRegionCode().equals(other.getRegionCode())) return false;
+ if (!getPostalCode().equals(other.getPostalCode())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + GIVEN_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getGivenName().hashCode();
+ hash = (37 * hash) + FAMILY_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getFamilyName().hashCode();
+ hash = (37 * hash) + CITY_FIELD_NUMBER;
+ hash = (53 * hash) + getCity().hashCode();
+ hash = (37 * hash) + STATE_FIELD_NUMBER;
+ hash = (53 * hash) + getState().hashCode();
+ hash = (37 * hash) + REGION_CODE_FIELD_NUMBER;
+ hash = (53 * hash) + getRegionCode().hashCode();
+ hash = (37 * hash) + POSTAL_CODE_FIELD_NUMBER;
+ hash = (53 * hash) + getPostalCode().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseDelimitedFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseDelimitedFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ *
+ *
+ * Represents a customer’s physical address.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.AddressInfo}
+ */
+ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder
+ implements
+ // @@protoc_insertion_point(builder_implements:google.shopping.merchant.loyaltycustomers.v1.AddressInfo)
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder.class);
+ }
+
+ // Construct using com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.newBuilder()
+ private Builder() {}
+
+ private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ }
+
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ bitField0_ = 0;
+ givenName_ = "";
+ familyName_ = "";
+ city_ = "";
+ state_ = "";
+ regionCode_ = "";
+ postalCode_ = "";
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo
+ getDefaultInstanceForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo build() {
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo buildPartial() {
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo result =
+ new com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo(this);
+ if (bitField0_ != 0) {
+ buildPartial0(result);
+ }
+ onBuilt();
+ return result;
+ }
+
+ private void buildPartial0(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo result) {
+ int from_bitField0_ = bitField0_;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ result.givenName_ = givenName_;
+ }
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ result.familyName_ = familyName_;
+ }
+ if (((from_bitField0_ & 0x00000004) != 0)) {
+ result.city_ = city_;
+ }
+ if (((from_bitField0_ & 0x00000008) != 0)) {
+ result.state_ = state_;
+ }
+ if (((from_bitField0_ & 0x00000010) != 0)) {
+ result.regionCode_ = regionCode_;
+ }
+ if (((from_bitField0_ & 0x00000020) != 0)) {
+ result.postalCode_ = postalCode_;
+ }
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo) {
+ return mergeFrom((com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo) other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo other) {
+ if (other
+ == com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance())
+ return this;
+ if (!other.getGivenName().isEmpty()) {
+ givenName_ = other.givenName_;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ }
+ if (!other.getFamilyName().isEmpty()) {
+ familyName_ = other.familyName_;
+ bitField0_ |= 0x00000002;
+ onChanged();
+ }
+ if (!other.getCity().isEmpty()) {
+ city_ = other.city_;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ }
+ if (!other.getState().isEmpty()) {
+ state_ = other.state_;
+ bitField0_ |= 0x00000008;
+ onChanged();
+ }
+ if (!other.getRegionCode().isEmpty()) {
+ regionCode_ = other.regionCode_;
+ bitField0_ |= 0x00000010;
+ onChanged();
+ }
+ if (!other.getPostalCode().isEmpty()) {
+ postalCode_ = other.postalCode_;
+ bitField0_ |= 0x00000020;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10:
+ {
+ givenName_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000001;
+ break;
+ } // case 10
+ case 18:
+ {
+ familyName_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000002;
+ break;
+ } // case 18
+ case 26:
+ {
+ city_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000004;
+ break;
+ } // case 26
+ case 34:
+ {
+ state_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000008;
+ break;
+ } // case 34
+ case 42:
+ {
+ regionCode_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000010;
+ break;
+ } // case 42
+ case 50:
+ {
+ postalCode_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000020;
+ break;
+ } // case 50
+ default:
+ {
+ if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+ done = true; // was an endgroup tag
+ }
+ break;
+ } // default:
+ } // switch (tag)
+ } // while (!done)
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.unwrapIOException();
+ } finally {
+ onChanged();
+ } // finally
+ return this;
+ }
+
+ private int bitField0_;
+
+ private java.lang.Object givenName_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The givenName.
+ */
+ public java.lang.String getGivenName() {
+ java.lang.Object ref = givenName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ givenName_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for givenName.
+ */
+ public com.google.protobuf.ByteString getGivenNameBytes() {
+ java.lang.Object ref = givenName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ givenName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The givenName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setGivenName(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ givenName_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearGivenName() {
+ givenName_ = getDefaultInstance().getGivenName();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for givenName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setGivenNameBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ givenName_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object familyName_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The familyName.
+ */
+ public java.lang.String getFamilyName() {
+ java.lang.Object ref = familyName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ familyName_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for familyName.
+ */
+ public com.google.protobuf.ByteString getFamilyNameBytes() {
+ java.lang.Object ref = familyName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ familyName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The familyName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setFamilyName(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ familyName_ = value;
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearFamilyName() {
+ familyName_ = getDefaultInstance().getFamilyName();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for familyName to set.
+ * @return This builder for chaining.
+ */
+ public Builder setFamilyNameBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ familyName_ = value;
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object city_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The city.
+ */
+ public java.lang.String getCity() {
+ java.lang.Object ref = city_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ city_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for city.
+ */
+ public com.google.protobuf.ByteString getCityBytes() {
+ java.lang.Object ref = city_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ city_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The city to set.
+ * @return This builder for chaining.
+ */
+ public Builder setCity(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ city_ = value;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearCity() {
+ city_ = getDefaultInstance().getCity();
+ bitField0_ = (bitField0_ & ~0x00000004);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for city to set.
+ * @return This builder for chaining.
+ */
+ public Builder setCityBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ city_ = value;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object state_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The state.
+ */
+ public java.lang.String getState() {
+ java.lang.Object ref = state_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ state_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for state.
+ */
+ public com.google.protobuf.ByteString getStateBytes() {
+ java.lang.Object ref = state_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ state_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The state to set.
+ * @return This builder for chaining.
+ */
+ public Builder setState(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ state_ = value;
+ bitField0_ |= 0x00000008;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearState() {
+ state_ = getDefaultInstance().getState();
+ bitField0_ = (bitField0_ & ~0x00000008);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for state to set.
+ * @return This builder for chaining.
+ */
+ public Builder setStateBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ state_ = value;
+ bitField0_ |= 0x00000008;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object regionCode_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The regionCode.
+ */
+ public java.lang.String getRegionCode() {
+ java.lang.Object ref = regionCode_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ regionCode_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for regionCode.
+ */
+ public com.google.protobuf.ByteString getRegionCodeBytes() {
+ java.lang.Object ref = regionCode_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ regionCode_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The regionCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setRegionCode(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ regionCode_ = value;
+ bitField0_ |= 0x00000010;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearRegionCode() {
+ regionCode_ = getDefaultInstance().getRegionCode();
+ bitField0_ = (bitField0_ & ~0x00000010);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for regionCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setRegionCodeBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ regionCode_ = value;
+ bitField0_ |= 0x00000010;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object postalCode_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The postalCode.
+ */
+ public java.lang.String getPostalCode() {
+ java.lang.Object ref = postalCode_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ postalCode_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for postalCode.
+ */
+ public com.google.protobuf.ByteString getPostalCodeBytes() {
+ java.lang.Object ref = postalCode_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ postalCode_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The postalCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPostalCode(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ postalCode_ = value;
+ bitField0_ |= 0x00000020;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearPostalCode() {
+ postalCode_ = getDefaultInstance().getPostalCode();
+ bitField0_ = (bitField0_ & ~0x00000020);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for postalCode to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPostalCodeBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ postalCode_ = value;
+ bitField0_ |= 0x00000020;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:google.shopping.merchant.loyaltycustomers.v1.AddressInfo)
+ }
+
+ // @@protoc_insertion_point(class_scope:google.shopping.merchant.loyaltycustomers.v1.AddressInfo)
+ private static final com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo
+ DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo();
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser PARSER =
+ new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public AddressInfo parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ Builder builder = newBuilder();
+ try {
+ builder.mergeFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(builder.buildPartial());
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(e)
+ .setUnfinishedMessage(builder.buildPartial());
+ }
+ return builder.buildPartial();
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfoOrBuilder.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfoOrBuilder.java
new file mode 100644
index 000000000000..967bd8dd8569
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/AddressInfoOrBuilder.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public interface AddressInfoOrBuilder
+ extends
+ // @@protoc_insertion_point(interface_extends:google.shopping.merchant.loyaltycustomers.v1.AddressInfo)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The givenName.
+ */
+ java.lang.String getGivenName();
+
+ /**
+ *
+ *
+ *
+ * Optional. The given name of the customer.
+ *
+ *
+ * string given_name = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for givenName.
+ */
+ com.google.protobuf.ByteString getGivenNameBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The familyName.
+ */
+ java.lang.String getFamilyName();
+
+ /**
+ *
+ *
+ *
+ * Optional. The family name of the customer.
+ *
+ *
+ * string family_name = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for familyName.
+ */
+ com.google.protobuf.ByteString getFamilyNameBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The city.
+ */
+ java.lang.String getCity();
+
+ /**
+ *
+ *
+ *
+ * Optional. The city of the customer.
+ *
+ *
+ * string city = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for city.
+ */
+ com.google.protobuf.ByteString getCityBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The state.
+ */
+ java.lang.String getState();
+
+ /**
+ *
+ *
+ *
+ * Optional. The state or province of the customer.
+ *
+ *
+ * string state = 4 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for state.
+ */
+ com.google.protobuf.ByteString getStateBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The regionCode.
+ */
+ java.lang.String getRegionCode();
+
+ /**
+ *
+ *
+ *
+ * Optional. The Unicode country/region code (CLDR) of the customer, such as
+ * "US" or "CH". This field is case-insensitive. For more information, see
+ * https://cldr.unicode.org/ and
+ * https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ *
+ *
+ * string region_code = 5 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for regionCode.
+ */
+ com.google.protobuf.ByteString getRegionCodeBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The postalCode.
+ */
+ java.lang.String getPostalCode();
+
+ /**
+ *
+ *
+ *
+ * Optional. The postal code (zip code) of the customer.
+ *
+ * **Format Rules:**
+ *
+ * * **United States:** 5-digit zip codes (e.g., "94108").
+ *
+ *
+ * string postal_code = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for postalCode.
+ */
+ com.google.protobuf.ByteString getPostalCodeBytes();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomer.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomer.java
new file mode 100644
index 000000000000..0eb6f5d23878
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomer.java
@@ -0,0 +1,1339 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+/**
+ *
+ *
+ *
+ * Represents a customer’s loyalty information.
+ * Represents loyalty customer data in `ManageLoyaltyCustomerMatch` API, but
+ * is not a resource that can be retrieved or listed by other methods.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer}
+ */
+@com.google.protobuf.Generated
+public final class LoyaltyCustomer extends com.google.protobuf.GeneratedMessage
+ implements
+ // @@protoc_insertion_point(message_implements:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)
+ LoyaltyCustomerOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "LoyaltyCustomer");
+ }
+
+ // Use LoyaltyCustomer.newBuilder() to construct.
+ private LoyaltyCustomer(com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+
+ private LoyaltyCustomer() {
+ loyaltyTier_ = 0;
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder.class);
+ }
+
+ /**
+ *
+ *
+ *
+ * The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ * Protobuf enum {@code google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier}
+ */
+ public enum LoyaltyTier implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ *
+ *
+ *
+ * Loyalty tier unspecified.
+ *
+ *
+ * LOYALTY_TIER_UNSPECIFIED = 0;
+ */
+ LOYALTY_TIER_UNSPECIFIED(0),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 1.
+ *
+ *
+ * TIER1 = 1;
+ */
+ TIER1(1),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 2.
+ *
+ *
+ * TIER2 = 2;
+ */
+ TIER2(2),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 3.
+ *
+ *
+ * TIER3 = 3;
+ */
+ TIER3(3),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 4.
+ *
+ *
+ * TIER4 = 4;
+ */
+ TIER4(4),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 5.
+ *
+ *
+ * TIER5 = 5;
+ */
+ TIER5(5),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 6.
+ *
+ *
+ * TIER6 = 6;
+ */
+ TIER6(6),
+ /**
+ *
+ *
+ *
+ * Loyalty tier 7.
+ *
+ *
+ * TIER7 = 7;
+ */
+ TIER7(7),
+ /**
+ *
+ *
+ *
+ * Disassociates the user from any loyalty tier. Only set to “NON_MEMBER”
+ * when the intent is to remove the user association from Google organic
+ * loyalty customer match experience.
+ *
+ *
+ * NON_MEMBER = 8;
+ */
+ NON_MEMBER(8),
+ UNRECOGNIZED(-1),
+ ;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "LoyaltyTier");
+ }
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier unspecified.
+ *
+ *
+ * LOYALTY_TIER_UNSPECIFIED = 0;
+ */
+ public static final int LOYALTY_TIER_UNSPECIFIED_VALUE = 0;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 1.
+ *
+ *
+ * TIER1 = 1;
+ */
+ public static final int TIER1_VALUE = 1;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 2.
+ *
+ *
+ * TIER2 = 2;
+ */
+ public static final int TIER2_VALUE = 2;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 3.
+ *
+ *
+ * TIER3 = 3;
+ */
+ public static final int TIER3_VALUE = 3;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 4.
+ *
+ *
+ * TIER4 = 4;
+ */
+ public static final int TIER4_VALUE = 4;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 5.
+ *
+ *
+ * TIER5 = 5;
+ */
+ public static final int TIER5_VALUE = 5;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 6.
+ *
+ *
+ * TIER6 = 6;
+ */
+ public static final int TIER6_VALUE = 6;
+
+ /**
+ *
+ *
+ *
+ * Loyalty tier 7.
+ *
+ *
+ * TIER7 = 7;
+ */
+ public static final int TIER7_VALUE = 7;
+
+ /**
+ *
+ *
+ *
+ * Disassociates the user from any loyalty tier. Only set to “NON_MEMBER”
+ * when the intent is to remove the user association from Google organic
+ * loyalty customer match experience.
+ *
+ *
+ * NON_MEMBER = 8;
+ */
+ public static final int NON_MEMBER_VALUE = 8;
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @param value The numeric wire value of the corresponding enum entry.
+ * @return The enum associated with the given numeric wire value.
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static LoyaltyTier valueOf(int value) {
+ return forNumber(value);
+ }
+
+ /**
+ * @param value The numeric wire value of the corresponding enum entry.
+ * @return The enum associated with the given numeric wire value.
+ */
+ public static LoyaltyTier forNumber(int value) {
+ switch (value) {
+ case 0:
+ return LOYALTY_TIER_UNSPECIFIED;
+ case 1:
+ return TIER1;
+ case 2:
+ return TIER2;
+ case 3:
+ return TIER3;
+ case 4:
+ return TIER4;
+ case 5:
+ return TIER5;
+ case 6:
+ return TIER6;
+ case 7:
+ return TIER7;
+ case 8:
+ return NON_MEMBER;
+ default:
+ return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() {
+ return internalValueMap;
+ }
+
+ private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap() {
+ public LoyaltyTier findValueByNumber(int number) {
+ return LoyaltyTier.forNumber(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalStateException(
+ "Can't get the descriptor of an unrecognized enum value.");
+ }
+ return getDescriptor().getValues().get(ordinal());
+ }
+
+ public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+ return getDescriptor();
+ }
+
+ public static com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDescriptor()
+ .getEnumTypes()
+ .get(0);
+ }
+
+ private static final LoyaltyTier[] VALUES = values();
+
+ public static LoyaltyTier valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
+ }
+ if (desc.getIndex() == -1) {
+ return UNRECOGNIZED;
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int value;
+
+ private LoyaltyTier(int value) {
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier)
+ }
+
+ private int bitField0_;
+ public static final int USER_IDENTIFIER_FIELD_NUMBER = 1;
+ private com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier userIdentifier_;
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the userIdentifier field is set.
+ */
+ @java.lang.Override
+ public boolean hasUserIdentifier() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The userIdentifier.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier getUserIdentifier() {
+ return userIdentifier_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance()
+ : userIdentifier_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder
+ getUserIdentifierOrBuilder() {
+ return userIdentifier_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance()
+ : userIdentifier_;
+ }
+
+ public static final int LOYALTY_TIER_FIELD_NUMBER = 2;
+ private int loyaltyTier_ = 0;
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The enum numeric value on the wire for loyaltyTier.
+ */
+ @java.lang.Override
+ public int getLoyaltyTierValue() {
+ return loyaltyTier_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyTier.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier
+ getLoyaltyTier() {
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier result =
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier.forNumber(
+ loyaltyTier_);
+ return result == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier.UNRECOGNIZED
+ : result;
+ }
+
+ public static final int POINT_BALANCE_FIELD_NUMBER = 3;
+ private long pointBalance_ = 0L;
+
+ /**
+ *
+ *
+ *
+ * Optional. The point balance of the loyalty customer.
+ *
+ *
+ * int64 point_balance = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The pointBalance.
+ */
+ @java.lang.Override
+ public long getPointBalance() {
+ return pointBalance_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(1, getUserIdentifier());
+ }
+ if (loyaltyTier_
+ != com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier
+ .LOYALTY_TIER_UNSPECIFIED
+ .getNumber()) {
+ output.writeEnum(2, loyaltyTier_);
+ }
+ if (pointBalance_ != 0L) {
+ output.writeInt64(3, pointBalance_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getUserIdentifier());
+ }
+ if (loyaltyTier_
+ != com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier
+ .LOYALTY_TIER_UNSPECIFIED
+ .getNumber()) {
+ size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, loyaltyTier_);
+ }
+ if (pointBalance_ != 0L) {
+ size += com.google.protobuf.CodedOutputStream.computeInt64Size(3, pointBalance_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)) {
+ return super.equals(obj);
+ }
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer other =
+ (com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer) obj;
+
+ if (hasUserIdentifier() != other.hasUserIdentifier()) return false;
+ if (hasUserIdentifier()) {
+ if (!getUserIdentifier().equals(other.getUserIdentifier())) return false;
+ }
+ if (loyaltyTier_ != other.loyaltyTier_) return false;
+ if (getPointBalance() != other.getPointBalance()) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasUserIdentifier()) {
+ hash = (37 * hash) + USER_IDENTIFIER_FIELD_NUMBER;
+ hash = (53 * hash) + getUserIdentifier().hashCode();
+ }
+ hash = (37 * hash) + LOYALTY_TIER_FIELD_NUMBER;
+ hash = (53 * hash) + loyaltyTier_;
+ hash = (37 * hash) + POINT_BALANCE_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getPointBalance());
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseDelimitedFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseDelimitedFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ *
+ *
+ * Represents a customer’s loyalty information.
+ * Represents loyalty customer data in `ManageLoyaltyCustomerMatch` API, but
+ * is not a resource that can be retrieved or listed by other methods.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer}
+ */
+ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder
+ implements
+ // @@protoc_insertion_point(builder_implements:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder.class);
+ }
+
+ // Construct using com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ internalGetUserIdentifierFieldBuilder();
+ }
+ }
+
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ bitField0_ = 0;
+ userIdentifier_ = null;
+ if (userIdentifierBuilder_ != null) {
+ userIdentifierBuilder_.dispose();
+ userIdentifierBuilder_ = null;
+ }
+ loyaltyTier_ = 0;
+ pointBalance_ = 0L;
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ getDefaultInstanceForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer build() {
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer buildPartial() {
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer result =
+ new com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer(this);
+ if (bitField0_ != 0) {
+ buildPartial0(result);
+ }
+ onBuilt();
+ return result;
+ }
+
+ private void buildPartial0(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer result) {
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ result.userIdentifier_ =
+ userIdentifierBuilder_ == null ? userIdentifier_ : userIdentifierBuilder_.build();
+ to_bitField0_ |= 0x00000001;
+ }
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ result.loyaltyTier_ = loyaltyTier_;
+ }
+ if (((from_bitField0_ & 0x00000004) != 0)) {
+ result.pointBalance_ = pointBalance_;
+ }
+ result.bitField0_ |= to_bitField0_;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer) {
+ return mergeFrom((com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer) other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer other) {
+ if (other
+ == com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance())
+ return this;
+ if (other.hasUserIdentifier()) {
+ mergeUserIdentifier(other.getUserIdentifier());
+ }
+ if (other.loyaltyTier_ != 0) {
+ setLoyaltyTierValue(other.getLoyaltyTierValue());
+ }
+ if (other.getPointBalance() != 0L) {
+ setPointBalance(other.getPointBalance());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10:
+ {
+ input.readMessage(
+ internalGetUserIdentifierFieldBuilder().getBuilder(), extensionRegistry);
+ bitField0_ |= 0x00000001;
+ break;
+ } // case 10
+ case 16:
+ {
+ loyaltyTier_ = input.readEnum();
+ bitField0_ |= 0x00000002;
+ break;
+ } // case 16
+ case 24:
+ {
+ pointBalance_ = input.readInt64();
+ bitField0_ |= 0x00000004;
+ break;
+ } // case 24
+ default:
+ {
+ if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+ done = true; // was an endgroup tag
+ }
+ break;
+ } // default:
+ } // switch (tag)
+ } // while (!done)
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.unwrapIOException();
+ } finally {
+ onChanged();
+ } // finally
+ return this;
+ }
+
+ private int bitField0_;
+
+ private com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier userIdentifier_;
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder>
+ userIdentifierBuilder_;
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the userIdentifier field is set.
+ */
+ public boolean hasUserIdentifier() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The userIdentifier.
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier getUserIdentifier() {
+ if (userIdentifierBuilder_ == null) {
+ return userIdentifier_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance()
+ : userIdentifier_;
+ } else {
+ return userIdentifierBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder setUserIdentifier(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier value) {
+ if (userIdentifierBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ userIdentifier_ = value;
+ } else {
+ userIdentifierBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder setUserIdentifier(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder builderForValue) {
+ if (userIdentifierBuilder_ == null) {
+ userIdentifier_ = builderForValue.build();
+ } else {
+ userIdentifierBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder mergeUserIdentifier(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier value) {
+ if (userIdentifierBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0)
+ && userIdentifier_ != null
+ && userIdentifier_
+ != com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier
+ .getDefaultInstance()) {
+ getUserIdentifierBuilder().mergeFrom(value);
+ } else {
+ userIdentifier_ = value;
+ }
+ } else {
+ userIdentifierBuilder_.mergeFrom(value);
+ }
+ if (userIdentifier_ != null) {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ }
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder clearUserIdentifier() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ userIdentifier_ = null;
+ if (userIdentifierBuilder_ != null) {
+ userIdentifierBuilder_.dispose();
+ userIdentifierBuilder_ = null;
+ }
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder
+ getUserIdentifierBuilder() {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return internalGetUserIdentifierFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder
+ getUserIdentifierOrBuilder() {
+ if (userIdentifierBuilder_ != null) {
+ return userIdentifierBuilder_.getMessageOrBuilder();
+ } else {
+ return userIdentifier_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance()
+ : userIdentifier_;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder>
+ internalGetUserIdentifierFieldBuilder() {
+ if (userIdentifierBuilder_ == null) {
+ userIdentifierBuilder_ =
+ new com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder>(
+ getUserIdentifier(), getParentForChildren(), isClean());
+ userIdentifier_ = null;
+ }
+ return userIdentifierBuilder_;
+ }
+
+ private int loyaltyTier_ = 0;
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The enum numeric value on the wire for loyaltyTier.
+ */
+ @java.lang.Override
+ public int getLoyaltyTierValue() {
+ return loyaltyTier_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @param value The enum numeric value on the wire for loyaltyTier to set.
+ * @return This builder for chaining.
+ */
+ public Builder setLoyaltyTierValue(int value) {
+ loyaltyTier_ = value;
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyTier.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier
+ getLoyaltyTier() {
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier result =
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier.forNumber(
+ loyaltyTier_);
+ return result == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier
+ .UNRECOGNIZED
+ : result;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @param value The loyaltyTier to set.
+ * @return This builder for chaining.
+ */
+ public Builder setLoyaltyTier(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ loyaltyTier_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearLoyaltyTier() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ loyaltyTier_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private long pointBalance_;
+
+ /**
+ *
+ *
+ *
+ * Optional. The point balance of the loyalty customer.
+ *
+ *
+ * int64 point_balance = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The pointBalance.
+ */
+ @java.lang.Override
+ public long getPointBalance() {
+ return pointBalance_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The point balance of the loyalty customer.
+ *
+ *
+ * int64 point_balance = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The pointBalance to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPointBalance(long value) {
+
+ pointBalance_ = value;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The point balance of the loyalty customer.
+ *
+ *
+ * int64 point_balance = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearPointBalance() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ pointBalance_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)
+ }
+
+ // @@protoc_insertion_point(class_scope:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)
+ private static final com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer();
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser PARSER =
+ new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public LoyaltyCustomer parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ Builder builder = newBuilder();
+ try {
+ builder.mergeFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(builder.buildPartial());
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(e)
+ .setUnfinishedMessage(builder.buildPartial());
+ }
+ return builder.buildPartial();
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerOrBuilder.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerOrBuilder.java
new file mode 100644
index 000000000000..a445fb80b2c1
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerOrBuilder.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public interface LoyaltyCustomerOrBuilder
+ extends
+ // @@protoc_insertion_point(interface_extends:google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the userIdentifier field is set.
+ */
+ boolean hasUserIdentifier();
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The userIdentifier.
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier getUserIdentifier();
+
+ /**
+ *
+ *
+ *
+ * Required. The identifiers for the customer.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.UserIdentifier user_identifier = 1 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder
+ getUserIdentifierOrBuilder();
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The enum numeric value on the wire for loyaltyTier.
+ */
+ int getLoyaltyTierValue();
+
+ /**
+ *
+ *
+ *
+ * Required. The tier label of the loyalty tier the customer belongs to.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier loyalty_tier = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyTier.
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier getLoyaltyTier();
+
+ /**
+ *
+ *
+ *
+ * Optional. The point balance of the loyalty customer.
+ *
+ *
+ * int64 point_balance = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The pointBalance.
+ */
+ long getPointBalance();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerProto.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerProto.java
new file mode 100644
index 000000000000..8e72f86d9042
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/LoyaltyCustomerProto.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public final class LoyaltyCustomerProto extends com.google.protobuf.GeneratedFile {
+ private LoyaltyCustomerProto() {}
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "LoyaltyCustomerProto");
+ }
+
+ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {}
+
+ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor;
+ static final com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor;
+ static final com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor;
+ static final com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor;
+ static final com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor;
+ static final com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ return descriptor;
+ }
+
+ private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
+
+ static {
+ java.lang.String[] descriptorData = {
+ "\n"
+ + "Cgoogle/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto\022,google.sh"
+ + "opping.merchant.loyaltycustomers.v1\032\034goo"
+ + "gle/api/annotations.proto\032\027google/api/cl"
+ + "ient.proto\032\037google/api/field_behavior.proto\032\031google/api/resource.proto\"\233\001\n"
+ + "\013AddressInfo\022\027\n\n"
+ + "given_name\030\001 \001(\tB\003\340A\001\022\030\n"
+ + "\013family_name\030\002 \001(\tB\003\340A\001\022\021\n"
+ + "\004city\030\003 \001(\tB\003\340A\001\022\022\n"
+ + "\005state\030\004 \001(\tB\003\340A\001\022\030\n"
+ + "\013region_code\030\005 \001(\tB\003\340A\001\022\030\n"
+ + "\013postal_code\030\006 \001(\tB\003\340A\001\"\230\001\n"
+ + "\016UserIdentifier\022\032\n\r"
+ + "email_address\030\001 \001(\tB\003\340A\001\022O\n"
+ + "\007address\030\002"
+ + " \001(\01329.google.shopping.merchant.loyaltycustomers.v1.AddressInfoB\003\340A\001\022\031\n"
+ + "\014phone_number\030\003 \001(\tB\003\340A\001\"\372\002\n"
+ + "\017LoyaltyCustomer\022Z\n"
+ + "\017user_identifier\030\001 \001(\0132<.google.sh"
+ + "opping.merchant.loyaltycustomers.v1.UserIdentifierB\003\340A\002\022d\n"
+ + "\014loyalty_tier\030\002 \001(\0162I."
+ + "google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTierB\003\340A\002\022\032\n"
+ + "\r"
+ + "point_balance\030\003 \001(\003B\003\340A\001\"\210\001\n"
+ + "\013LoyaltyTier\022\034\n"
+ + "\030LOYALTY_TIER_UNSPECIFIED\020\000\022\t\n"
+ + "\005TIER1\020\001\022\t\n"
+ + "\005TIER2\020\002\022\t\n"
+ + "\005TIER3\020\003\022\t\n"
+ + "\005TIER4\020\004\022\t\n"
+ + "\005TIER5\020\005\022\t\n"
+ + "\005TIER6\020\006\022\t\n"
+ + "\005TIER7\020\007\022\016\n\n"
+ + "NON_MEMBER\020\010\"\275\001\n"
+ + "!ManageLoyaltyCustomerMatchRequest\022:\n"
+ + "\006parent\030\001 \001(\tB*\340A\002\372A$\n"
+ + "\"merchantapi.googleapis.com/Account\022\\\n"
+ + "\020loyalty_customer\030\002"
+ + " \001(\0132=.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerB\003\340A\002\"}\n"
+ + "\"ManageLoyaltyCustomerMatchResponse\022W\n"
+ + "\020loyalty_customer\030\001 \001(\0132=.google.shopping.m"
+ + "erchant.loyaltycustomers.v1.LoyaltyCustomer2\365\002\n"
+ + "\033LoyaltyCustomerMatchService\022\214\002\n"
+ + "\032ManageLoyaltyCustomerMatch\022O.google.shop"
+ + "ping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest\032P.google.sho"
+ + "pping.merchant.loyaltycustomers.v1.Manag"
+ + "eLoyaltyCustomerMatchResponse\"K\202\323\344\223\002E\"@/"
+ + "loyaltyCustomers/v1/{parent=accounts/*}/"
+ + "loyaltyCustomers:manage:\001*\032G\312A\032merchanta"
+ + "pi.googleapis.com\322A\'https://www.googleapis.com/auth/contentB\351\001\n"
+ + "0com.google.shopping.merchant.loyaltycustomers.v1B\024Loyalt"
+ + "yCustomerProtoP\001Zbcloud.google.com/go/sh"
+ + "opping/merchant/loyaltycustomers/apiv1/loyaltycustomerspb;loyaltycustomerspb\352A8\n"
+ + "\"merchantapi.googleapis.com/Account\022\022accounts/{account}b\006proto3"
+ };
+ descriptor =
+ com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
+ descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ com.google.api.AnnotationsProto.getDescriptor(),
+ com.google.api.ClientProto.getDescriptor(),
+ com.google.api.FieldBehaviorProto.getDescriptor(),
+ com.google.api.ResourceProto.getDescriptor(),
+ });
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor =
+ getDescriptor().getMessageType(0);
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_fieldAccessorTable =
+ new com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_AddressInfo_descriptor,
+ new java.lang.String[] {
+ "GivenName", "FamilyName", "City", "State", "RegionCode", "PostalCode",
+ });
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor =
+ getDescriptor().getMessageType(1);
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_fieldAccessorTable =
+ new com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor,
+ new java.lang.String[] {
+ "EmailAddress", "Address", "PhoneNumber",
+ });
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor =
+ getDescriptor().getMessageType(2);
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_fieldAccessorTable =
+ new com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_LoyaltyCustomer_descriptor,
+ new java.lang.String[] {
+ "UserIdentifier", "LoyaltyTier", "PointBalance",
+ });
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor =
+ getDescriptor().getMessageType(3);
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_fieldAccessorTable =
+ new com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor,
+ new java.lang.String[] {
+ "Parent", "LoyaltyCustomer",
+ });
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor =
+ getDescriptor().getMessageType(4);
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_fieldAccessorTable =
+ new com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor,
+ new java.lang.String[] {
+ "LoyaltyCustomer",
+ });
+ descriptor.resolveAllFeaturesImmutable();
+ com.google.api.AnnotationsProto.getDescriptor();
+ com.google.api.ClientProto.getDescriptor();
+ com.google.api.FieldBehaviorProto.getDescriptor();
+ com.google.api.ResourceProto.getDescriptor();
+ com.google.protobuf.ExtensionRegistry registry =
+ com.google.protobuf.ExtensionRegistry.newInstance();
+ registry.add(com.google.api.ClientProto.defaultHost);
+ registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
+ registry.add(com.google.api.AnnotationsProto.http);
+ registry.add(com.google.api.ClientProto.oauthScopes);
+ registry.add(com.google.api.ResourceProto.resourceDefinition);
+ registry.add(com.google.api.ResourceProto.resourceReference);
+ com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor(
+ descriptor, registry);
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequest.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequest.java
new file mode 100644
index 000000000000..ccaf56403a88
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequest.java
@@ -0,0 +1,978 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+/**
+ *
+ *
+ *
+ * Request message for the ManageLoyaltyCustomerMatch method.
+ *
+ *
+ * Protobuf type {@code
+ * google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest}
+ */
+@com.google.protobuf.Generated
+public final class ManageLoyaltyCustomerMatchRequest extends com.google.protobuf.GeneratedMessage
+ implements
+ // @@protoc_insertion_point(message_implements:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ ManageLoyaltyCustomerMatchRequestOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "ManageLoyaltyCustomerMatchRequest");
+ }
+
+ // Use ManageLoyaltyCustomerMatchRequest.newBuilder() to construct.
+ private ManageLoyaltyCustomerMatchRequest(
+ com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+
+ private ManageLoyaltyCustomerMatchRequest() {
+ parent_ = "";
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .class,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int PARENT_FIELD_NUMBER = 1;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object parent_ = "";
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The parent.
+ */
+ @java.lang.Override
+ public java.lang.String getParent() {
+ java.lang.Object ref = parent_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ parent_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The bytes for parent.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getParentBytes() {
+ java.lang.Object ref = parent_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ parent_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int LOYALTY_CUSTOMER_FIELD_NUMBER = 2;
+ private com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyaltyCustomer_;
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ @java.lang.Override
+ public boolean hasLoyaltyCustomer() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer() {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder() {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(parent_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 1, parent_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(2, getLoyaltyCustomer());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(parent_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(1, parent_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLoyaltyCustomer());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj
+ instanceof
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)) {
+ return super.equals(obj);
+ }
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest other =
+ (com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest) obj;
+
+ if (!getParent().equals(other.getParent())) return false;
+ if (hasLoyaltyCustomer() != other.hasLoyaltyCustomer()) return false;
+ if (hasLoyaltyCustomer()) {
+ if (!getLoyaltyCustomer().equals(other.getLoyaltyCustomer())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + PARENT_FIELD_NUMBER;
+ hash = (53 * hash) + getParent().hashCode();
+ if (hasLoyaltyCustomer()) {
+ hash = (37 * hash) + LOYALTY_CUSTOMER_FIELD_NUMBER;
+ hash = (53 * hash) + getLoyaltyCustomer().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(
+ java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseDelimitedFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ *
+ *
+ * Request message for the ManageLoyaltyCustomerMatch method.
+ *
+ *
+ * Protobuf type {@code
+ * google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest}
+ */
+ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder
+ implements
+ // @@protoc_insertion_point(builder_implements:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequestOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .class,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .Builder.class);
+ }
+
+ // Construct using
+ // com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ internalGetLoyaltyCustomerFieldBuilder();
+ }
+ }
+
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ bitField0_ = 0;
+ parent_ = "";
+ loyaltyCustomer_ = null;
+ if (loyaltyCustomerBuilder_ != null) {
+ loyaltyCustomerBuilder_.dispose();
+ loyaltyCustomerBuilder_ = null;
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchRequest_descriptor;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ getDefaultInstanceForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ build() {
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest result =
+ buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ buildPartial() {
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest result =
+ new com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest(
+ this);
+ if (bitField0_ != 0) {
+ buildPartial0(result);
+ }
+ onBuilt();
+ return result;
+ }
+
+ private void buildPartial0(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest result) {
+ int from_bitField0_ = bitField0_;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ result.parent_ = parent_;
+ }
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ result.loyaltyCustomer_ =
+ loyaltyCustomerBuilder_ == null ? loyaltyCustomer_ : loyaltyCustomerBuilder_.build();
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ |= to_bitField0_;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other
+ instanceof
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest) {
+ return mergeFrom(
+ (com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest other) {
+ if (other
+ == com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ .getDefaultInstance()) return this;
+ if (!other.getParent().isEmpty()) {
+ parent_ = other.parent_;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ }
+ if (other.hasLoyaltyCustomer()) {
+ mergeLoyaltyCustomer(other.getLoyaltyCustomer());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10:
+ {
+ parent_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000001;
+ break;
+ } // case 10
+ case 18:
+ {
+ input.readMessage(
+ internalGetLoyaltyCustomerFieldBuilder().getBuilder(), extensionRegistry);
+ bitField0_ |= 0x00000002;
+ break;
+ } // case 18
+ default:
+ {
+ if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+ done = true; // was an endgroup tag
+ }
+ break;
+ } // default:
+ } // switch (tag)
+ } // while (!done)
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.unwrapIOException();
+ } finally {
+ onChanged();
+ } // finally
+ return this;
+ }
+
+ private int bitField0_;
+
+ private java.lang.Object parent_ = "";
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The parent.
+ */
+ public java.lang.String getParent() {
+ java.lang.Object ref = parent_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ parent_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The bytes for parent.
+ */
+ public com.google.protobuf.ByteString getParentBytes() {
+ java.lang.Object ref = parent_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ parent_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @param value The parent to set.
+ * @return This builder for chaining.
+ */
+ public Builder setParent(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ parent_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearParent() {
+ parent_ = getDefaultInstance().getParent();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @param value The bytes for parent to set.
+ * @return This builder for chaining.
+ */
+ public Builder setParentBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ parent_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ private com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyaltyCustomer_;
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>
+ loyaltyCustomerBuilder_;
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ public boolean hasLoyaltyCustomer() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer() {
+ if (loyaltyCustomerBuilder_ == null) {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ } else {
+ return loyaltyCustomerBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder setLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer value) {
+ if (loyaltyCustomerBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ loyaltyCustomer_ = value;
+ } else {
+ loyaltyCustomerBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder setLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder builderForValue) {
+ if (loyaltyCustomerBuilder_ == null) {
+ loyaltyCustomer_ = builderForValue.build();
+ } else {
+ loyaltyCustomerBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder mergeLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer value) {
+ if (loyaltyCustomerBuilder_ == null) {
+ if (((bitField0_ & 0x00000002) != 0)
+ && loyaltyCustomer_ != null
+ && loyaltyCustomer_
+ != com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ .getDefaultInstance()) {
+ getLoyaltyCustomerBuilder().mergeFrom(value);
+ } else {
+ loyaltyCustomer_ = value;
+ }
+ } else {
+ loyaltyCustomerBuilder_.mergeFrom(value);
+ }
+ if (loyaltyCustomer_ != null) {
+ bitField0_ |= 0x00000002;
+ onChanged();
+ }
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public Builder clearLoyaltyCustomer() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ loyaltyCustomer_ = null;
+ if (loyaltyCustomerBuilder_ != null) {
+ loyaltyCustomerBuilder_.dispose();
+ loyaltyCustomerBuilder_ = null;
+ }
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder
+ getLoyaltyCustomerBuilder() {
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return internalGetLoyaltyCustomerFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder() {
+ if (loyaltyCustomerBuilder_ != null) {
+ return loyaltyCustomerBuilder_.getMessageOrBuilder();
+ } else {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>
+ internalGetLoyaltyCustomerFieldBuilder() {
+ if (loyaltyCustomerBuilder_ == null) {
+ loyaltyCustomerBuilder_ =
+ new com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>(
+ getLoyaltyCustomer(), getParentForChildren(), isClean());
+ loyaltyCustomer_ = null;
+ }
+ return loyaltyCustomerBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ }
+
+ // @@protoc_insertion_point(class_scope:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ private static final com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchRequest
+ DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE =
+ new com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest();
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser PARSER =
+ new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public ManageLoyaltyCustomerMatchRequest parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ Builder builder = newBuilder();
+ try {
+ builder.mergeFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(builder.buildPartial());
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(e)
+ .setUnfinishedMessage(builder.buildPartial());
+ }
+ return builder.buildPartial();
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest
+ getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequestOrBuilder.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequestOrBuilder.java
new file mode 100644
index 000000000000..1f8f76ca189c
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchRequestOrBuilder.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public interface ManageLoyaltyCustomerMatchRequestOrBuilder
+ extends
+ // @@protoc_insertion_point(interface_extends:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The parent.
+ */
+ java.lang.String getParent();
+
+ /**
+ *
+ *
+ *
+ * Required. The parent account where this loyalty customer will be handled.
+ * Format: `accounts/{account}`
+ *
+ *
+ *
+ * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
+ *
+ *
+ * @return The bytes for parent.
+ */
+ com.google.protobuf.ByteString getParentBytes();
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ boolean hasLoyaltyCustomer();
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer();
+
+ /**
+ *
+ *
+ *
+ * Required. The loyalty customer to insert, update, or remove.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 2 [(.google.api.field_behavior) = REQUIRED];
+ *
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponse.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponse.java
new file mode 100644
index 000000000000..23a53aa939e5
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponse.java
@@ -0,0 +1,792 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+/**
+ *
+ *
+ *
+ * Response message for the ManageLoyaltyCustomerMatch method.
+ *
+ *
+ * Protobuf type {@code
+ * google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse}
+ */
+@com.google.protobuf.Generated
+public final class ManageLoyaltyCustomerMatchResponse extends com.google.protobuf.GeneratedMessage
+ implements
+ // @@protoc_insertion_point(message_implements:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ ManageLoyaltyCustomerMatchResponseOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "ManageLoyaltyCustomerMatchResponse");
+ }
+
+ // Use ManageLoyaltyCustomerMatchResponse.newBuilder() to construct.
+ private ManageLoyaltyCustomerMatchResponse(
+ com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+
+ private ManageLoyaltyCustomerMatchResponse() {}
+
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .class,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int LOYALTY_CUSTOMER_FIELD_NUMBER = 1;
+ private com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyaltyCustomer_;
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ @java.lang.Override
+ public boolean hasLoyaltyCustomer() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer() {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder() {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(1, getLoyaltyCustomer());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLoyaltyCustomer());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj
+ instanceof
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)) {
+ return super.equals(obj);
+ }
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse other =
+ (com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse) obj;
+
+ if (hasLoyaltyCustomer() != other.hasLoyaltyCustomer()) return false;
+ if (hasLoyaltyCustomer()) {
+ if (!getLoyaltyCustomer().equals(other.getLoyaltyCustomer())) return false;
+ }
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasLoyaltyCustomer()) {
+ hash = (37 * hash) + LOYALTY_CUSTOMER_FIELD_NUMBER;
+ hash = (53 * hash) + getLoyaltyCustomer().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(
+ java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseDelimitedFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ *
+ *
+ * Response message for the ManageLoyaltyCustomerMatch method.
+ *
+ *
+ * Protobuf type {@code
+ * google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse}
+ */
+ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder
+ implements
+ // @@protoc_insertion_point(builder_implements:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .class,
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .Builder.class);
+ }
+
+ // Construct using
+ // com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ internalGetLoyaltyCustomerFieldBuilder();
+ }
+ }
+
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ bitField0_ = 0;
+ loyaltyCustomer_ = null;
+ if (loyaltyCustomerBuilder_ != null) {
+ loyaltyCustomerBuilder_.dispose();
+ loyaltyCustomerBuilder_ = null;
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_ManageLoyaltyCustomerMatchResponse_descriptor;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ getDefaultInstanceForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ build() {
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse result =
+ buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ buildPartial() {
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse result =
+ new com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse(
+ this);
+ if (bitField0_ != 0) {
+ buildPartial0(result);
+ }
+ onBuilt();
+ return result;
+ }
+
+ private void buildPartial0(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ result) {
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ result.loyaltyCustomer_ =
+ loyaltyCustomerBuilder_ == null ? loyaltyCustomer_ : loyaltyCustomerBuilder_.build();
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ |= to_bitField0_;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other
+ instanceof
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse) {
+ return mergeFrom(
+ (com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(
+ com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse other) {
+ if (other
+ == com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ .getDefaultInstance()) return this;
+ if (other.hasLoyaltyCustomer()) {
+ mergeLoyaltyCustomer(other.getLoyaltyCustomer());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10:
+ {
+ input.readMessage(
+ internalGetLoyaltyCustomerFieldBuilder().getBuilder(), extensionRegistry);
+ bitField0_ |= 0x00000001;
+ break;
+ } // case 10
+ default:
+ {
+ if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+ done = true; // was an endgroup tag
+ }
+ break;
+ } // default:
+ } // switch (tag)
+ } // while (!done)
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.unwrapIOException();
+ } finally {
+ onChanged();
+ } // finally
+ return this;
+ }
+
+ private int bitField0_;
+
+ private com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyaltyCustomer_;
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>
+ loyaltyCustomerBuilder_;
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ public boolean hasLoyaltyCustomer() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer() {
+ if (loyaltyCustomerBuilder_ == null) {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ } else {
+ return loyaltyCustomerBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public Builder setLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer value) {
+ if (loyaltyCustomerBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ loyaltyCustomer_ = value;
+ } else {
+ loyaltyCustomerBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public Builder setLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder builderForValue) {
+ if (loyaltyCustomerBuilder_ == null) {
+ loyaltyCustomer_ = builderForValue.build();
+ } else {
+ loyaltyCustomerBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public Builder mergeLoyaltyCustomer(
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer value) {
+ if (loyaltyCustomerBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) != 0)
+ && loyaltyCustomer_ != null
+ && loyaltyCustomer_
+ != com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer
+ .getDefaultInstance()) {
+ getLoyaltyCustomerBuilder().mergeFrom(value);
+ } else {
+ loyaltyCustomer_ = value;
+ }
+ } else {
+ loyaltyCustomerBuilder_.mergeFrom(value);
+ }
+ if (loyaltyCustomer_ != null) {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ }
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public Builder clearLoyaltyCustomer() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ loyaltyCustomer_ = null;
+ if (loyaltyCustomerBuilder_ != null) {
+ loyaltyCustomerBuilder_.dispose();
+ loyaltyCustomerBuilder_ = null;
+ }
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder
+ getLoyaltyCustomerBuilder() {
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return internalGetLoyaltyCustomerFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder() {
+ if (loyaltyCustomerBuilder_ != null) {
+ return loyaltyCustomerBuilder_.getMessageOrBuilder();
+ } else {
+ return loyaltyCustomer_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.getDefaultInstance()
+ : loyaltyCustomer_;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>
+ internalGetLoyaltyCustomerFieldBuilder() {
+ if (loyaltyCustomerBuilder_ == null) {
+ loyaltyCustomerBuilder_ =
+ new com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder>(
+ getLoyaltyCustomer(), getParentForChildren(), isClean());
+ loyaltyCustomer_ = null;
+ }
+ return loyaltyCustomerBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ }
+
+ // @@protoc_insertion_point(class_scope:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ private static final com.google.shopping.merchant.loyaltycustomers.v1
+ .ManageLoyaltyCustomerMatchResponse
+ DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE =
+ new com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse();
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser PARSER =
+ new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public ManageLoyaltyCustomerMatchResponse parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ Builder builder = newBuilder();
+ try {
+ builder.mergeFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(builder.buildPartial());
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(e)
+ .setUnfinishedMessage(builder.buildPartial());
+ }
+ return builder.buildPartial();
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse
+ getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponseOrBuilder.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponseOrBuilder.java
new file mode 100644
index 000000000000..27efe73f87f3
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/ManageLoyaltyCustomerMatchResponseOrBuilder.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public interface ManageLoyaltyCustomerMatchResponseOrBuilder
+ extends
+ // @@protoc_insertion_point(interface_extends:google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return Whether the loyaltyCustomer field is set.
+ */
+ boolean hasLoyaltyCustomer();
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ *
+ * @return The loyaltyCustomer.
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer getLoyaltyCustomer();
+
+ /**
+ *
+ *
+ *
+ * The loyalty customer that was inserted, updated, or removed.
+ * If the customer's identifier cannot be matched to a Google account or if
+ * the user has not opted into loyalty personalization, this field will
+ * contain a default `LoyaltyCustomer` instance.
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer loyalty_customer = 1;
+ *
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerOrBuilder
+ getLoyaltyCustomerOrBuilder();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifier.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifier.java
new file mode 100644
index 000000000000..77e61e9ec0f9
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifier.java
@@ -0,0 +1,1131 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+/**
+ *
+ *
+ *
+ * The user identifiers associated with the customer.
+ * At least one of the fields within this message must be provided.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.UserIdentifier}
+ */
+@com.google.protobuf.Generated
+public final class UserIdentifier extends com.google.protobuf.GeneratedMessage
+ implements
+ // @@protoc_insertion_point(message_implements:google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)
+ UserIdentifierOrBuilder {
+ private static final long serialVersionUID = 0L;
+
+ static {
+ com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
+ com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
+ /* major= */ 4,
+ /* minor= */ 33,
+ /* patch= */ 6,
+ /* suffix= */ "",
+ "UserIdentifier");
+ }
+
+ // Use UserIdentifier.newBuilder() to construct.
+ private UserIdentifier(com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+
+ private UserIdentifier() {
+ emailAddress_ = "";
+ phoneNumber_ = "";
+ }
+
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int EMAIL_ADDRESS_FIELD_NUMBER = 1;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object emailAddress_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The emailAddress.
+ */
+ @java.lang.Override
+ public java.lang.String getEmailAddress() {
+ java.lang.Object ref = emailAddress_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ emailAddress_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for emailAddress.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getEmailAddressBytes() {
+ java.lang.Object ref = emailAddress_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ emailAddress_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int ADDRESS_FIELD_NUMBER = 2;
+ private com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo address_;
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return Whether the address field is set.
+ */
+ @java.lang.Override
+ public boolean hasAddress() {
+ return ((bitField0_ & 0x00000001) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return The address.
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo getAddress() {
+ return address_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance()
+ : address_;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder
+ getAddressOrBuilder() {
+ return address_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance()
+ : address_;
+ }
+
+ public static final int PHONE_NUMBER_FIELD_NUMBER = 3;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object phoneNumber_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The phoneNumber.
+ */
+ @java.lang.Override
+ public java.lang.String getPhoneNumber() {
+ java.lang.Object ref = phoneNumber_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ phoneNumber_ = s;
+ return s;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for phoneNumber.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getPhoneNumberBytes() {
+ java.lang.Object ref = phoneNumber_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ phoneNumber_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private byte memoizedIsInitialized = -1;
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ @java.lang.Override
+ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(emailAddress_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 1, emailAddress_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(2, getAddress());
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(phoneNumber_)) {
+ com.google.protobuf.GeneratedMessage.writeString(output, 3, phoneNumber_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ @java.lang.Override
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(emailAddress_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(1, emailAddress_);
+ }
+ if (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getAddress());
+ }
+ if (!com.google.protobuf.GeneratedMessage.isStringEmpty(phoneNumber_)) {
+ size += com.google.protobuf.GeneratedMessage.computeStringSize(3, phoneNumber_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)) {
+ return super.equals(obj);
+ }
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier other =
+ (com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier) obj;
+
+ if (!getEmailAddress().equals(other.getEmailAddress())) return false;
+ if (hasAddress() != other.hasAddress()) return false;
+ if (hasAddress()) {
+ if (!getAddress().equals(other.getAddress())) return false;
+ }
+ if (!getPhoneNumber().equals(other.getPhoneNumber())) return false;
+ if (!getUnknownFields().equals(other.getUnknownFields())) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + EMAIL_ADDRESS_FIELD_NUMBER;
+ hash = (53 * hash) + getEmailAddress().hashCode();
+ if (hasAddress()) {
+ hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
+ hash = (53 * hash) + getAddress().hashCode();
+ }
+ hash = (37 * hash) + PHONE_NUMBER_FIELD_NUMBER;
+ hash = (53 * hash) + getPhoneNumber().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseDelimitedFrom(
+ java.io.InputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseDelimitedFrom(
+ java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessage.parseWithIOException(
+ PARSER, input, extensionRegistry);
+ }
+
+ @java.lang.Override
+ public Builder newBuilderForType() {
+ return newBuilder();
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+
+ public static Builder newBuilder(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ @java.lang.Override
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+
+ /**
+ *
+ *
+ *
+ * The user identifiers associated with the customer.
+ * At least one of the fields within this message must be provided.
+ *
+ *
+ * Protobuf type {@code google.shopping.merchant.loyaltycustomers.v1.UserIdentifier}
+ */
+ public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder
+ implements
+ // @@protoc_insertion_point(builder_implements:google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifierOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor;
+ }
+
+ @java.lang.Override
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.class,
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.Builder.class);
+ }
+
+ // Construct using com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ internalGetAddressFieldBuilder();
+ }
+ }
+
+ @java.lang.Override
+ public Builder clear() {
+ super.clear();
+ bitField0_ = 0;
+ emailAddress_ = "";
+ address_ = null;
+ if (addressBuilder_ != null) {
+ addressBuilder_.dispose();
+ addressBuilder_ = null;
+ }
+ phoneNumber_ = "";
+ return this;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerProto
+ .internal_static_google_shopping_merchant_loyaltycustomers_v1_UserIdentifier_descriptor;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier
+ getDefaultInstanceForType() {
+ return com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance();
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier build() {
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier buildPartial() {
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier result =
+ new com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier(this);
+ if (bitField0_ != 0) {
+ buildPartial0(result);
+ }
+ onBuilt();
+ return result;
+ }
+
+ private void buildPartial0(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier result) {
+ int from_bitField0_ = bitField0_;
+ if (((from_bitField0_ & 0x00000001) != 0)) {
+ result.emailAddress_ = emailAddress_;
+ }
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ result.address_ = addressBuilder_ == null ? address_ : addressBuilder_.build();
+ to_bitField0_ |= 0x00000001;
+ }
+ if (((from_bitField0_ & 0x00000004) != 0)) {
+ result.phoneNumber_ = phoneNumber_;
+ }
+ result.bitField0_ |= to_bitField0_;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier) {
+ return mergeFrom((com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier) other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(
+ com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier other) {
+ if (other
+ == com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier.getDefaultInstance())
+ return this;
+ if (!other.getEmailAddress().isEmpty()) {
+ emailAddress_ = other.emailAddress_;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ }
+ if (other.hasAddress()) {
+ mergeAddress(other.getAddress());
+ }
+ if (!other.getPhoneNumber().isEmpty()) {
+ phoneNumber_ = other.phoneNumber_;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ onChanged();
+ return this;
+ }
+
+ @java.lang.Override
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ @java.lang.Override
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ case 10:
+ {
+ emailAddress_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000001;
+ break;
+ } // case 10
+ case 18:
+ {
+ input.readMessage(internalGetAddressFieldBuilder().getBuilder(), extensionRegistry);
+ bitField0_ |= 0x00000002;
+ break;
+ } // case 18
+ case 26:
+ {
+ phoneNumber_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000004;
+ break;
+ } // case 26
+ default:
+ {
+ if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+ done = true; // was an endgroup tag
+ }
+ break;
+ } // default:
+ } // switch (tag)
+ } // while (!done)
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.unwrapIOException();
+ } finally {
+ onChanged();
+ } // finally
+ return this;
+ }
+
+ private int bitField0_;
+
+ private java.lang.Object emailAddress_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The emailAddress.
+ */
+ public java.lang.String getEmailAddress() {
+ java.lang.Object ref = emailAddress_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ emailAddress_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for emailAddress.
+ */
+ public com.google.protobuf.ByteString getEmailAddressBytes() {
+ java.lang.Object ref = emailAddress_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ emailAddress_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The emailAddress to set.
+ * @return This builder for chaining.
+ */
+ public Builder setEmailAddress(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ emailAddress_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearEmailAddress() {
+ emailAddress_ = getDefaultInstance().getEmailAddress();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for emailAddress to set.
+ * @return This builder for chaining.
+ */
+ public Builder setEmailAddressBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ emailAddress_ = value;
+ bitField0_ |= 0x00000001;
+ onChanged();
+ return this;
+ }
+
+ private com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo address_;
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder>
+ addressBuilder_;
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return Whether the address field is set.
+ */
+ public boolean hasAddress() {
+ return ((bitField0_ & 0x00000002) != 0);
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return The address.
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo getAddress() {
+ if (addressBuilder_ == null) {
+ return address_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance()
+ : address_;
+ } else {
+ return addressBuilder_.getMessage();
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public Builder setAddress(com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo value) {
+ if (addressBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ address_ = value;
+ } else {
+ addressBuilder_.setMessage(value);
+ }
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public Builder setAddress(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder builderForValue) {
+ if (addressBuilder_ == null) {
+ address_ = builderForValue.build();
+ } else {
+ addressBuilder_.setMessage(builderForValue.build());
+ }
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public Builder mergeAddress(
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo value) {
+ if (addressBuilder_ == null) {
+ if (((bitField0_ & 0x00000002) != 0)
+ && address_ != null
+ && address_
+ != com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo
+ .getDefaultInstance()) {
+ getAddressBuilder().mergeFrom(value);
+ } else {
+ address_ = value;
+ }
+ } else {
+ addressBuilder_.mergeFrom(value);
+ }
+ if (address_ != null) {
+ bitField0_ |= 0x00000002;
+ onChanged();
+ }
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public Builder clearAddress() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ address_ = null;
+ if (addressBuilder_ != null) {
+ addressBuilder_.dispose();
+ addressBuilder_ = null;
+ }
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder
+ getAddressBuilder() {
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return internalGetAddressFieldBuilder().getBuilder();
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ public com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder
+ getAddressOrBuilder() {
+ if (addressBuilder_ != null) {
+ return addressBuilder_.getMessageOrBuilder();
+ } else {
+ return address_ == null
+ ? com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.getDefaultInstance()
+ : address_;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ private com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder>
+ internalGetAddressFieldBuilder() {
+ if (addressBuilder_ == null) {
+ addressBuilder_ =
+ new com.google.protobuf.SingleFieldBuilder<
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo.Builder,
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder>(
+ getAddress(), getParentForChildren(), isClean());
+ address_ = null;
+ }
+ return addressBuilder_;
+ }
+
+ private java.lang.Object phoneNumber_ = "";
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The phoneNumber.
+ */
+ public java.lang.String getPhoneNumber() {
+ java.lang.Object ref = phoneNumber_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ phoneNumber_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for phoneNumber.
+ */
+ public com.google.protobuf.ByteString getPhoneNumberBytes() {
+ java.lang.Object ref = phoneNumber_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ phoneNumber_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The phoneNumber to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPhoneNumber(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ phoneNumber_ = value;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearPhoneNumber() {
+ phoneNumber_ = getDefaultInstance().getPhoneNumber();
+ bitField0_ = (bitField0_ & ~0x00000004);
+ onChanged();
+ return this;
+ }
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for phoneNumber to set.
+ * @return This builder for chaining.
+ */
+ public Builder setPhoneNumberBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ phoneNumber_ = value;
+ bitField0_ |= 0x00000004;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)
+ }
+
+ // @@protoc_insertion_point(class_scope:google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)
+ private static final com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier
+ DEFAULT_INSTANCE;
+
+ static {
+ DEFAULT_INSTANCE = new com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier();
+ }
+
+ public static com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier
+ getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser PARSER =
+ new com.google.protobuf.AbstractParser() {
+ @java.lang.Override
+ public UserIdentifier parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ Builder builder = newBuilder();
+ try {
+ builder.mergeFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(builder.buildPartial());
+ } catch (com.google.protobuf.UninitializedMessageException e) {
+ throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(e)
+ .setUnfinishedMessage(builder.buildPartial());
+ }
+ return builder.buildPartial();
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.shopping.merchant.loyaltycustomers.v1.UserIdentifier
+ getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifierOrBuilder.java b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifierOrBuilder.java
new file mode 100644
index 000000000000..59da86d8a8a8
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/java/com/google/shopping/merchant/loyaltycustomers/v1/UserIdentifierOrBuilder.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// NO CHECKED-IN PROTOBUF GENCODE
+// source: google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
+// Protobuf Java Version: 4.33.6
+
+package com.google.shopping.merchant.loyaltycustomers.v1;
+
+@com.google.protobuf.Generated
+public interface UserIdentifierOrBuilder
+ extends
+ // @@protoc_insertion_point(interface_extends:google.shopping.merchant.loyaltycustomers.v1.UserIdentifier)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The emailAddress.
+ */
+ java.lang.String getEmailAddress();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s email address.
+ *
+ *
+ * string email_address = 1 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for emailAddress.
+ */
+ com.google.protobuf.ByteString getEmailAddressBytes();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return Whether the address field is set.
+ */
+ boolean hasAddress();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ *
+ * @return The address.
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfo getAddress();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer’s physical address.
+ *
+ *
+ *
+ * .google.shopping.merchant.loyaltycustomers.v1.AddressInfo address = 2 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ */
+ com.google.shopping.merchant.loyaltycustomers.v1.AddressInfoOrBuilder getAddressOrBuilder();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The phoneNumber.
+ */
+ java.lang.String getPhoneNumber();
+
+ /**
+ *
+ *
+ *
+ * Optional. The customer's phone number, in
+ * [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ * (e.g., "+16502530000").
+ *
+ *
+ * string phone_number = 3 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for phoneNumber.
+ */
+ com.google.protobuf.ByteString getPhoneNumberBytes();
+}
diff --git a/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/proto/google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/proto/google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
new file mode 100644
index 000000000000..3d462ac8f44e
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/proto-google-shopping-merchant-loyaltycustomers-v1/src/main/proto/google/shopping/merchant/loyaltycustomers/v1/loyalty_customer.proto
@@ -0,0 +1,191 @@
+// Copyright 2026 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.shopping.merchant.loyaltycustomers.v1;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option go_package = "cloud.google.com/go/shopping/merchant/loyaltycustomers/apiv1/loyaltycustomerspb;loyaltycustomerspb";
+option java_multiple_files = true;
+option java_outer_classname = "LoyaltyCustomerProto";
+option java_package = "com.google.shopping.merchant.loyaltycustomers.v1";
+option (google.api.resource_definition) = {
+ type: "merchantapi.googleapis.com/Account"
+ pattern: "accounts/{account}"
+};
+
+// Manages customer loyalty program memberships for merchants.
+//
+// This service allows all merchants, including non-advertisers, to share their
+// first-party customer data of loyalty program members. Google uses this data
+// to personalize organic free listing shopping experiences, in compliance with
+// the [Merchant Center Terms of
+// Service](https://support.google.com/merchants/answer/160173).
+//
+//
+// The service follows a non-standard, imperative pattern,
+// exposing a single `ManageLoyaltyCustomerMatch` method rather than
+// conventional resource identifiers and CRUD operations. This design protects
+// user privacy by preventing the discovery of a customer's presence or
+// membership status through standard GET or LIST methods.
+service LoyaltyCustomerMatchService {
+ option (google.api.default_host) = "merchantapi.googleapis.com";
+ option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/content";
+
+ // Manages (inserts, updates, or removes) a customer's loyalty tier
+ // information.
+ //
+ // This method serves as a single interface for all changes to a customer's
+ // loyalty status. The specific action (insert, update, or remove) is
+ // determined by the current state of the merchant-to-customer association and
+ // the `loyalty_tier` value provided in the request.
+ //
+ // **Operation Logic:**
+ //
+ // * **Upsert (Insert/Update):** Providing any valid tier other than
+ // `NON_MEMBER` will associate the customer with that tier. If an association
+ // already exists, it will be updated; otherwise, a new one will be created.
+ // * **Removal:** Setting `loyalty_tier` to `NON_MEMBER` will remove any
+ // existing loyalty association for the customer.
+ //
+ // **Privacy Note:** To protect user privacy, this method consistently returns
+ // a `200 OK` status with a default `LoyaltyCustomer` response if the
+ // customer's identifier cannot be matched to a Google account or if the user
+ // has not opted into loyalty personalization.
+ rpc ManageLoyaltyCustomerMatch(ManageLoyaltyCustomerMatchRequest)
+ returns (ManageLoyaltyCustomerMatchResponse) {
+ option (google.api.http) = {
+ post: "/loyaltyCustomers/v1/{parent=accounts/*}/loyaltyCustomers:manage"
+ body: "*"
+ };
+ }
+}
+
+// Represents a customer’s physical address.
+message AddressInfo {
+ // Optional. The given name of the customer.
+ string given_name = 1 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The family name of the customer.
+ string family_name = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The city of the customer.
+ string city = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The state or province of the customer.
+ string state = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The Unicode country/region code (CLDR) of the customer, such as
+ // "US" or "CH". This field is case-insensitive. For more information, see
+ // https://cldr.unicode.org/ and
+ // https://www.unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html.
+ string region_code = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The postal code (zip code) of the customer.
+ //
+ // **Format Rules:**
+ //
+ // * **United States:** 5-digit zip codes (e.g., "94108").
+ string postal_code = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// The user identifiers associated with the customer.
+// At least one of the fields within this message must be provided.
+message UserIdentifier {
+ // Optional. The customer’s email address.
+ string email_address = 1 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The customer’s physical address.
+ AddressInfo address = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The customer's phone number, in
+ // [E.164 format](https://support.google.com/google-ads/answer/16355235)
+ // (e.g., "+16502530000").
+ string phone_number = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Represents a customer’s loyalty information.
+// Represents loyalty customer data in `ManageLoyaltyCustomerMatch` API, but
+// is not a resource that can be retrieved or listed by other methods.
+message LoyaltyCustomer {
+ // The tier label of the loyalty tier the customer belongs to.
+ enum LoyaltyTier {
+ // Loyalty tier unspecified.
+ LOYALTY_TIER_UNSPECIFIED = 0;
+
+ // Loyalty tier 1.
+ TIER1 = 1;
+
+ // Loyalty tier 2.
+ TIER2 = 2;
+
+ // Loyalty tier 3.
+ TIER3 = 3;
+
+ // Loyalty tier 4.
+ TIER4 = 4;
+
+ // Loyalty tier 5.
+ TIER5 = 5;
+
+ // Loyalty tier 6.
+ TIER6 = 6;
+
+ // Loyalty tier 7.
+ TIER7 = 7;
+
+ // Disassociates the user from any loyalty tier. Only set to “NON_MEMBER”
+ // when the intent is to remove the user association from Google organic
+ // loyalty customer match experience.
+ NON_MEMBER = 8;
+ }
+
+ // Required. The identifiers for the customer.
+ UserIdentifier user_identifier = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The tier label of the loyalty tier the customer belongs to.
+ LoyaltyTier loyalty_tier = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The point balance of the loyalty customer.
+ int64 point_balance = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request message for the ManageLoyaltyCustomerMatch method.
+message ManageLoyaltyCustomerMatchRequest {
+ // Required. The parent account where this loyalty customer will be handled.
+ // Format: `accounts/{account}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "merchantapi.googleapis.com/Account"
+ }
+ ];
+
+ // Required. The loyalty customer to insert, update, or remove.
+ LoyaltyCustomer loyalty_customer = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response message for the ManageLoyaltyCustomerMatch method.
+message ManageLoyaltyCustomerMatchResponse {
+ // The loyalty customer that was inserted, updated, or removed.
+ // If the customer's identifier cannot be matched to a Google account or if
+ // the user has not opted into loyalty personalization, this field will
+ // contain a default `LoyaltyCustomer` instance.
+ LoyaltyCustomer loyalty_customer = 1;
+}
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetCredentialsProvider.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetCredentialsProvider.java
new file mode 100644
index 000000000000..958968fb3f15
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetCredentialsProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_SetCredentialsProvider_sync]
+import com.google.api.gax.core.FixedCredentialsProvider;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceClient;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceSettings;
+import com.google.shopping.merchant.loyaltycustomers.v1.myCredentials;
+
+public class SyncCreateSetCredentialsProvider {
+
+ public static void main(String[] args) throws Exception {
+ syncCreateSetCredentialsProvider();
+ }
+
+ public static void syncCreateSetCredentialsProvider() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ LoyaltyCustomerMatchServiceSettings loyaltyCustomerMatchServiceSettings =
+ LoyaltyCustomerMatchServiceSettings.newBuilder()
+ .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ .build();
+ LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ LoyaltyCustomerMatchServiceClient.create(loyaltyCustomerMatchServiceSettings);
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_SetCredentialsProvider_sync]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetEndpoint.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetEndpoint.java
new file mode 100644
index 000000000000..7331f3c43c05
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateSetEndpoint.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_SetEndpoint_sync]
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceClient;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceSettings;
+import com.google.shopping.merchant.loyaltycustomers.v1.myEndpoint;
+
+public class SyncCreateSetEndpoint {
+
+ public static void main(String[] args) throws Exception {
+ syncCreateSetEndpoint();
+ }
+
+ public static void syncCreateSetEndpoint() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ LoyaltyCustomerMatchServiceSettings loyaltyCustomerMatchServiceSettings =
+ LoyaltyCustomerMatchServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
+ LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ LoyaltyCustomerMatchServiceClient.create(loyaltyCustomerMatchServiceSettings);
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_SetEndpoint_sync]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateUseHttpJsonTransport.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateUseHttpJsonTransport.java
new file mode 100644
index 000000000000..7f9921066155
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/create/SyncCreateUseHttpJsonTransport.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_UseHttpJsonTransport_sync]
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceClient;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceSettings;
+
+public class SyncCreateUseHttpJsonTransport {
+
+ public static void main(String[] args) throws Exception {
+ syncCreateUseHttpJsonTransport();
+ }
+
+ public static void syncCreateUseHttpJsonTransport() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ LoyaltyCustomerMatchServiceSettings loyaltyCustomerMatchServiceSettings =
+ LoyaltyCustomerMatchServiceSettings.newHttpJsonBuilder().build();
+ LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ LoyaltyCustomerMatchServiceClient.create(loyaltyCustomerMatchServiceSettings);
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchService_Create_UseHttpJsonTransport_sync]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/AsyncManageLoyaltyCustomerMatch.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/AsyncManageLoyaltyCustomerMatch.java
new file mode 100644
index 000000000000..2d0e99565b60
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/AsyncManageLoyaltyCustomerMatch.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchService_ManageLoyaltyCustomerMatch_async]
+import com.google.api.core.ApiFuture;
+import com.google.shopping.merchant.loyaltycustomers.v1.AccountName;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceClient;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+
+public class AsyncManageLoyaltyCustomerMatch {
+
+ public static void main(String[] args) throws Exception {
+ asyncManageLoyaltyCustomerMatch();
+ }
+
+ public static void asyncManageLoyaltyCustomerMatch() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ try (LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ LoyaltyCustomerMatchServiceClient.create()) {
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ ApiFuture future =
+ loyaltyCustomerMatchServiceClient
+ .manageLoyaltyCustomerMatchCallable()
+ .futureCall(request);
+ // Do something.
+ ManageLoyaltyCustomerMatchResponse response = future.get();
+ }
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchService_ManageLoyaltyCustomerMatch_async]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
new file mode 100644
index 000000000000..541cc1029872
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservice/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchService_ManageLoyaltyCustomerMatch_sync]
+import com.google.shopping.merchant.loyaltycustomers.v1.AccountName;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer;
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceClient;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchRequest;
+import com.google.shopping.merchant.loyaltycustomers.v1.ManageLoyaltyCustomerMatchResponse;
+
+public class SyncManageLoyaltyCustomerMatch {
+
+ public static void main(String[] args) throws Exception {
+ syncManageLoyaltyCustomerMatch();
+ }
+
+ public static void syncManageLoyaltyCustomerMatch() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ try (LoyaltyCustomerMatchServiceClient loyaltyCustomerMatchServiceClient =
+ LoyaltyCustomerMatchServiceClient.create()) {
+ ManageLoyaltyCustomerMatchRequest request =
+ ManageLoyaltyCustomerMatchRequest.newBuilder()
+ .setParent(AccountName.of("[ACCOUNT]").toString())
+ .setLoyaltyCustomer(LoyaltyCustomer.newBuilder().build())
+ .build();
+ ManageLoyaltyCustomerMatchResponse response =
+ loyaltyCustomerMatchServiceClient.manageLoyaltyCustomerMatch(request);
+ }
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchService_ManageLoyaltyCustomerMatch_sync]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservicesettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservicesettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
new file mode 100644
index 000000000000..1877390e0a7f
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/loyaltycustomermatchservicesettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchServiceSettings_ManageLoyaltyCustomerMatch_sync]
+import com.google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomerMatchServiceSettings;
+import java.time.Duration;
+
+public class SyncManageLoyaltyCustomerMatch {
+
+ public static void main(String[] args) throws Exception {
+ syncManageLoyaltyCustomerMatch();
+ }
+
+ public static void syncManageLoyaltyCustomerMatch() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ LoyaltyCustomerMatchServiceSettings.Builder loyaltyCustomerMatchServiceSettingsBuilder =
+ LoyaltyCustomerMatchServiceSettings.newBuilder();
+ loyaltyCustomerMatchServiceSettingsBuilder
+ .manageLoyaltyCustomerMatchSettings()
+ .setRetrySettings(
+ loyaltyCustomerMatchServiceSettingsBuilder
+ .manageLoyaltyCustomerMatchSettings()
+ .getRetrySettings()
+ .toBuilder()
+ .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ .setMaxAttempts(5)
+ .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ .setRetryDelayMultiplier(1.3)
+ .setRpcTimeoutMultiplier(1.5)
+ .setTotalTimeoutDuration(Duration.ofSeconds(300))
+ .build());
+ LoyaltyCustomerMatchServiceSettings loyaltyCustomerMatchServiceSettings =
+ loyaltyCustomerMatchServiceSettingsBuilder.build();
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchServiceSettings_ManageLoyaltyCustomerMatch_sync]
diff --git a/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/stub/loyaltycustomermatchservicestubsettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/stub/loyaltycustomermatchservicestubsettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
new file mode 100644
index 000000000000..742c4cfc60b6
--- /dev/null
+++ b/java-shopping-merchant-loyaltycustomers/samples/snippets/generated/com/google/shopping/merchant/loyaltycustomers/v1/stub/loyaltycustomermatchservicestubsettings/manageloyaltycustomermatch/SyncManageLoyaltyCustomerMatch.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2026 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
+ *
+ * https://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.
+ */
+
+package com.google.shopping.merchant.loyaltycustomers.v1.stub.samples;
+
+// [START merchantapi_v1_generated_LoyaltyCustomerMatchServiceStubSettings_ManageLoyaltyCustomerMatch_sync]
+import com.google.shopping.merchant.loyaltycustomers.v1.stub.LoyaltyCustomerMatchServiceStubSettings;
+import java.time.Duration;
+
+public class SyncManageLoyaltyCustomerMatch {
+
+ public static void main(String[] args) throws Exception {
+ syncManageLoyaltyCustomerMatch();
+ }
+
+ public static void syncManageLoyaltyCustomerMatch() throws Exception {
+ // This snippet has been automatically generated and should be regarded as a code template only.
+ // It will require modifications to work:
+ // - It may require correct/in-range values for request initialization.
+ // - It may require specifying regional endpoints when creating the service client as shown in
+ // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ LoyaltyCustomerMatchServiceStubSettings.Builder loyaltyCustomerMatchServiceSettingsBuilder =
+ LoyaltyCustomerMatchServiceStubSettings.newBuilder();
+ loyaltyCustomerMatchServiceSettingsBuilder
+ .manageLoyaltyCustomerMatchSettings()
+ .setRetrySettings(
+ loyaltyCustomerMatchServiceSettingsBuilder
+ .manageLoyaltyCustomerMatchSettings()
+ .getRetrySettings()
+ .toBuilder()
+ .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ .setMaxAttempts(5)
+ .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ .setRetryDelayMultiplier(1.3)
+ .setRpcTimeoutMultiplier(1.5)
+ .setTotalTimeoutDuration(Duration.ofSeconds(300))
+ .build());
+ LoyaltyCustomerMatchServiceStubSettings loyaltyCustomerMatchServiceSettings =
+ loyaltyCustomerMatchServiceSettingsBuilder.build();
+ }
+}
+// [END merchantapi_v1_generated_LoyaltyCustomerMatchServiceStubSettings_ManageLoyaltyCustomerMatch_sync]
diff --git a/librarian.yaml b/librarian.yaml
index 824c7f6a37e7..66e6c9cfccc2 100644
--- a/librarian.yaml
+++ b/librarian.yaml
@@ -5323,6 +5323,13 @@ libraries:
library_type_override: GAPIC_AUTO
name_pretty_override: Merchant LFP API
product_documentation_override: https://developers.google.com/merchant/api
+ - name: shopping-merchant-loyaltycustomers
+ version: 0.1.0-SNAPSHOT
+ apis:
+ - path: google/shopping/merchant/loyaltycustomers/v1
+ java:
+ artifact_id: google-shopping-merchant-loyaltycustomers
+ group_id: com.google.shopping
- name: shopping-merchant-notifications
version: 1.25.0-SNAPSHOT
apis:
diff --git a/pom.xml b/pom.xml
index 1a50b4d196fb..ce9a4932bcc0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -237,6 +237,7 @@
java-shopping-merchant-datasources
java-shopping-merchant-inventories
java-shopping-merchant-lfp
+ java-shopping-merchant-loyaltycustomers
java-shopping-merchant-notifications
java-shopping-merchant-product-studio
java-shopping-merchant-products
diff --git a/versions.txt b/versions.txt
index 5765efd16d95..9252c8891aff 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1114,3 +1114,8 @@ google-cloud-apptopology-bom:0.0.0:0.1.0-SNAPSHOT
proto-google-cloud-apptopology-v1:0.0.0:0.1.0-SNAPSHOT
grpc-google-cloud-apptopology-v1:0.0.0:0.1.0-SNAPSHOT
google-cloud-apptopology:0.0.0:0.1.0-SNAPSHOT
+google-shopping-merchant-loyaltycustomers-parent:0.0.0:0.1.0-SNAPSHOT
+google-shopping-merchant-loyaltycustomers-bom:0.0.0:0.1.0-SNAPSHOT
+proto-google-shopping-merchant-loyaltycustomers-v1:0.0.0:0.1.0-SNAPSHOT
+grpc-google-shopping-merchant-loyaltycustomers-v1:0.0.0:0.1.0-SNAPSHOT
+google-shopping-merchant-loyaltycustomers:0.0.0:0.1.0-SNAPSHOT