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