1// Copyright 2021 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.26.0
18// 	protoc        v3.12.2
19// source: google/cloud/retail/v2alpha/product_service.proto
20
21package retail
22
23import (
24	context "context"
25	reflect "reflect"
26	sync "sync"
27
28	_ "google.golang.org/genproto/googleapis/api/annotations"
29	longrunning "google.golang.org/genproto/googleapis/longrunning"
30	grpc "google.golang.org/grpc"
31	codes "google.golang.org/grpc/codes"
32	status "google.golang.org/grpc/status"
33	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
34	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
35	emptypb "google.golang.org/protobuf/types/known/emptypb"
36	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
37	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
38)
39
40const (
41	// Verify that this generated code is sufficiently up-to-date.
42	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
43	// Verify that runtime/protoimpl is sufficiently up-to-date.
44	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
45)
46
47// Request message for [CreateProduct][] method.
48type CreateProductRequest struct {
49	state         protoimpl.MessageState
50	sizeCache     protoimpl.SizeCache
51	unknownFields protoimpl.UnknownFields
52
53	// Required. The parent catalog resource name, such as
54	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch`.
55	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
56	// Required. The [Product][google.cloud.retail.v2alpha.Product] to create.
57	Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
58	// Required. The ID to use for the
59	// [Product][google.cloud.retail.v2alpha.Product], which will become the final
60	// component of the [Product.name][google.cloud.retail.v2alpha.Product.name].
61	//
62	// If the caller does not have permission to create the
63	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
64	// not it exists, a PERMISSION_DENIED error is returned.
65	//
66	// This field must be unique among all
67	// [Product][google.cloud.retail.v2alpha.Product]s with the same
68	// [parent][google.cloud.retail.v2alpha.CreateProductRequest.parent].
69	// Otherwise, an ALREADY_EXISTS error is returned.
70	//
71	// This field must be a UTF-8 encoded string with a length limit of 128
72	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
73	ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
74}
75
76func (x *CreateProductRequest) Reset() {
77	*x = CreateProductRequest{}
78	if protoimpl.UnsafeEnabled {
79		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[0]
80		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
81		ms.StoreMessageInfo(mi)
82	}
83}
84
85func (x *CreateProductRequest) String() string {
86	return protoimpl.X.MessageStringOf(x)
87}
88
89func (*CreateProductRequest) ProtoMessage() {}
90
91func (x *CreateProductRequest) ProtoReflect() protoreflect.Message {
92	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[0]
93	if protoimpl.UnsafeEnabled && x != nil {
94		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
95		if ms.LoadMessageInfo() == nil {
96			ms.StoreMessageInfo(mi)
97		}
98		return ms
99	}
100	return mi.MessageOf(x)
101}
102
103// Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead.
104func (*CreateProductRequest) Descriptor() ([]byte, []int) {
105	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{0}
106}
107
108func (x *CreateProductRequest) GetParent() string {
109	if x != nil {
110		return x.Parent
111	}
112	return ""
113}
114
115func (x *CreateProductRequest) GetProduct() *Product {
116	if x != nil {
117		return x.Product
118	}
119	return nil
120}
121
122func (x *CreateProductRequest) GetProductId() string {
123	if x != nil {
124		return x.ProductId
125	}
126	return ""
127}
128
129// Request message for [GetProduct][] method.
130type GetProductRequest struct {
131	state         protoimpl.MessageState
132	sizeCache     protoimpl.SizeCache
133	unknownFields protoimpl.UnknownFields
134
135	// Required. Full resource name of
136	// [Product][google.cloud.retail.v2alpha.Product], such as
137	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
138	//
139	// If the caller does not have permission to access the
140	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
141	// not it exists, a PERMISSION_DENIED error is returned.
142	//
143	// If the requested [Product][google.cloud.retail.v2alpha.Product] does not
144	// exist, a NOT_FOUND error is returned.
145	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
146}
147
148func (x *GetProductRequest) Reset() {
149	*x = GetProductRequest{}
150	if protoimpl.UnsafeEnabled {
151		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[1]
152		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
153		ms.StoreMessageInfo(mi)
154	}
155}
156
157func (x *GetProductRequest) String() string {
158	return protoimpl.X.MessageStringOf(x)
159}
160
161func (*GetProductRequest) ProtoMessage() {}
162
163func (x *GetProductRequest) ProtoReflect() protoreflect.Message {
164	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[1]
165	if protoimpl.UnsafeEnabled && x != nil {
166		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
167		if ms.LoadMessageInfo() == nil {
168			ms.StoreMessageInfo(mi)
169		}
170		return ms
171	}
172	return mi.MessageOf(x)
173}
174
175// Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead.
176func (*GetProductRequest) Descriptor() ([]byte, []int) {
177	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{1}
178}
179
180func (x *GetProductRequest) GetName() string {
181	if x != nil {
182		return x.Name
183	}
184	return ""
185}
186
187// Request message for [UpdateProduct][] method.
188type UpdateProductRequest struct {
189	state         protoimpl.MessageState
190	sizeCache     protoimpl.SizeCache
191	unknownFields protoimpl.UnknownFields
192
193	// Required. The product to update/create.
194	//
195	// If the caller does not have permission to update the
196	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
197	// not it exists, a PERMISSION_DENIED error is returned.
198	//
199	// If the [Product][google.cloud.retail.v2alpha.Product] to update does not
200	// exist and
201	// [allow_missing][google.cloud.retail.v2alpha.UpdateProductRequest.allow_missing]
202	// is not set, a NOT_FOUND error is returned.
203	Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
204	// Indicates which fields in the provided
205	// [Product][google.cloud.retail.v2alpha.Product] to update. The immutable and
206	// output only fields are NOT supported. If not set, all supported fields (the
207	// fields that are neither immutable nor output only) are updated.
208	//
209	// If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
210	// is returned.
211	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
212	// If set to true, and the [Product][google.cloud.retail.v2alpha.Product] is
213	// not found, a new [Product][google.cloud.retail.v2alpha.Product] will be
214	// created. In this situation, `update_mask` is ignored.
215	AllowMissing bool `protobuf:"varint,3,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
216}
217
218func (x *UpdateProductRequest) Reset() {
219	*x = UpdateProductRequest{}
220	if protoimpl.UnsafeEnabled {
221		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[2]
222		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
223		ms.StoreMessageInfo(mi)
224	}
225}
226
227func (x *UpdateProductRequest) String() string {
228	return protoimpl.X.MessageStringOf(x)
229}
230
231func (*UpdateProductRequest) ProtoMessage() {}
232
233func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message {
234	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[2]
235	if protoimpl.UnsafeEnabled && x != nil {
236		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
237		if ms.LoadMessageInfo() == nil {
238			ms.StoreMessageInfo(mi)
239		}
240		return ms
241	}
242	return mi.MessageOf(x)
243}
244
245// Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead.
246func (*UpdateProductRequest) Descriptor() ([]byte, []int) {
247	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{2}
248}
249
250func (x *UpdateProductRequest) GetProduct() *Product {
251	if x != nil {
252		return x.Product
253	}
254	return nil
255}
256
257func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
258	if x != nil {
259		return x.UpdateMask
260	}
261	return nil
262}
263
264func (x *UpdateProductRequest) GetAllowMissing() bool {
265	if x != nil {
266		return x.AllowMissing
267	}
268	return false
269}
270
271// Request message for [DeleteProduct][] method.
272type DeleteProductRequest struct {
273	state         protoimpl.MessageState
274	sizeCache     protoimpl.SizeCache
275	unknownFields protoimpl.UnknownFields
276
277	// Required. Full resource name of
278	// [Product][google.cloud.retail.v2alpha.Product], such as
279	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
280	//
281	// If the caller does not have permission to delete the
282	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
283	// not it exists, a PERMISSION_DENIED error is returned.
284	//
285	// If the [Product][google.cloud.retail.v2alpha.Product] to delete does not
286	// exist, a NOT_FOUND error is returned.
287	//
288	// The [Product][google.cloud.retail.v2alpha.Product] to delete can neither be
289	// a
290	// [Product.Type.COLLECTION][google.cloud.retail.v2alpha.Product.Type.COLLECTION]
291	// [Product][google.cloud.retail.v2alpha.Product] member nor a
292	// [Product.Type.PRIMARY][google.cloud.retail.v2alpha.Product.Type.PRIMARY]
293	// [Product][google.cloud.retail.v2alpha.Product] with more than one
294	// [variants][google.cloud.retail.v2alpha.Product.Type.VARIANT]. Otherwise, an
295	// INVALID_ARGUMENT error is returned.
296	//
297	// All inventory information for the named
298	// [Product][google.cloud.retail.v2alpha.Product] will be deleted.
299	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
300}
301
302func (x *DeleteProductRequest) Reset() {
303	*x = DeleteProductRequest{}
304	if protoimpl.UnsafeEnabled {
305		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[3]
306		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
307		ms.StoreMessageInfo(mi)
308	}
309}
310
311func (x *DeleteProductRequest) String() string {
312	return protoimpl.X.MessageStringOf(x)
313}
314
315func (*DeleteProductRequest) ProtoMessage() {}
316
317func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message {
318	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[3]
319	if protoimpl.UnsafeEnabled && x != nil {
320		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
321		if ms.LoadMessageInfo() == nil {
322			ms.StoreMessageInfo(mi)
323		}
324		return ms
325	}
326	return mi.MessageOf(x)
327}
328
329// Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead.
330func (*DeleteProductRequest) Descriptor() ([]byte, []int) {
331	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{3}
332}
333
334func (x *DeleteProductRequest) GetName() string {
335	if x != nil {
336		return x.Name
337	}
338	return ""
339}
340
341// Request message for
342// [ProductService.ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts]
343// method.
344type ListProductsRequest struct {
345	state         protoimpl.MessageState
346	sizeCache     protoimpl.SizeCache
347	unknownFields protoimpl.UnknownFields
348
349	// Required. The parent branch resource name, such as
350	// `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use
351	// `default_branch` as the branch ID, to list products under the default
352	// branch.
353	//
354	// If the caller does not have permission to list
355	// [Product][google.cloud.retail.v2alpha.Product]s under this branch,
356	// regardless of whether or not this branch exists, a PERMISSION_DENIED error
357	// is returned.
358	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
359	// Maximum number of [Product][google.cloud.retail.v2alpha.Product]s to
360	// return. If unspecified, defaults to 100. The maximum allowed value is 1000.
361	// Values above 1000 will be coerced to 1000.
362	//
363	// If this field is negative, an INVALID_ARGUMENT error is returned.
364	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
365	// A page token
366	// [ListProductsResponse.next_page_token][google.cloud.retail.v2alpha.ListProductsResponse.next_page_token],
367	// received from a previous
368	// [ProductService.ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts]
369	// call. Provide this to retrieve the subsequent page.
370	//
371	// When paginating, all other parameters provided to
372	// [ProductService.ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts]
373	// must match the call that provided the page token. Otherwise, an
374	// INVALID_ARGUMENT error is returned.
375	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
376	// A filter to apply on the list results. Supported features:
377	//
378	// * List all the products under the parent branch if
379	// [filter][google.cloud.retail.v2alpha.ListProductsRequest.filter] is unset.
380	// * List
381	// [Product.Type.VARIANT][google.cloud.retail.v2alpha.Product.Type.VARIANT]
382	// [Product][google.cloud.retail.v2alpha.Product]s sharing the same
383	//   [Product.Type.PRIMARY][google.cloud.retail.v2alpha.Product.Type.PRIMARY]
384	//   [Product][google.cloud.retail.v2alpha.Product]. For example:
385	//     `primary_product_id = "some_product_id"`
386	// * List [Product][google.cloud.retail.v2alpha.Product]s bundled in a
387	// [Product.Type.COLLECTION][google.cloud.retail.v2alpha.Product.Type.COLLECTION]
388	// [Product][google.cloud.retail.v2alpha.Product].
389	//   For example:
390	//     `collection_product_id = "some_product_id"`
391	// * List [Product][google.cloud.retail.v2alpha.Product]s with a partibular
392	// type. For example:
393	//     `type = "PRIMARY"`
394	//     `type = "VARIANT"`
395	//     `type = "COLLECTION"`
396	//
397	// If the field is unrecognizable, an INVALID_ARGUMENT error is returned.
398	//
399	// If the specified
400	// [Product.Type.PRIMARY][google.cloud.retail.v2alpha.Product.Type.PRIMARY]
401	// [Product][google.cloud.retail.v2alpha.Product] or
402	// [Product.Type.COLLECTION][google.cloud.retail.v2alpha.Product.Type.COLLECTION]
403	// [Product][google.cloud.retail.v2alpha.Product] does not exist, a NOT_FOUND
404	// error is returned.
405	Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
406	// The fields of [Product][google.cloud.retail.v2alpha.Product] to return in
407	// the responses. If not set or empty, the following fields are returned:
408	//
409	// * [Product.name][google.cloud.retail.v2alpha.Product.name]
410	// * [Product.id][google.cloud.retail.v2alpha.Product.id]
411	// * [Product.title][google.cloud.retail.v2alpha.Product.title]
412	// * [Product.uri][google.cloud.retail.v2alpha.Product.uri]
413	// * [Product.images][google.cloud.retail.v2alpha.Product.images]
414	// * [Product.price_info][google.cloud.retail.v2alpha.Product.price_info]
415	// * [Product.brands][google.cloud.retail.v2alpha.Product.brands]
416	//
417	// If "*" is provided, all fields are returned.
418	// [Product.name][google.cloud.retail.v2alpha.Product.name] is always returned
419	// no matter what mask is set.
420	//
421	// If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
422	// is returned.
423	ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
424	// If true and
425	// [page_token][google.cloud.retail.v2alpha.ListProductsRequest.page_token] is
426	// empty,
427	// [ListProductsResponse.total_size][google.cloud.retail.v2alpha.ListProductsResponse.total_size]
428	// is set to the total count of matched items irrespective of pagination.
429	//
430	// Notice that setting this field to true affects the performance.
431	RequireTotalSize bool `protobuf:"varint,6,opt,name=require_total_size,json=requireTotalSize,proto3" json:"require_total_size,omitempty"`
432}
433
434func (x *ListProductsRequest) Reset() {
435	*x = ListProductsRequest{}
436	if protoimpl.UnsafeEnabled {
437		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[4]
438		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
439		ms.StoreMessageInfo(mi)
440	}
441}
442
443func (x *ListProductsRequest) String() string {
444	return protoimpl.X.MessageStringOf(x)
445}
446
447func (*ListProductsRequest) ProtoMessage() {}
448
449func (x *ListProductsRequest) ProtoReflect() protoreflect.Message {
450	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[4]
451	if protoimpl.UnsafeEnabled && x != nil {
452		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
453		if ms.LoadMessageInfo() == nil {
454			ms.StoreMessageInfo(mi)
455		}
456		return ms
457	}
458	return mi.MessageOf(x)
459}
460
461// Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead.
462func (*ListProductsRequest) Descriptor() ([]byte, []int) {
463	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{4}
464}
465
466func (x *ListProductsRequest) GetParent() string {
467	if x != nil {
468		return x.Parent
469	}
470	return ""
471}
472
473func (x *ListProductsRequest) GetPageSize() int32 {
474	if x != nil {
475		return x.PageSize
476	}
477	return 0
478}
479
480func (x *ListProductsRequest) GetPageToken() string {
481	if x != nil {
482		return x.PageToken
483	}
484	return ""
485}
486
487func (x *ListProductsRequest) GetFilter() string {
488	if x != nil {
489		return x.Filter
490	}
491	return ""
492}
493
494func (x *ListProductsRequest) GetReadMask() *fieldmaskpb.FieldMask {
495	if x != nil {
496		return x.ReadMask
497	}
498	return nil
499}
500
501func (x *ListProductsRequest) GetRequireTotalSize() bool {
502	if x != nil {
503		return x.RequireTotalSize
504	}
505	return false
506}
507
508// Response message for
509// [ProductService.ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts]
510// method.
511type ListProductsResponse struct {
512	state         protoimpl.MessageState
513	sizeCache     protoimpl.SizeCache
514	unknownFields protoimpl.UnknownFields
515
516	// The [Product][google.cloud.retail.v2alpha.Product]s.
517	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
518	// A token that can be sent as
519	// [ListProductsRequest.page_token][google.cloud.retail.v2alpha.ListProductsRequest.page_token]
520	// to retrieve the next page. If this field is omitted, there are no
521	// subsequent pages.
522	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
523	// The total count of matched [Product][google.cloud.retail.v2alpha.Product]s
524	// irrespective of pagination. The total number of
525	// [Product][google.cloud.retail.v2alpha.Product]s returned by pagination may
526	// be less than the
527	// [total_size][google.cloud.retail.v2alpha.ListProductsResponse.total_size]
528	// that matches.
529	//
530	// This field is ignored if
531	// [ListProductsRequest.require_total_size][google.cloud.retail.v2alpha.ListProductsRequest.require_total_size]
532	// is not set or
533	// [ListProductsRequest.page_token][google.cloud.retail.v2alpha.ListProductsRequest.page_token]
534	// is not empty.
535	TotalSize int32 `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
536}
537
538func (x *ListProductsResponse) Reset() {
539	*x = ListProductsResponse{}
540	if protoimpl.UnsafeEnabled {
541		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[5]
542		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
543		ms.StoreMessageInfo(mi)
544	}
545}
546
547func (x *ListProductsResponse) String() string {
548	return protoimpl.X.MessageStringOf(x)
549}
550
551func (*ListProductsResponse) ProtoMessage() {}
552
553func (x *ListProductsResponse) ProtoReflect() protoreflect.Message {
554	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[5]
555	if protoimpl.UnsafeEnabled && x != nil {
556		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
557		if ms.LoadMessageInfo() == nil {
558			ms.StoreMessageInfo(mi)
559		}
560		return ms
561	}
562	return mi.MessageOf(x)
563}
564
565// Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead.
566func (*ListProductsResponse) Descriptor() ([]byte, []int) {
567	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{5}
568}
569
570func (x *ListProductsResponse) GetProducts() []*Product {
571	if x != nil {
572		return x.Products
573	}
574	return nil
575}
576
577func (x *ListProductsResponse) GetNextPageToken() string {
578	if x != nil {
579		return x.NextPageToken
580	}
581	return ""
582}
583
584func (x *ListProductsResponse) GetTotalSize() int32 {
585	if x != nil {
586		return x.TotalSize
587	}
588	return 0
589}
590
591// Request message for [SetInventory][] method.
592type SetInventoryRequest struct {
593	state         protoimpl.MessageState
594	sizeCache     protoimpl.SizeCache
595	unknownFields protoimpl.UnknownFields
596
597	// Required. The inventory information to update. The allowable fields to
598	// update are:
599	// * [Product.price_info][google.cloud.retail.v2alpha.Product.price_info]
600	// * [Product.availability][google.cloud.retail.v2alpha.Product.availability]
601	// * [Product.available_quantity][google.cloud.retail.v2alpha.Product.available_quantity]
602	// * [Product.fulfillment_info][google.cloud.retail.v2alpha.Product.fulfillment_info]
603	// The updated inventory fields must be specified in
604	// [SetInventoryRequest.set_mask][google.cloud.retail.v2alpha.SetInventoryRequest.set_mask].
605	//
606	// If [SetInventoryRequest.inventory.name][] is empty or invalid, an
607	// INVALID_ARGUMENT error is returned.
608	//
609	// If the caller does not have permission to update the
610	// [Product][google.cloud.retail.v2alpha.Product] named in
611	// [Product.name][google.cloud.retail.v2alpha.Product.name], regardless of
612	// whether or not it exists, a PERMISSION_DENIED error is returned.
613	//
614	// If the [Product][google.cloud.retail.v2alpha.Product] to update does not
615	// have existing inventory information, the provided inventory information
616	// will be inserted.
617	//
618	// If the [Product][google.cloud.retail.v2alpha.Product] to update has
619	// existing inventory information, the provided inventory information will be
620	// merged while respecting the last update time for each inventory field,
621	// using the provided or default value for
622	// [SetInventoryRequest.set_time][google.cloud.retail.v2alpha.SetInventoryRequest.set_time].
623	//
624	// The last update time is recorded for the following inventory fields:
625	// * [Product.price_info][google.cloud.retail.v2alpha.Product.price_info]
626	// * [Product.availability][google.cloud.retail.v2alpha.Product.availability]
627	// * [Product.available_quantity][google.cloud.retail.v2alpha.Product.available_quantity]
628	// * [Product.fulfillment_info][google.cloud.retail.v2alpha.Product.fulfillment_info]
629	//
630	// If a full overwrite of inventory information while ignoring timestamps is
631	// needed, [UpdateProduct][] should be invoked instead.
632	Inventory *Product `protobuf:"bytes,1,opt,name=inventory,proto3" json:"inventory,omitempty"`
633	// Indicates which inventory fields in the provided
634	// [Product][google.cloud.retail.v2alpha.Product] to update. If not set or set
635	// with empty paths, all inventory fields will be updated.
636	//
637	// If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
638	// is returned and the entire update will be ignored.
639	SetMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=set_mask,json=setMask,proto3" json:"set_mask,omitempty"`
640	// The time when the request is issued, used to prevent
641	// out-of-order updates on inventory fields with the last update time
642	// recorded. If not provided, the internal system time will be used.
643	SetTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=set_time,json=setTime,proto3" json:"set_time,omitempty"`
644	// If set to true, and the [Product][google.cloud.retail.v2alpha.Product] with
645	// name [Product.name][google.cloud.retail.v2alpha.Product.name] is not found,
646	// the inventory update will still be processed and retained for at most 1 day
647	// until the [Product][google.cloud.retail.v2alpha.Product] is created. If set
648	// to false, a NOT_FOUND error is returned if the
649	// [Product][google.cloud.retail.v2alpha.Product] is not found.
650	AllowMissing bool `protobuf:"varint,4,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
651}
652
653func (x *SetInventoryRequest) Reset() {
654	*x = SetInventoryRequest{}
655	if protoimpl.UnsafeEnabled {
656		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[6]
657		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
658		ms.StoreMessageInfo(mi)
659	}
660}
661
662func (x *SetInventoryRequest) String() string {
663	return protoimpl.X.MessageStringOf(x)
664}
665
666func (*SetInventoryRequest) ProtoMessage() {}
667
668func (x *SetInventoryRequest) ProtoReflect() protoreflect.Message {
669	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[6]
670	if protoimpl.UnsafeEnabled && x != nil {
671		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
672		if ms.LoadMessageInfo() == nil {
673			ms.StoreMessageInfo(mi)
674		}
675		return ms
676	}
677	return mi.MessageOf(x)
678}
679
680// Deprecated: Use SetInventoryRequest.ProtoReflect.Descriptor instead.
681func (*SetInventoryRequest) Descriptor() ([]byte, []int) {
682	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{6}
683}
684
685func (x *SetInventoryRequest) GetInventory() *Product {
686	if x != nil {
687		return x.Inventory
688	}
689	return nil
690}
691
692func (x *SetInventoryRequest) GetSetMask() *fieldmaskpb.FieldMask {
693	if x != nil {
694		return x.SetMask
695	}
696	return nil
697}
698
699func (x *SetInventoryRequest) GetSetTime() *timestamppb.Timestamp {
700	if x != nil {
701		return x.SetTime
702	}
703	return nil
704}
705
706func (x *SetInventoryRequest) GetAllowMissing() bool {
707	if x != nil {
708		return x.AllowMissing
709	}
710	return false
711}
712
713// Metadata related to the progress of the SetInventory operation.
714// Currently empty because there is no meaningful metadata populated from the
715// [SetInventory][] method.
716type SetInventoryMetadata struct {
717	state         protoimpl.MessageState
718	sizeCache     protoimpl.SizeCache
719	unknownFields protoimpl.UnknownFields
720}
721
722func (x *SetInventoryMetadata) Reset() {
723	*x = SetInventoryMetadata{}
724	if protoimpl.UnsafeEnabled {
725		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[7]
726		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
727		ms.StoreMessageInfo(mi)
728	}
729}
730
731func (x *SetInventoryMetadata) String() string {
732	return protoimpl.X.MessageStringOf(x)
733}
734
735func (*SetInventoryMetadata) ProtoMessage() {}
736
737func (x *SetInventoryMetadata) ProtoReflect() protoreflect.Message {
738	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[7]
739	if protoimpl.UnsafeEnabled && x != nil {
740		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
741		if ms.LoadMessageInfo() == nil {
742			ms.StoreMessageInfo(mi)
743		}
744		return ms
745	}
746	return mi.MessageOf(x)
747}
748
749// Deprecated: Use SetInventoryMetadata.ProtoReflect.Descriptor instead.
750func (*SetInventoryMetadata) Descriptor() ([]byte, []int) {
751	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{7}
752}
753
754// Response of the SetInventoryRequest.  Currently empty because
755// there is no meaningful response populated from the [SetInventory][]
756// method.
757type SetInventoryResponse struct {
758	state         protoimpl.MessageState
759	sizeCache     protoimpl.SizeCache
760	unknownFields protoimpl.UnknownFields
761}
762
763func (x *SetInventoryResponse) Reset() {
764	*x = SetInventoryResponse{}
765	if protoimpl.UnsafeEnabled {
766		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[8]
767		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
768		ms.StoreMessageInfo(mi)
769	}
770}
771
772func (x *SetInventoryResponse) String() string {
773	return protoimpl.X.MessageStringOf(x)
774}
775
776func (*SetInventoryResponse) ProtoMessage() {}
777
778func (x *SetInventoryResponse) ProtoReflect() protoreflect.Message {
779	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[8]
780	if protoimpl.UnsafeEnabled && x != nil {
781		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
782		if ms.LoadMessageInfo() == nil {
783			ms.StoreMessageInfo(mi)
784		}
785		return ms
786	}
787	return mi.MessageOf(x)
788}
789
790// Deprecated: Use SetInventoryResponse.ProtoReflect.Descriptor instead.
791func (*SetInventoryResponse) Descriptor() ([]byte, []int) {
792	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{8}
793}
794
795// Request message for [AddFulfillmentPlaces][] method.
796type AddFulfillmentPlacesRequest struct {
797	state         protoimpl.MessageState
798	sizeCache     protoimpl.SizeCache
799	unknownFields protoimpl.UnknownFields
800
801	// Required. Full resource name of
802	// [Product][google.cloud.retail.v2alpha.Product], such as
803	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
804	//
805	// If the caller does not have permission to access the
806	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
807	// not it exists, a PERMISSION_DENIED error is returned.
808	Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
809	// Required. The fulfillment type, including commonly used types (such as
810	// pickup in store and same day delivery), and custom types.
811	//
812	// Supported values:
813	//
814	// * "pickup-in-store"
815	// * "ship-to-store"
816	// * "same-day-delivery"
817	// * "next-day-delivery"
818	// * "custom-type-1"
819	// * "custom-type-2"
820	// * "custom-type-3"
821	// * "custom-type-4"
822	// * "custom-type-5"
823	//
824	// If this field is set to an invalid value other than these, an
825	// INVALID_ARGUMENT error is returned.
826	//
827	// This field directly corresponds to [Product.fulfillment_info.type][].
828	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
829	// Required. The IDs for this
830	// [type][google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.type], such
831	// as the store IDs for "pickup-in-store" or the region IDs for
832	// "same-day-delivery" to be added for this
833	// [type][google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.type].
834	// Duplicate IDs will be automatically ignored.
835	//
836	// At least 1 value is required, and a maximum of 2000 values are allowed.
837	// Each value must be a string with a length limit of 10 characters, matching
838	// the pattern [a-zA-Z0-9_-]+, such as "store1" or "REGION-2". Otherwise, an
839	// INVALID_ARGUMENT error is returned.
840	//
841	// If the total number of place IDs exceeds 2000 for this
842	// [type][google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.type] after
843	// adding, then the update will be rejected.
844	PlaceIds []string `protobuf:"bytes,3,rep,name=place_ids,json=placeIds,proto3" json:"place_ids,omitempty"`
845	// The time when the fulfillment updates are issued, used to prevent
846	// out-of-order updates on fulfillment information. If not provided, the
847	// internal system time will be used.
848	AddTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=add_time,json=addTime,proto3" json:"add_time,omitempty"`
849	// If set to true, and the [Product][google.cloud.retail.v2alpha.Product] is
850	// not found, the fulfillment information will still be processed and retained
851	// for at most 1 day and processed once the
852	// [Product][google.cloud.retail.v2alpha.Product] is created. If set to false,
853	// a NOT_FOUND error is returned if the
854	// [Product][google.cloud.retail.v2alpha.Product] is not found.
855	AllowMissing bool `protobuf:"varint,5,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
856}
857
858func (x *AddFulfillmentPlacesRequest) Reset() {
859	*x = AddFulfillmentPlacesRequest{}
860	if protoimpl.UnsafeEnabled {
861		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[9]
862		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
863		ms.StoreMessageInfo(mi)
864	}
865}
866
867func (x *AddFulfillmentPlacesRequest) String() string {
868	return protoimpl.X.MessageStringOf(x)
869}
870
871func (*AddFulfillmentPlacesRequest) ProtoMessage() {}
872
873func (x *AddFulfillmentPlacesRequest) ProtoReflect() protoreflect.Message {
874	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[9]
875	if protoimpl.UnsafeEnabled && x != nil {
876		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
877		if ms.LoadMessageInfo() == nil {
878			ms.StoreMessageInfo(mi)
879		}
880		return ms
881	}
882	return mi.MessageOf(x)
883}
884
885// Deprecated: Use AddFulfillmentPlacesRequest.ProtoReflect.Descriptor instead.
886func (*AddFulfillmentPlacesRequest) Descriptor() ([]byte, []int) {
887	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{9}
888}
889
890func (x *AddFulfillmentPlacesRequest) GetProduct() string {
891	if x != nil {
892		return x.Product
893	}
894	return ""
895}
896
897func (x *AddFulfillmentPlacesRequest) GetType() string {
898	if x != nil {
899		return x.Type
900	}
901	return ""
902}
903
904func (x *AddFulfillmentPlacesRequest) GetPlaceIds() []string {
905	if x != nil {
906		return x.PlaceIds
907	}
908	return nil
909}
910
911func (x *AddFulfillmentPlacesRequest) GetAddTime() *timestamppb.Timestamp {
912	if x != nil {
913		return x.AddTime
914	}
915	return nil
916}
917
918func (x *AddFulfillmentPlacesRequest) GetAllowMissing() bool {
919	if x != nil {
920		return x.AllowMissing
921	}
922	return false
923}
924
925// Metadata related to the progress of the AddFulfillmentPlaces operation.
926// Currently empty because there is no meaningful metadata populated from the
927// [AddFulfillmentPlaces][] method.
928type AddFulfillmentPlacesMetadata struct {
929	state         protoimpl.MessageState
930	sizeCache     protoimpl.SizeCache
931	unknownFields protoimpl.UnknownFields
932}
933
934func (x *AddFulfillmentPlacesMetadata) Reset() {
935	*x = AddFulfillmentPlacesMetadata{}
936	if protoimpl.UnsafeEnabled {
937		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[10]
938		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
939		ms.StoreMessageInfo(mi)
940	}
941}
942
943func (x *AddFulfillmentPlacesMetadata) String() string {
944	return protoimpl.X.MessageStringOf(x)
945}
946
947func (*AddFulfillmentPlacesMetadata) ProtoMessage() {}
948
949func (x *AddFulfillmentPlacesMetadata) ProtoReflect() protoreflect.Message {
950	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[10]
951	if protoimpl.UnsafeEnabled && x != nil {
952		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
953		if ms.LoadMessageInfo() == nil {
954			ms.StoreMessageInfo(mi)
955		}
956		return ms
957	}
958	return mi.MessageOf(x)
959}
960
961// Deprecated: Use AddFulfillmentPlacesMetadata.ProtoReflect.Descriptor instead.
962func (*AddFulfillmentPlacesMetadata) Descriptor() ([]byte, []int) {
963	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{10}
964}
965
966// Response of the AddFulfillmentPlacesRequest.  Currently empty because
967// there is no meaningful response populated from the [AddFulfillmentPlaces][]
968// method.
969type AddFulfillmentPlacesResponse struct {
970	state         protoimpl.MessageState
971	sizeCache     protoimpl.SizeCache
972	unknownFields protoimpl.UnknownFields
973}
974
975func (x *AddFulfillmentPlacesResponse) Reset() {
976	*x = AddFulfillmentPlacesResponse{}
977	if protoimpl.UnsafeEnabled {
978		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[11]
979		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
980		ms.StoreMessageInfo(mi)
981	}
982}
983
984func (x *AddFulfillmentPlacesResponse) String() string {
985	return protoimpl.X.MessageStringOf(x)
986}
987
988func (*AddFulfillmentPlacesResponse) ProtoMessage() {}
989
990func (x *AddFulfillmentPlacesResponse) ProtoReflect() protoreflect.Message {
991	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[11]
992	if protoimpl.UnsafeEnabled && x != nil {
993		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
994		if ms.LoadMessageInfo() == nil {
995			ms.StoreMessageInfo(mi)
996		}
997		return ms
998	}
999	return mi.MessageOf(x)
1000}
1001
1002// Deprecated: Use AddFulfillmentPlacesResponse.ProtoReflect.Descriptor instead.
1003func (*AddFulfillmentPlacesResponse) Descriptor() ([]byte, []int) {
1004	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{11}
1005}
1006
1007// Request message for [RemoveFulfillmentPlaces][] method.
1008type RemoveFulfillmentPlacesRequest struct {
1009	state         protoimpl.MessageState
1010	sizeCache     protoimpl.SizeCache
1011	unknownFields protoimpl.UnknownFields
1012
1013	// Required. Full resource name of
1014	// [Product][google.cloud.retail.v2alpha.Product], such as
1015	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`.
1016	//
1017	// If the caller does not have permission to access the
1018	// [Product][google.cloud.retail.v2alpha.Product], regardless of whether or
1019	// not it exists, a PERMISSION_DENIED error is returned.
1020	Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
1021	// Required. The fulfillment type, including commonly used types (such as
1022	// pickup in store and same day delivery), and custom types.
1023	//
1024	// Supported values:
1025	//
1026	// * "pickup-in-store"
1027	// * "ship-to-store"
1028	// * "same-day-delivery"
1029	// * "next-day-delivery"
1030	// * "custom-type-1"
1031	// * "custom-type-2"
1032	// * "custom-type-3"
1033	// * "custom-type-4"
1034	// * "custom-type-5"
1035	//
1036	// If this field is set to an invalid value other than these, an
1037	// INVALID_ARGUMENT error is returned.
1038	//
1039	// This field directly corresponds to [Product.fulfillment_info.type][].
1040	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
1041	// Required. The IDs for this
1042	// [type][google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest.type],
1043	// such as the store IDs for "pickup-in-store" or the region IDs for
1044	// "same-day-delivery", to be removed for this
1045	// [type][google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest.type].
1046	//
1047	// At least 1 value is required, and a maximum of 2000 values are allowed.
1048	// Each value must be a string with a length limit of 10 characters, matching
1049	// the pattern [a-zA-Z0-9_-]+, such as "store1" or "REGION-2". Otherwise, an
1050	// INVALID_ARGUMENT error is returned.
1051	PlaceIds []string `protobuf:"bytes,3,rep,name=place_ids,json=placeIds,proto3" json:"place_ids,omitempty"`
1052	// The time when the fulfillment updates are issued, used to prevent
1053	// out-of-order updates on fulfillment information. If not provided, the
1054	// internal system time will be used.
1055	RemoveTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=remove_time,json=removeTime,proto3" json:"remove_time,omitempty"`
1056	// If set to true, and the [Product][google.cloud.retail.v2alpha.Product] is
1057	// not found, the fulfillment information will still be processed and retained
1058	// for at most 1 day and processed once the
1059	// [Product][google.cloud.retail.v2alpha.Product] is created. If set to false,
1060	// a NOT_FOUND error is returned if the
1061	// [Product][google.cloud.retail.v2alpha.Product] is not found.
1062	AllowMissing bool `protobuf:"varint,5,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"`
1063}
1064
1065func (x *RemoveFulfillmentPlacesRequest) Reset() {
1066	*x = RemoveFulfillmentPlacesRequest{}
1067	if protoimpl.UnsafeEnabled {
1068		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[12]
1069		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1070		ms.StoreMessageInfo(mi)
1071	}
1072}
1073
1074func (x *RemoveFulfillmentPlacesRequest) String() string {
1075	return protoimpl.X.MessageStringOf(x)
1076}
1077
1078func (*RemoveFulfillmentPlacesRequest) ProtoMessage() {}
1079
1080func (x *RemoveFulfillmentPlacesRequest) ProtoReflect() protoreflect.Message {
1081	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[12]
1082	if protoimpl.UnsafeEnabled && x != nil {
1083		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1084		if ms.LoadMessageInfo() == nil {
1085			ms.StoreMessageInfo(mi)
1086		}
1087		return ms
1088	}
1089	return mi.MessageOf(x)
1090}
1091
1092// Deprecated: Use RemoveFulfillmentPlacesRequest.ProtoReflect.Descriptor instead.
1093func (*RemoveFulfillmentPlacesRequest) Descriptor() ([]byte, []int) {
1094	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{12}
1095}
1096
1097func (x *RemoveFulfillmentPlacesRequest) GetProduct() string {
1098	if x != nil {
1099		return x.Product
1100	}
1101	return ""
1102}
1103
1104func (x *RemoveFulfillmentPlacesRequest) GetType() string {
1105	if x != nil {
1106		return x.Type
1107	}
1108	return ""
1109}
1110
1111func (x *RemoveFulfillmentPlacesRequest) GetPlaceIds() []string {
1112	if x != nil {
1113		return x.PlaceIds
1114	}
1115	return nil
1116}
1117
1118func (x *RemoveFulfillmentPlacesRequest) GetRemoveTime() *timestamppb.Timestamp {
1119	if x != nil {
1120		return x.RemoveTime
1121	}
1122	return nil
1123}
1124
1125func (x *RemoveFulfillmentPlacesRequest) GetAllowMissing() bool {
1126	if x != nil {
1127		return x.AllowMissing
1128	}
1129	return false
1130}
1131
1132// Metadata related to the progress of the RemoveFulfillmentPlaces operation.
1133// Currently empty because there is no meaningful metadata populated from the
1134// [RemoveFulfillmentPlaces][] method.
1135type RemoveFulfillmentPlacesMetadata struct {
1136	state         protoimpl.MessageState
1137	sizeCache     protoimpl.SizeCache
1138	unknownFields protoimpl.UnknownFields
1139}
1140
1141func (x *RemoveFulfillmentPlacesMetadata) Reset() {
1142	*x = RemoveFulfillmentPlacesMetadata{}
1143	if protoimpl.UnsafeEnabled {
1144		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[13]
1145		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1146		ms.StoreMessageInfo(mi)
1147	}
1148}
1149
1150func (x *RemoveFulfillmentPlacesMetadata) String() string {
1151	return protoimpl.X.MessageStringOf(x)
1152}
1153
1154func (*RemoveFulfillmentPlacesMetadata) ProtoMessage() {}
1155
1156func (x *RemoveFulfillmentPlacesMetadata) ProtoReflect() protoreflect.Message {
1157	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[13]
1158	if protoimpl.UnsafeEnabled && x != nil {
1159		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1160		if ms.LoadMessageInfo() == nil {
1161			ms.StoreMessageInfo(mi)
1162		}
1163		return ms
1164	}
1165	return mi.MessageOf(x)
1166}
1167
1168// Deprecated: Use RemoveFulfillmentPlacesMetadata.ProtoReflect.Descriptor instead.
1169func (*RemoveFulfillmentPlacesMetadata) Descriptor() ([]byte, []int) {
1170	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{13}
1171}
1172
1173// Response of the RemoveFulfillmentPlacesRequest. Currently empty because there
1174// is no meaningful response populated from the [RemoveFulfillmentPlaces][]
1175// method.
1176type RemoveFulfillmentPlacesResponse struct {
1177	state         protoimpl.MessageState
1178	sizeCache     protoimpl.SizeCache
1179	unknownFields protoimpl.UnknownFields
1180}
1181
1182func (x *RemoveFulfillmentPlacesResponse) Reset() {
1183	*x = RemoveFulfillmentPlacesResponse{}
1184	if protoimpl.UnsafeEnabled {
1185		mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[14]
1186		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1187		ms.StoreMessageInfo(mi)
1188	}
1189}
1190
1191func (x *RemoveFulfillmentPlacesResponse) String() string {
1192	return protoimpl.X.MessageStringOf(x)
1193}
1194
1195func (*RemoveFulfillmentPlacesResponse) ProtoMessage() {}
1196
1197func (x *RemoveFulfillmentPlacesResponse) ProtoReflect() protoreflect.Message {
1198	mi := &file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[14]
1199	if protoimpl.UnsafeEnabled && x != nil {
1200		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1201		if ms.LoadMessageInfo() == nil {
1202			ms.StoreMessageInfo(mi)
1203		}
1204		return ms
1205	}
1206	return mi.MessageOf(x)
1207}
1208
1209// Deprecated: Use RemoveFulfillmentPlacesResponse.ProtoReflect.Descriptor instead.
1210func (*RemoveFulfillmentPlacesResponse) Descriptor() ([]byte, []int) {
1211	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP(), []int{14}
1212}
1213
1214var File_google_cloud_retail_v2alpha_product_service_proto protoreflect.FileDescriptor
1215
1216var file_google_cloud_retail_v2alpha_product_service_proto_rawDesc = []byte{
1217	0x0a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72,
1218	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x70, 0x72,
1219	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72,
1220	0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1221	0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61,
1222	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
1223	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17,
1224	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
1225	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
1226	0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69,
1227	0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1228	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72,
1229	0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75,
1230	0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61,
1231	0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67,
1232	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61,
1233	0x69, 0x6c, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72,
1234	0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f,
1235	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74,
1236	0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f,
1237	0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
1238	0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65,
1239	0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x70, 0x72, 0x6f,
1240	0x64, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
1241	0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f,
1242	0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f,
1243	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67,
1244	0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f,
1245	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
1246	0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
1247	0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f,
1248	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69,
1249	0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,
1250	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
1251	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
1252	0xbd, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
1253	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
1254	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1e,
1255	0x0a, 0x1c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
1256	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06,
1257	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
1258	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1259	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32,
1260	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0,
1261	0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70,
1262	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
1263	0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22,
1264	0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71,
1265	0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
1266	0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61,
1267	0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
1268	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
1269	0xbd, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
1270	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64,
1271	0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
1272	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e,
1273	0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42,
1274	0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a,
1275	0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
1276	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
1277	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a,
1278	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c,
1279	0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
1280	0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22,
1281	0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1282	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
1283	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72,
1284	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
1285	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61,
1286	0x6d, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
1287	0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61,
1288	0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xfa,
1289	0x41, 0x1e, 0x0a, 0x1c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1290	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68,
1291	0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
1292	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67,
1293	0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
1294	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54,
1295	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04,
1296	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x09,
1297	0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
1298	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
1299	0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61,
1300	0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
1301	0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
1302	0x08, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53,
1303	0x69, 0x7a, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64,
1304	0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08,
1305	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
1306	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
1307	0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f,
1308	0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26,
1309	0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
1310	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67,
1311	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
1312	0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61,
1313	0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76,
1314	0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a,
1315	0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
1316	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1317	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50,
1318	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x76,
1319	0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61,
1320	0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1321	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
1322	0x4d, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x35, 0x0a,
1323	0x08, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
1324	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
1325	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x73, 0x65, 0x74,
1326	0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69,
1327	0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c,
1328	0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74,
1329	0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
1330	0x61, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72,
1331	0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x1b, 0x41, 0x64,
1332	0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63,
1333	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f,
1334	0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa,
1335	0x41, 0x1f, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1336	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
1337	0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79,
1338	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74,
1339	0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73,
1340	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, 0x6c, 0x61,
1341	0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x5f, 0x74, 0x69, 0x6d,
1342	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1343	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
1344	0x61, 0x6d, 0x70, 0x52, 0x07, 0x61, 0x64, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d,
1345	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20,
1346	0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e,
1347	0x67, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d,
1348	0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
1349	0x61, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d,
1350	0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
1351	0x65, 0x22, 0xfe, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66,
1352	0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71,
1353	0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18,
1354	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x72,
1355	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
1356	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72,
1357	0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
1358	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20,
1359	0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
1360	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x49, 0x64, 0x73,
1361	0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
1362	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
1363	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
1364	0x70, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a,
1365	0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x05,
1366	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69,
1367	0x6e, 0x67, 0x22, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66,
1368	0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74,
1369	0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46,
1370	0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73,
1371	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa5, 0x13, 0x0a, 0x0e, 0x50, 0x72, 0x6f,
1372	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xde, 0x01, 0x0a, 0x0d,
1373	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x31, 0x2e,
1374	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
1375	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61,
1376	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
1377	0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1378	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50,
1379	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x22, 0x47,
1380	0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
1381	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
1382	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73,
1383	0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70,
1384	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1385	0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
1386	0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xbb, 0x01, 0x0a,
1387	0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2e, 0x2e, 0x67, 0x6f,
1388	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
1389	0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f,
1390	0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f,
1391	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
1392	0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
1393	0x74, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x32, 0x61, 0x6c,
1394	0x70, 0x68, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
1395	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
1396	0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e,
1397	0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f,
1398	0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xcd, 0x01, 0x0a, 0x0c, 0x4c,
1399	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f,
1400	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
1401	0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
1402	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e,
1403	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
1404	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74,
1405	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
1406	0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x12, 0x47, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70,
1407	0x68, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1408	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
1409	0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61,
1410	0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1411	0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xe1, 0x01, 0x0a, 0x0d, 0x55,
1412	0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x31, 0x2e, 0x67,
1413	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61,
1414	0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
1415	0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
1416	0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
1417	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72,
1418	0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x32, 0x50, 0x2f,
1419	0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1420	0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
1421	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74,
1422	0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73,
1423	0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a,
1424	0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75,
1425	0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xb3,
1426	0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1427	0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1428	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44,
1429	0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75,
1430	0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
1431	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x57, 0x82, 0xd3, 0xe4,
1432	0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b, 0x6e,
1433	0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
1434	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c,
1435	0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a,
1436	0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0xda, 0x41, 0x04,
1437	0x6e, 0x61, 0x6d, 0x65, 0x12, 0xa2, 0x02, 0x0a, 0x0e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
1438	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1439	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32,
1440	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64,
1441	0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
1442	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
1443	0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0x82, 0xd3, 0xe4,
1444	0x93, 0x02, 0x53, 0x22, 0x4e, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b, 0x70,
1445	0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
1446	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74,
1447	0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73,
1448	0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70,
1449	0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xca, 0x41, 0x60, 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1450	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76,
1451	0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f,
1452	0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x67,
1453	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61,
1454	0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
1455	0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xc8, 0x02, 0x0a, 0x0c, 0x53, 0x65,
1456	0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f,
1457	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c,
1458	0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65,
1459	0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67,
1460	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
1461	0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe6, 0x01, 0x82, 0xd3,
1462	0xe4, 0x93, 0x02, 0x64, 0x22, 0x5f, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b,
1463	0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
1464	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
1465	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a,
1466	0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64,
1467	0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65,
1468	0x6e, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x12, 0x69, 0x6e, 0x76, 0x65, 0x6e,
1469	0x74, 0x6f, 0x72, 0x79, 0x2c, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0xca, 0x41, 0x64,
1470	0x0a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
1471	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65,
1472	0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
1473	0x73, 0x65, 0x12, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
1474	0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
1475	0x53, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61,
1476	0x64, 0x61, 0x74, 0x61, 0x12, 0xde, 0x02, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66,
1477	0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x38, 0x2e,
1478	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
1479	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x46,
1480	0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73,
1481	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1482	0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65,
1483	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xec, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x22,
1484	0x60, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75,
1485	0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
1486	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f,
1487	0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f,
1488	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64,
1489	0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65,
1490	0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xca, 0x41,
1491	0x74, 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1492	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41,
1493	0x64, 0x64, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61,
1494	0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x67, 0x6f, 0x6f,
1495	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c,
1496	0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x75, 0x6c, 0x66,
1497	0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74,
1498	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xed, 0x02, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
1499	0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65,
1500	0x73, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
1501	0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
1502	0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e,
1503	0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
1504	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e,
1505	0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf5, 0x01,
1506	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x22, 0x63, 0x2f, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61,
1507	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
1508	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
1509	0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x72, 0x61, 0x6e,
1510	0x63, 0x68, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f,
1511	0x2a, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c,
1512	0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41,
1513	0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xca, 0x41, 0x7a, 0x0a, 0x3b, 0x67, 0x6f, 0x6f,
1514	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c,
1515	0x2e, 0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46,
1516	0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73,
1517	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1518	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32,
1519	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x75, 0x6c, 0x66,
1520	0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x74,
1521	0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x49, 0xca, 0x41, 0x15, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c,
1522	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2,
1523	0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f,
1524	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74,
1525	0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
1526	0x42, 0xe1, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1527	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x61,
1528	0x6c, 0x70, 0x68, 0x61, 0x42, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x72,
1529	0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f,
1530	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,
1531	0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
1532	0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f,
1533	0x76, 0x32, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02,
1534	0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1535	0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32,
1536	0x41, 0x6c, 0x70, 0x68, 0x61, 0xca, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43,
1537	0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0x61, 0x6c,
1538	0x70, 0x68, 0x61, 0xea, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c,
1539	0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0x61,
1540	0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
1541}
1542
1543var (
1544	file_google_cloud_retail_v2alpha_product_service_proto_rawDescOnce sync.Once
1545	file_google_cloud_retail_v2alpha_product_service_proto_rawDescData = file_google_cloud_retail_v2alpha_product_service_proto_rawDesc
1546)
1547
1548func file_google_cloud_retail_v2alpha_product_service_proto_rawDescGZIP() []byte {
1549	file_google_cloud_retail_v2alpha_product_service_proto_rawDescOnce.Do(func() {
1550		file_google_cloud_retail_v2alpha_product_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2alpha_product_service_proto_rawDescData)
1551	})
1552	return file_google_cloud_retail_v2alpha_product_service_proto_rawDescData
1553}
1554
1555var file_google_cloud_retail_v2alpha_product_service_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
1556var file_google_cloud_retail_v2alpha_product_service_proto_goTypes = []interface{}{
1557	(*CreateProductRequest)(nil),            // 0: google.cloud.retail.v2alpha.CreateProductRequest
1558	(*GetProductRequest)(nil),               // 1: google.cloud.retail.v2alpha.GetProductRequest
1559	(*UpdateProductRequest)(nil),            // 2: google.cloud.retail.v2alpha.UpdateProductRequest
1560	(*DeleteProductRequest)(nil),            // 3: google.cloud.retail.v2alpha.DeleteProductRequest
1561	(*ListProductsRequest)(nil),             // 4: google.cloud.retail.v2alpha.ListProductsRequest
1562	(*ListProductsResponse)(nil),            // 5: google.cloud.retail.v2alpha.ListProductsResponse
1563	(*SetInventoryRequest)(nil),             // 6: google.cloud.retail.v2alpha.SetInventoryRequest
1564	(*SetInventoryMetadata)(nil),            // 7: google.cloud.retail.v2alpha.SetInventoryMetadata
1565	(*SetInventoryResponse)(nil),            // 8: google.cloud.retail.v2alpha.SetInventoryResponse
1566	(*AddFulfillmentPlacesRequest)(nil),     // 9: google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest
1567	(*AddFulfillmentPlacesMetadata)(nil),    // 10: google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata
1568	(*AddFulfillmentPlacesResponse)(nil),    // 11: google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse
1569	(*RemoveFulfillmentPlacesRequest)(nil),  // 12: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest
1570	(*RemoveFulfillmentPlacesMetadata)(nil), // 13: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata
1571	(*RemoveFulfillmentPlacesResponse)(nil), // 14: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse
1572	(*Product)(nil),                         // 15: google.cloud.retail.v2alpha.Product
1573	(*fieldmaskpb.FieldMask)(nil),           // 16: google.protobuf.FieldMask
1574	(*timestamppb.Timestamp)(nil),           // 17: google.protobuf.Timestamp
1575	(*ImportProductsRequest)(nil),           // 18: google.cloud.retail.v2alpha.ImportProductsRequest
1576	(*emptypb.Empty)(nil),                   // 19: google.protobuf.Empty
1577	(*longrunning.Operation)(nil),           // 20: google.longrunning.Operation
1578}
1579var file_google_cloud_retail_v2alpha_product_service_proto_depIdxs = []int32{
1580	15, // 0: google.cloud.retail.v2alpha.CreateProductRequest.product:type_name -> google.cloud.retail.v2alpha.Product
1581	15, // 1: google.cloud.retail.v2alpha.UpdateProductRequest.product:type_name -> google.cloud.retail.v2alpha.Product
1582	16, // 2: google.cloud.retail.v2alpha.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask
1583	16, // 3: google.cloud.retail.v2alpha.ListProductsRequest.read_mask:type_name -> google.protobuf.FieldMask
1584	15, // 4: google.cloud.retail.v2alpha.ListProductsResponse.products:type_name -> google.cloud.retail.v2alpha.Product
1585	15, // 5: google.cloud.retail.v2alpha.SetInventoryRequest.inventory:type_name -> google.cloud.retail.v2alpha.Product
1586	16, // 6: google.cloud.retail.v2alpha.SetInventoryRequest.set_mask:type_name -> google.protobuf.FieldMask
1587	17, // 7: google.cloud.retail.v2alpha.SetInventoryRequest.set_time:type_name -> google.protobuf.Timestamp
1588	17, // 8: google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.add_time:type_name -> google.protobuf.Timestamp
1589	17, // 9: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest.remove_time:type_name -> google.protobuf.Timestamp
1590	0,  // 10: google.cloud.retail.v2alpha.ProductService.CreateProduct:input_type -> google.cloud.retail.v2alpha.CreateProductRequest
1591	1,  // 11: google.cloud.retail.v2alpha.ProductService.GetProduct:input_type -> google.cloud.retail.v2alpha.GetProductRequest
1592	4,  // 12: google.cloud.retail.v2alpha.ProductService.ListProducts:input_type -> google.cloud.retail.v2alpha.ListProductsRequest
1593	2,  // 13: google.cloud.retail.v2alpha.ProductService.UpdateProduct:input_type -> google.cloud.retail.v2alpha.UpdateProductRequest
1594	3,  // 14: google.cloud.retail.v2alpha.ProductService.DeleteProduct:input_type -> google.cloud.retail.v2alpha.DeleteProductRequest
1595	18, // 15: google.cloud.retail.v2alpha.ProductService.ImportProducts:input_type -> google.cloud.retail.v2alpha.ImportProductsRequest
1596	6,  // 16: google.cloud.retail.v2alpha.ProductService.SetInventory:input_type -> google.cloud.retail.v2alpha.SetInventoryRequest
1597	9,  // 17: google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlaces:input_type -> google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest
1598	12, // 18: google.cloud.retail.v2alpha.ProductService.RemoveFulfillmentPlaces:input_type -> google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest
1599	15, // 19: google.cloud.retail.v2alpha.ProductService.CreateProduct:output_type -> google.cloud.retail.v2alpha.Product
1600	15, // 20: google.cloud.retail.v2alpha.ProductService.GetProduct:output_type -> google.cloud.retail.v2alpha.Product
1601	5,  // 21: google.cloud.retail.v2alpha.ProductService.ListProducts:output_type -> google.cloud.retail.v2alpha.ListProductsResponse
1602	15, // 22: google.cloud.retail.v2alpha.ProductService.UpdateProduct:output_type -> google.cloud.retail.v2alpha.Product
1603	19, // 23: google.cloud.retail.v2alpha.ProductService.DeleteProduct:output_type -> google.protobuf.Empty
1604	20, // 24: google.cloud.retail.v2alpha.ProductService.ImportProducts:output_type -> google.longrunning.Operation
1605	20, // 25: google.cloud.retail.v2alpha.ProductService.SetInventory:output_type -> google.longrunning.Operation
1606	20, // 26: google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlaces:output_type -> google.longrunning.Operation
1607	20, // 27: google.cloud.retail.v2alpha.ProductService.RemoveFulfillmentPlaces:output_type -> google.longrunning.Operation
1608	19, // [19:28] is the sub-list for method output_type
1609	10, // [10:19] is the sub-list for method input_type
1610	10, // [10:10] is the sub-list for extension type_name
1611	10, // [10:10] is the sub-list for extension extendee
1612	0,  // [0:10] is the sub-list for field type_name
1613}
1614
1615func init() { file_google_cloud_retail_v2alpha_product_service_proto_init() }
1616func file_google_cloud_retail_v2alpha_product_service_proto_init() {
1617	if File_google_cloud_retail_v2alpha_product_service_proto != nil {
1618		return
1619	}
1620	file_google_cloud_retail_v2alpha_common_proto_init()
1621	file_google_cloud_retail_v2alpha_export_config_proto_init()
1622	file_google_cloud_retail_v2alpha_import_config_proto_init()
1623	file_google_cloud_retail_v2alpha_product_proto_init()
1624	file_google_cloud_retail_v2alpha_purge_config_proto_init()
1625	if !protoimpl.UnsafeEnabled {
1626		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
1627			switch v := v.(*CreateProductRequest); i {
1628			case 0:
1629				return &v.state
1630			case 1:
1631				return &v.sizeCache
1632			case 2:
1633				return &v.unknownFields
1634			default:
1635				return nil
1636			}
1637		}
1638		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
1639			switch v := v.(*GetProductRequest); i {
1640			case 0:
1641				return &v.state
1642			case 1:
1643				return &v.sizeCache
1644			case 2:
1645				return &v.unknownFields
1646			default:
1647				return nil
1648			}
1649		}
1650		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
1651			switch v := v.(*UpdateProductRequest); i {
1652			case 0:
1653				return &v.state
1654			case 1:
1655				return &v.sizeCache
1656			case 2:
1657				return &v.unknownFields
1658			default:
1659				return nil
1660			}
1661		}
1662		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
1663			switch v := v.(*DeleteProductRequest); i {
1664			case 0:
1665				return &v.state
1666			case 1:
1667				return &v.sizeCache
1668			case 2:
1669				return &v.unknownFields
1670			default:
1671				return nil
1672			}
1673		}
1674		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
1675			switch v := v.(*ListProductsRequest); i {
1676			case 0:
1677				return &v.state
1678			case 1:
1679				return &v.sizeCache
1680			case 2:
1681				return &v.unknownFields
1682			default:
1683				return nil
1684			}
1685		}
1686		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
1687			switch v := v.(*ListProductsResponse); i {
1688			case 0:
1689				return &v.state
1690			case 1:
1691				return &v.sizeCache
1692			case 2:
1693				return &v.unknownFields
1694			default:
1695				return nil
1696			}
1697		}
1698		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
1699			switch v := v.(*SetInventoryRequest); i {
1700			case 0:
1701				return &v.state
1702			case 1:
1703				return &v.sizeCache
1704			case 2:
1705				return &v.unknownFields
1706			default:
1707				return nil
1708			}
1709		}
1710		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
1711			switch v := v.(*SetInventoryMetadata); i {
1712			case 0:
1713				return &v.state
1714			case 1:
1715				return &v.sizeCache
1716			case 2:
1717				return &v.unknownFields
1718			default:
1719				return nil
1720			}
1721		}
1722		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
1723			switch v := v.(*SetInventoryResponse); i {
1724			case 0:
1725				return &v.state
1726			case 1:
1727				return &v.sizeCache
1728			case 2:
1729				return &v.unknownFields
1730			default:
1731				return nil
1732			}
1733		}
1734		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
1735			switch v := v.(*AddFulfillmentPlacesRequest); i {
1736			case 0:
1737				return &v.state
1738			case 1:
1739				return &v.sizeCache
1740			case 2:
1741				return &v.unknownFields
1742			default:
1743				return nil
1744			}
1745		}
1746		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
1747			switch v := v.(*AddFulfillmentPlacesMetadata); i {
1748			case 0:
1749				return &v.state
1750			case 1:
1751				return &v.sizeCache
1752			case 2:
1753				return &v.unknownFields
1754			default:
1755				return nil
1756			}
1757		}
1758		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
1759			switch v := v.(*AddFulfillmentPlacesResponse); i {
1760			case 0:
1761				return &v.state
1762			case 1:
1763				return &v.sizeCache
1764			case 2:
1765				return &v.unknownFields
1766			default:
1767				return nil
1768			}
1769		}
1770		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
1771			switch v := v.(*RemoveFulfillmentPlacesRequest); i {
1772			case 0:
1773				return &v.state
1774			case 1:
1775				return &v.sizeCache
1776			case 2:
1777				return &v.unknownFields
1778			default:
1779				return nil
1780			}
1781		}
1782		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
1783			switch v := v.(*RemoveFulfillmentPlacesMetadata); i {
1784			case 0:
1785				return &v.state
1786			case 1:
1787				return &v.sizeCache
1788			case 2:
1789				return &v.unknownFields
1790			default:
1791				return nil
1792			}
1793		}
1794		file_google_cloud_retail_v2alpha_product_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
1795			switch v := v.(*RemoveFulfillmentPlacesResponse); i {
1796			case 0:
1797				return &v.state
1798			case 1:
1799				return &v.sizeCache
1800			case 2:
1801				return &v.unknownFields
1802			default:
1803				return nil
1804			}
1805		}
1806	}
1807	type x struct{}
1808	out := protoimpl.TypeBuilder{
1809		File: protoimpl.DescBuilder{
1810			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1811			RawDescriptor: file_google_cloud_retail_v2alpha_product_service_proto_rawDesc,
1812			NumEnums:      0,
1813			NumMessages:   15,
1814			NumExtensions: 0,
1815			NumServices:   1,
1816		},
1817		GoTypes:           file_google_cloud_retail_v2alpha_product_service_proto_goTypes,
1818		DependencyIndexes: file_google_cloud_retail_v2alpha_product_service_proto_depIdxs,
1819		MessageInfos:      file_google_cloud_retail_v2alpha_product_service_proto_msgTypes,
1820	}.Build()
1821	File_google_cloud_retail_v2alpha_product_service_proto = out.File
1822	file_google_cloud_retail_v2alpha_product_service_proto_rawDesc = nil
1823	file_google_cloud_retail_v2alpha_product_service_proto_goTypes = nil
1824	file_google_cloud_retail_v2alpha_product_service_proto_depIdxs = nil
1825}
1826
1827// Reference imports to suppress errors if they are not otherwise used.
1828var _ context.Context
1829var _ grpc.ClientConnInterface
1830
1831// This is a compile-time assertion to ensure that this generated file
1832// is compatible with the grpc package it is being compiled against.
1833const _ = grpc.SupportPackageIsVersion6
1834
1835// ProductServiceClient is the client API for ProductService service.
1836//
1837// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
1838type ProductServiceClient interface {
1839	// Creates a [Product][google.cloud.retail.v2alpha.Product].
1840	CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error)
1841	// Gets a [Product][google.cloud.retail.v2alpha.Product].
1842	GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error)
1843	// Gets a list of [Product][google.cloud.retail.v2alpha.Product]s.
1844	ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error)
1845	// Updates a [Product][google.cloud.retail.v2alpha.Product].
1846	UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error)
1847	// Deletes a [Product][google.cloud.retail.v2alpha.Product].
1848	DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
1849	// Bulk import of multiple [Product][google.cloud.retail.v2alpha.Product]s.
1850	//
1851	// Request processing may be synchronous. No partial updating is supported.
1852	// Non-existing items are created.
1853	//
1854	// Note that it is possible for a subset of the
1855	// [Product][google.cloud.retail.v2alpha.Product]s to be successfully updated.
1856	ImportProducts(ctx context.Context, in *ImportProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
1857	// Updates inventory information for a
1858	// [Product][google.cloud.retail.v2alpha.Product] while respecting the last
1859	// update timestamps of each inventory field.
1860	//
1861	// This process is asynchronous and does not require the
1862	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
1863	// fulfillment information. If the request is valid, the update will be
1864	// enqueued and processed downstream. As a consequence, when a response is
1865	// returned, updates are not immediately manifested in the
1866	// [Product][google.cloud.retail.v2alpha.Product] queried by
1867	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
1868	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
1869	//
1870	// When inventory is updated with
1871	// [CreateProduct][google.cloud.retail.v2alpha.ProductService.CreateProduct]
1872	// and
1873	// [UpdateProduct][google.cloud.retail.v2alpha.ProductService.UpdateProduct],
1874	// the specified inventory field value(s) will overwrite any existing value(s)
1875	// while ignoring the last update time for this field. Furthermore, the last
1876	// update time for the specified inventory fields will be overwritten to the
1877	// time of the
1878	// [CreateProduct][google.cloud.retail.v2alpha.ProductService.CreateProduct]
1879	// or
1880	// [UpdateProduct][google.cloud.retail.v2alpha.ProductService.UpdateProduct]
1881	// request.
1882	//
1883	// If no inventory fields are set in
1884	// [CreateProductRequest.product][google.cloud.retail.v2alpha.CreateProductRequest.product],
1885	// then any pre-existing inventory information for this product will be used.
1886	//
1887	// If no inventory fields are set in [UpdateProductRequest.set_mask][],
1888	// then any existing inventory information will be preserved.
1889	//
1890	// Pre-existing inventory information can only be updated with
1891	// [SetInventory][google.cloud.retail.v2alpha.ProductService.SetInventory],
1892	// [AddFulfillmentPlaces][google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlaces],
1893	// and
1894	// [RemoveFulfillmentPlaces][google.cloud.retail.v2alpha.ProductService.RemoveFulfillmentPlaces].
1895	//
1896	// This feature is only available for users who have Retail Search enabled.
1897	// Please submit a form [here](https://cloud.google.com/contact) to contact
1898	// cloud sales if you are interested in using Retail Search.
1899	SetInventory(ctx context.Context, in *SetInventoryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
1900	// Incrementally adds place IDs to
1901	// [Product.fulfillment_info.place_ids][google.cloud.retail.v2alpha.FulfillmentInfo.place_ids].
1902	//
1903	// This process is asynchronous and does not require the
1904	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
1905	// fulfillment information. If the request is valid, the update will be
1906	// enqueued and processed downstream. As a consequence, when a response is
1907	// returned, the added place IDs are not immediately manifested in the
1908	// [Product][google.cloud.retail.v2alpha.Product] queried by
1909	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
1910	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
1911	//
1912	// This feature is only available for users who have Retail Search enabled.
1913	// Please submit a form [here](https://cloud.google.com/contact) to contact
1914	// cloud sales if you are interested in using Retail Search.
1915	AddFulfillmentPlaces(ctx context.Context, in *AddFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
1916	// Incrementally removes place IDs from a
1917	// [Product.fulfillment_info.place_ids][google.cloud.retail.v2alpha.FulfillmentInfo.place_ids].
1918	//
1919	// This process is asynchronous and does not require the
1920	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
1921	// fulfillment information. If the request is valid, the update will be
1922	// enqueued and processed downstream. As a consequence, when a response is
1923	// returned, the removed place IDs are not immediately manifested in the
1924	// [Product][google.cloud.retail.v2alpha.Product] queried by
1925	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
1926	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
1927	//
1928	// This feature is only available for users who have Retail Search enabled.
1929	// Please submit a form [here](https://cloud.google.com/contact) to contact
1930	// cloud sales if you are interested in using Retail Search.
1931	RemoveFulfillmentPlaces(ctx context.Context, in *RemoveFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
1932}
1933
1934type productServiceClient struct {
1935	cc grpc.ClientConnInterface
1936}
1937
1938func NewProductServiceClient(cc grpc.ClientConnInterface) ProductServiceClient {
1939	return &productServiceClient{cc}
1940}
1941
1942func (c *productServiceClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) {
1943	out := new(Product)
1944	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/CreateProduct", in, out, opts...)
1945	if err != nil {
1946		return nil, err
1947	}
1948	return out, nil
1949}
1950
1951func (c *productServiceClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) {
1952	out := new(Product)
1953	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/GetProduct", in, out, opts...)
1954	if err != nil {
1955		return nil, err
1956	}
1957	return out, nil
1958}
1959
1960func (c *productServiceClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) {
1961	out := new(ListProductsResponse)
1962	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/ListProducts", in, out, opts...)
1963	if err != nil {
1964		return nil, err
1965	}
1966	return out, nil
1967}
1968
1969func (c *productServiceClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) {
1970	out := new(Product)
1971	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/UpdateProduct", in, out, opts...)
1972	if err != nil {
1973		return nil, err
1974	}
1975	return out, nil
1976}
1977
1978func (c *productServiceClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
1979	out := new(emptypb.Empty)
1980	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/DeleteProduct", in, out, opts...)
1981	if err != nil {
1982		return nil, err
1983	}
1984	return out, nil
1985}
1986
1987func (c *productServiceClient) ImportProducts(ctx context.Context, in *ImportProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
1988	out := new(longrunning.Operation)
1989	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/ImportProducts", in, out, opts...)
1990	if err != nil {
1991		return nil, err
1992	}
1993	return out, nil
1994}
1995
1996func (c *productServiceClient) SetInventory(ctx context.Context, in *SetInventoryRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
1997	out := new(longrunning.Operation)
1998	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/SetInventory", in, out, opts...)
1999	if err != nil {
2000		return nil, err
2001	}
2002	return out, nil
2003}
2004
2005func (c *productServiceClient) AddFulfillmentPlaces(ctx context.Context, in *AddFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
2006	out := new(longrunning.Operation)
2007	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/AddFulfillmentPlaces", in, out, opts...)
2008	if err != nil {
2009		return nil, err
2010	}
2011	return out, nil
2012}
2013
2014func (c *productServiceClient) RemoveFulfillmentPlaces(ctx context.Context, in *RemoveFulfillmentPlacesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
2015	out := new(longrunning.Operation)
2016	err := c.cc.Invoke(ctx, "/google.cloud.retail.v2alpha.ProductService/RemoveFulfillmentPlaces", in, out, opts...)
2017	if err != nil {
2018		return nil, err
2019	}
2020	return out, nil
2021}
2022
2023// ProductServiceServer is the server API for ProductService service.
2024type ProductServiceServer interface {
2025	// Creates a [Product][google.cloud.retail.v2alpha.Product].
2026	CreateProduct(context.Context, *CreateProductRequest) (*Product, error)
2027	// Gets a [Product][google.cloud.retail.v2alpha.Product].
2028	GetProduct(context.Context, *GetProductRequest) (*Product, error)
2029	// Gets a list of [Product][google.cloud.retail.v2alpha.Product]s.
2030	ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error)
2031	// Updates a [Product][google.cloud.retail.v2alpha.Product].
2032	UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error)
2033	// Deletes a [Product][google.cloud.retail.v2alpha.Product].
2034	DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error)
2035	// Bulk import of multiple [Product][google.cloud.retail.v2alpha.Product]s.
2036	//
2037	// Request processing may be synchronous. No partial updating is supported.
2038	// Non-existing items are created.
2039	//
2040	// Note that it is possible for a subset of the
2041	// [Product][google.cloud.retail.v2alpha.Product]s to be successfully updated.
2042	ImportProducts(context.Context, *ImportProductsRequest) (*longrunning.Operation, error)
2043	// Updates inventory information for a
2044	// [Product][google.cloud.retail.v2alpha.Product] while respecting the last
2045	// update timestamps of each inventory field.
2046	//
2047	// This process is asynchronous and does not require the
2048	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
2049	// fulfillment information. If the request is valid, the update will be
2050	// enqueued and processed downstream. As a consequence, when a response is
2051	// returned, updates are not immediately manifested in the
2052	// [Product][google.cloud.retail.v2alpha.Product] queried by
2053	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
2054	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
2055	//
2056	// When inventory is updated with
2057	// [CreateProduct][google.cloud.retail.v2alpha.ProductService.CreateProduct]
2058	// and
2059	// [UpdateProduct][google.cloud.retail.v2alpha.ProductService.UpdateProduct],
2060	// the specified inventory field value(s) will overwrite any existing value(s)
2061	// while ignoring the last update time for this field. Furthermore, the last
2062	// update time for the specified inventory fields will be overwritten to the
2063	// time of the
2064	// [CreateProduct][google.cloud.retail.v2alpha.ProductService.CreateProduct]
2065	// or
2066	// [UpdateProduct][google.cloud.retail.v2alpha.ProductService.UpdateProduct]
2067	// request.
2068	//
2069	// If no inventory fields are set in
2070	// [CreateProductRequest.product][google.cloud.retail.v2alpha.CreateProductRequest.product],
2071	// then any pre-existing inventory information for this product will be used.
2072	//
2073	// If no inventory fields are set in [UpdateProductRequest.set_mask][],
2074	// then any existing inventory information will be preserved.
2075	//
2076	// Pre-existing inventory information can only be updated with
2077	// [SetInventory][google.cloud.retail.v2alpha.ProductService.SetInventory],
2078	// [AddFulfillmentPlaces][google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlaces],
2079	// and
2080	// [RemoveFulfillmentPlaces][google.cloud.retail.v2alpha.ProductService.RemoveFulfillmentPlaces].
2081	//
2082	// This feature is only available for users who have Retail Search enabled.
2083	// Please submit a form [here](https://cloud.google.com/contact) to contact
2084	// cloud sales if you are interested in using Retail Search.
2085	SetInventory(context.Context, *SetInventoryRequest) (*longrunning.Operation, error)
2086	// Incrementally adds place IDs to
2087	// [Product.fulfillment_info.place_ids][google.cloud.retail.v2alpha.FulfillmentInfo.place_ids].
2088	//
2089	// This process is asynchronous and does not require the
2090	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
2091	// fulfillment information. If the request is valid, the update will be
2092	// enqueued and processed downstream. As a consequence, when a response is
2093	// returned, the added place IDs are not immediately manifested in the
2094	// [Product][google.cloud.retail.v2alpha.Product] queried by
2095	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
2096	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
2097	//
2098	// This feature is only available for users who have Retail Search enabled.
2099	// Please submit a form [here](https://cloud.google.com/contact) to contact
2100	// cloud sales if you are interested in using Retail Search.
2101	AddFulfillmentPlaces(context.Context, *AddFulfillmentPlacesRequest) (*longrunning.Operation, error)
2102	// Incrementally removes place IDs from a
2103	// [Product.fulfillment_info.place_ids][google.cloud.retail.v2alpha.FulfillmentInfo.place_ids].
2104	//
2105	// This process is asynchronous and does not require the
2106	// [Product][google.cloud.retail.v2alpha.Product] to exist before updating
2107	// fulfillment information. If the request is valid, the update will be
2108	// enqueued and processed downstream. As a consequence, when a response is
2109	// returned, the removed place IDs are not immediately manifested in the
2110	// [Product][google.cloud.retail.v2alpha.Product] queried by
2111	// [GetProduct][google.cloud.retail.v2alpha.ProductService.GetProduct] or
2112	// [ListProducts][google.cloud.retail.v2alpha.ProductService.ListProducts].
2113	//
2114	// This feature is only available for users who have Retail Search enabled.
2115	// Please submit a form [here](https://cloud.google.com/contact) to contact
2116	// cloud sales if you are interested in using Retail Search.
2117	RemoveFulfillmentPlaces(context.Context, *RemoveFulfillmentPlacesRequest) (*longrunning.Operation, error)
2118}
2119
2120// UnimplementedProductServiceServer can be embedded to have forward compatible implementations.
2121type UnimplementedProductServiceServer struct {
2122}
2123
2124func (*UnimplementedProductServiceServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) {
2125	return nil, status.Errorf(codes.Unimplemented, "method CreateProduct not implemented")
2126}
2127func (*UnimplementedProductServiceServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) {
2128	return nil, status.Errorf(codes.Unimplemented, "method GetProduct not implemented")
2129}
2130func (*UnimplementedProductServiceServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) {
2131	return nil, status.Errorf(codes.Unimplemented, "method ListProducts not implemented")
2132}
2133func (*UnimplementedProductServiceServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) {
2134	return nil, status.Errorf(codes.Unimplemented, "method UpdateProduct not implemented")
2135}
2136func (*UnimplementedProductServiceServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) {
2137	return nil, status.Errorf(codes.Unimplemented, "method DeleteProduct not implemented")
2138}
2139func (*UnimplementedProductServiceServer) ImportProducts(context.Context, *ImportProductsRequest) (*longrunning.Operation, error) {
2140	return nil, status.Errorf(codes.Unimplemented, "method ImportProducts not implemented")
2141}
2142func (*UnimplementedProductServiceServer) SetInventory(context.Context, *SetInventoryRequest) (*longrunning.Operation, error) {
2143	return nil, status.Errorf(codes.Unimplemented, "method SetInventory not implemented")
2144}
2145func (*UnimplementedProductServiceServer) AddFulfillmentPlaces(context.Context, *AddFulfillmentPlacesRequest) (*longrunning.Operation, error) {
2146	return nil, status.Errorf(codes.Unimplemented, "method AddFulfillmentPlaces not implemented")
2147}
2148func (*UnimplementedProductServiceServer) RemoveFulfillmentPlaces(context.Context, *RemoveFulfillmentPlacesRequest) (*longrunning.Operation, error) {
2149	return nil, status.Errorf(codes.Unimplemented, "method RemoveFulfillmentPlaces not implemented")
2150}
2151
2152func RegisterProductServiceServer(s *grpc.Server, srv ProductServiceServer) {
2153	s.RegisterService(&_ProductService_serviceDesc, srv)
2154}
2155
2156func _ProductService_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2157	in := new(CreateProductRequest)
2158	if err := dec(in); err != nil {
2159		return nil, err
2160	}
2161	if interceptor == nil {
2162		return srv.(ProductServiceServer).CreateProduct(ctx, in)
2163	}
2164	info := &grpc.UnaryServerInfo{
2165		Server:     srv,
2166		FullMethod: "/google.cloud.retail.v2alpha.ProductService/CreateProduct",
2167	}
2168	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2169		return srv.(ProductServiceServer).CreateProduct(ctx, req.(*CreateProductRequest))
2170	}
2171	return interceptor(ctx, in, info, handler)
2172}
2173
2174func _ProductService_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2175	in := new(GetProductRequest)
2176	if err := dec(in); err != nil {
2177		return nil, err
2178	}
2179	if interceptor == nil {
2180		return srv.(ProductServiceServer).GetProduct(ctx, in)
2181	}
2182	info := &grpc.UnaryServerInfo{
2183		Server:     srv,
2184		FullMethod: "/google.cloud.retail.v2alpha.ProductService/GetProduct",
2185	}
2186	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2187		return srv.(ProductServiceServer).GetProduct(ctx, req.(*GetProductRequest))
2188	}
2189	return interceptor(ctx, in, info, handler)
2190}
2191
2192func _ProductService_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2193	in := new(ListProductsRequest)
2194	if err := dec(in); err != nil {
2195		return nil, err
2196	}
2197	if interceptor == nil {
2198		return srv.(ProductServiceServer).ListProducts(ctx, in)
2199	}
2200	info := &grpc.UnaryServerInfo{
2201		Server:     srv,
2202		FullMethod: "/google.cloud.retail.v2alpha.ProductService/ListProducts",
2203	}
2204	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2205		return srv.(ProductServiceServer).ListProducts(ctx, req.(*ListProductsRequest))
2206	}
2207	return interceptor(ctx, in, info, handler)
2208}
2209
2210func _ProductService_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2211	in := new(UpdateProductRequest)
2212	if err := dec(in); err != nil {
2213		return nil, err
2214	}
2215	if interceptor == nil {
2216		return srv.(ProductServiceServer).UpdateProduct(ctx, in)
2217	}
2218	info := &grpc.UnaryServerInfo{
2219		Server:     srv,
2220		FullMethod: "/google.cloud.retail.v2alpha.ProductService/UpdateProduct",
2221	}
2222	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2223		return srv.(ProductServiceServer).UpdateProduct(ctx, req.(*UpdateProductRequest))
2224	}
2225	return interceptor(ctx, in, info, handler)
2226}
2227
2228func _ProductService_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2229	in := new(DeleteProductRequest)
2230	if err := dec(in); err != nil {
2231		return nil, err
2232	}
2233	if interceptor == nil {
2234		return srv.(ProductServiceServer).DeleteProduct(ctx, in)
2235	}
2236	info := &grpc.UnaryServerInfo{
2237		Server:     srv,
2238		FullMethod: "/google.cloud.retail.v2alpha.ProductService/DeleteProduct",
2239	}
2240	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2241		return srv.(ProductServiceServer).DeleteProduct(ctx, req.(*DeleteProductRequest))
2242	}
2243	return interceptor(ctx, in, info, handler)
2244}
2245
2246func _ProductService_ImportProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2247	in := new(ImportProductsRequest)
2248	if err := dec(in); err != nil {
2249		return nil, err
2250	}
2251	if interceptor == nil {
2252		return srv.(ProductServiceServer).ImportProducts(ctx, in)
2253	}
2254	info := &grpc.UnaryServerInfo{
2255		Server:     srv,
2256		FullMethod: "/google.cloud.retail.v2alpha.ProductService/ImportProducts",
2257	}
2258	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2259		return srv.(ProductServiceServer).ImportProducts(ctx, req.(*ImportProductsRequest))
2260	}
2261	return interceptor(ctx, in, info, handler)
2262}
2263
2264func _ProductService_SetInventory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2265	in := new(SetInventoryRequest)
2266	if err := dec(in); err != nil {
2267		return nil, err
2268	}
2269	if interceptor == nil {
2270		return srv.(ProductServiceServer).SetInventory(ctx, in)
2271	}
2272	info := &grpc.UnaryServerInfo{
2273		Server:     srv,
2274		FullMethod: "/google.cloud.retail.v2alpha.ProductService/SetInventory",
2275	}
2276	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2277		return srv.(ProductServiceServer).SetInventory(ctx, req.(*SetInventoryRequest))
2278	}
2279	return interceptor(ctx, in, info, handler)
2280}
2281
2282func _ProductService_AddFulfillmentPlaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2283	in := new(AddFulfillmentPlacesRequest)
2284	if err := dec(in); err != nil {
2285		return nil, err
2286	}
2287	if interceptor == nil {
2288		return srv.(ProductServiceServer).AddFulfillmentPlaces(ctx, in)
2289	}
2290	info := &grpc.UnaryServerInfo{
2291		Server:     srv,
2292		FullMethod: "/google.cloud.retail.v2alpha.ProductService/AddFulfillmentPlaces",
2293	}
2294	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2295		return srv.(ProductServiceServer).AddFulfillmentPlaces(ctx, req.(*AddFulfillmentPlacesRequest))
2296	}
2297	return interceptor(ctx, in, info, handler)
2298}
2299
2300func _ProductService_RemoveFulfillmentPlaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2301	in := new(RemoveFulfillmentPlacesRequest)
2302	if err := dec(in); err != nil {
2303		return nil, err
2304	}
2305	if interceptor == nil {
2306		return srv.(ProductServiceServer).RemoveFulfillmentPlaces(ctx, in)
2307	}
2308	info := &grpc.UnaryServerInfo{
2309		Server:     srv,
2310		FullMethod: "/google.cloud.retail.v2alpha.ProductService/RemoveFulfillmentPlaces",
2311	}
2312	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2313		return srv.(ProductServiceServer).RemoveFulfillmentPlaces(ctx, req.(*RemoveFulfillmentPlacesRequest))
2314	}
2315	return interceptor(ctx, in, info, handler)
2316}
2317
2318var _ProductService_serviceDesc = grpc.ServiceDesc{
2319	ServiceName: "google.cloud.retail.v2alpha.ProductService",
2320	HandlerType: (*ProductServiceServer)(nil),
2321	Methods: []grpc.MethodDesc{
2322		{
2323			MethodName: "CreateProduct",
2324			Handler:    _ProductService_CreateProduct_Handler,
2325		},
2326		{
2327			MethodName: "GetProduct",
2328			Handler:    _ProductService_GetProduct_Handler,
2329		},
2330		{
2331			MethodName: "ListProducts",
2332			Handler:    _ProductService_ListProducts_Handler,
2333		},
2334		{
2335			MethodName: "UpdateProduct",
2336			Handler:    _ProductService_UpdateProduct_Handler,
2337		},
2338		{
2339			MethodName: "DeleteProduct",
2340			Handler:    _ProductService_DeleteProduct_Handler,
2341		},
2342		{
2343			MethodName: "ImportProducts",
2344			Handler:    _ProductService_ImportProducts_Handler,
2345		},
2346		{
2347			MethodName: "SetInventory",
2348			Handler:    _ProductService_SetInventory_Handler,
2349		},
2350		{
2351			MethodName: "AddFulfillmentPlaces",
2352			Handler:    _ProductService_AddFulfillmentPlaces_Handler,
2353		},
2354		{
2355			MethodName: "RemoveFulfillmentPlaces",
2356			Handler:    _ProductService_RemoveFulfillmentPlaces_Handler,
2357		},
2358	},
2359	Streams:  []grpc.StreamDesc{},
2360	Metadata: "google/cloud/retail/v2alpha/product_service.proto",
2361}
2362