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