1// Copyright 2020 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.25.0-devel
18// 	protoc        v3.13.0
19// source: google/cloud/retail/v2/product.proto
20
21package retail
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	proto "github.com/golang/protobuf/proto"
28	_ "google.golang.org/genproto/googleapis/api/annotations"
29	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
30	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
31	_ "google.golang.org/protobuf/types/known/fieldmaskpb"
32	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
33	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
34)
35
36const (
37	// Verify that this generated code is sufficiently up-to-date.
38	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
39	// Verify that runtime/protoimpl is sufficiently up-to-date.
40	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
41)
42
43// This is a compile-time assertion that a sufficiently up-to-date version
44// of the legacy proto package is being used.
45const _ = proto.ProtoPackageIsVersion4
46
47// The type of this product.
48type Product_Type int32
49
50const (
51	// Default value. Default to
52	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] if unset.
53	Product_TYPE_UNSPECIFIED Product_Type = 0
54	// The primary type.
55	//
56	// As the primary unit for predicting, indexing and search serving, a
57	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
58	// [Product][google.cloud.retail.v2.Product] is grouped with multiple
59	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
60	// [Product][google.cloud.retail.v2.Product]s.
61	Product_PRIMARY Product_Type = 1
62	// The variant type.
63	//
64	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
65	// [Product][google.cloud.retail.v2.Product]s usually share some common
66	// attributes on the same
67	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
68	// [Product][google.cloud.retail.v2.Product]s, but they have variant
69	// attributes like different colors, sizes and prices, etc.
70	Product_VARIANT Product_Type = 2
71	// The collection type. Collection products are bundled
72	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
73	// [Product][google.cloud.retail.v2.Product]s or
74	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
75	// [Product][google.cloud.retail.v2.Product]s that are sold together, such
76	// as a jewelry set with necklaces, earrings and rings, etc.
77	Product_COLLECTION Product_Type = 3
78)
79
80// Enum value maps for Product_Type.
81var (
82	Product_Type_name = map[int32]string{
83		0: "TYPE_UNSPECIFIED",
84		1: "PRIMARY",
85		2: "VARIANT",
86		3: "COLLECTION",
87	}
88	Product_Type_value = map[string]int32{
89		"TYPE_UNSPECIFIED": 0,
90		"PRIMARY":          1,
91		"VARIANT":          2,
92		"COLLECTION":       3,
93	}
94)
95
96func (x Product_Type) Enum() *Product_Type {
97	p := new(Product_Type)
98	*p = x
99	return p
100}
101
102func (x Product_Type) String() string {
103	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
104}
105
106func (Product_Type) Descriptor() protoreflect.EnumDescriptor {
107	return file_google_cloud_retail_v2_product_proto_enumTypes[0].Descriptor()
108}
109
110func (Product_Type) Type() protoreflect.EnumType {
111	return &file_google_cloud_retail_v2_product_proto_enumTypes[0]
112}
113
114func (x Product_Type) Number() protoreflect.EnumNumber {
115	return protoreflect.EnumNumber(x)
116}
117
118// Deprecated: Use Product_Type.Descriptor instead.
119func (Product_Type) EnumDescriptor() ([]byte, []int) {
120	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0, 0}
121}
122
123// Product availability. If this field is unspecified, the product is
124// assumed to be in stock.
125type Product_Availability int32
126
127const (
128	// Default product availability. Default to
129	// [Availability.IN_STOCK][google.cloud.retail.v2.Product.Availability.IN_STOCK]
130	// if unset.
131	Product_AVAILABILITY_UNSPECIFIED Product_Availability = 0
132	// Product in stock.
133	Product_IN_STOCK Product_Availability = 1
134	// Product out of stock.
135	Product_OUT_OF_STOCK Product_Availability = 2
136	// Product that is in pre-order state.
137	Product_PREORDER Product_Availability = 3
138	// Product that is back-ordered (i.e. temporarily out of stock).
139	Product_BACKORDER Product_Availability = 4
140)
141
142// Enum value maps for Product_Availability.
143var (
144	Product_Availability_name = map[int32]string{
145		0: "AVAILABILITY_UNSPECIFIED",
146		1: "IN_STOCK",
147		2: "OUT_OF_STOCK",
148		3: "PREORDER",
149		4: "BACKORDER",
150	}
151	Product_Availability_value = map[string]int32{
152		"AVAILABILITY_UNSPECIFIED": 0,
153		"IN_STOCK":                 1,
154		"OUT_OF_STOCK":             2,
155		"PREORDER":                 3,
156		"BACKORDER":                4,
157	}
158)
159
160func (x Product_Availability) Enum() *Product_Availability {
161	p := new(Product_Availability)
162	*p = x
163	return p
164}
165
166func (x Product_Availability) String() string {
167	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
168}
169
170func (Product_Availability) Descriptor() protoreflect.EnumDescriptor {
171	return file_google_cloud_retail_v2_product_proto_enumTypes[1].Descriptor()
172}
173
174func (Product_Availability) Type() protoreflect.EnumType {
175	return &file_google_cloud_retail_v2_product_proto_enumTypes[1]
176}
177
178func (x Product_Availability) Number() protoreflect.EnumNumber {
179	return protoreflect.EnumNumber(x)
180}
181
182// Deprecated: Use Product_Availability.Descriptor instead.
183func (Product_Availability) EnumDescriptor() ([]byte, []int) {
184	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0, 1}
185}
186
187// Product captures all metadata information of items to be recommended or
188// searched.
189type Product struct {
190	state         protoimpl.MessageState
191	sizeCache     protoimpl.SizeCache
192	unknownFields protoimpl.UnknownFields
193
194	// Immutable. Full resource name of the product, such as
195	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.
196	//
197	// The branch ID must be "default_branch".
198	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
199	// Immutable. [Product][google.cloud.retail.v2.Product] identifier, which is
200	// the final component of [name][google.cloud.retail.v2.Product.name]. For
201	// example, this field is "id_1", if
202	// [name][google.cloud.retail.v2.Product.name] is
203	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`.
204	//
205	// This field must be a UTF-8 encoded string with a length limit of 128
206	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
207	//
208	// Google Merchant Center property
209	// [id](https://support.google.com/merchants/answer/6324405). Schema.org
210	// Property [Product.sku](https://schema.org/sku).
211	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
212	// Immutable. The type of the product. This field is output-only.
213	Type Product_Type `protobuf:"varint,3,opt,name=type,proto3,enum=google.cloud.retail.v2.Product_Type" json:"type,omitempty"`
214	// Variant group identifier. Must be an
215	// [id][google.cloud.retail.v2.Product.id], with the same parent branch with
216	// this product. Otherwise, an error is thrown.
217	//
218	// For [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
219	// [Product][google.cloud.retail.v2.Product]s, this field can only be empty or
220	// set to the same value as [id][google.cloud.retail.v2.Product.id].
221	//
222	// For VARIANT [Product][google.cloud.retail.v2.Product]s, this field cannot
223	// be empty. A maximum of 2,000 products are allowed to share the same
224	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
225	// [Product][google.cloud.retail.v2.Product]. Otherwise, an INVALID_ARGUMENT
226	// error is returned.
227	//
228	// Google Merchant Center Property
229	// [item_group_id](https://support.google.com/merchants/answer/6324507).
230	// Schema.org Property
231	// [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).
232	//
233	// This field must be enabled before it can be used. [Learn
234	// more](/recommendations-ai/docs/catalog#item-group-id).
235	PrimaryProductId string `protobuf:"bytes,4,opt,name=primary_product_id,json=primaryProductId,proto3" json:"primary_product_id,omitempty"`
236	// Product categories. This field is repeated for supporting one product
237	// belonging to several parallel categories. Strongly recommended using the
238	// full path for better search / recommendation quality.
239	//
240	//
241	// To represent full path of category, use '>' sign to separate different
242	// hierarchies. If '>' is part of the category name, please replace it with
243	// other character(s).
244	//
245	// For example, if a shoes product belongs to both
246	// ["Shoes & Accessories" -> "Shoes"] and
247	// ["Sports & Fitness" -> "Athletic Clothing" -> "Shoes"], it could be
248	// represented as:
249	//
250	//      "categories": [
251	//        "Shoes & Accessories > Shoes",
252	//        "Sports & Fitness > Athletic Clothing > Shoes"
253	//      ]
254	//
255	// Must be set for [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
256	// [Product][google.cloud.retail.v2.Product] otherwise an INVALID_ARGUMENT
257	// error is returned.
258	//
259	// At most 250 values are allowed per
260	// [Product][google.cloud.retail.v2.Product]. Empty values are not allowed.
261	// Each value must be a UTF-8 encoded string with a length limit of 5,000
262	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
263	//
264	// Google Merchant Center property
265	// [google_product_category][mc_google_product_category]. Schema.org property
266	// [Product.category] (https://schema.org/category).
267	//
268	// [mc_google_product_category]:
269	// https://support.google.com/merchants/answer/6324436
270	Categories []string `protobuf:"bytes,7,rep,name=categories,proto3" json:"categories,omitempty"`
271	// Required. Product title.
272	//
273	// This field must be a UTF-8 encoded string with a length limit of 128
274	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
275	//
276	// Google Merchant Center property
277	// [title](https://support.google.com/merchants/answer/6324415). Schema.org
278	// property [Product.name](https://schema.org/name).
279	Title string `protobuf:"bytes,8,opt,name=title,proto3" json:"title,omitempty"`
280	// Product description.
281	//
282	// This field must be a UTF-8 encoded string with a length limit of 5,000
283	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
284	//
285	// Google Merchant Center property
286	// [description](https://support.google.com/merchants/answer/6324468).
287	// schema.org property [Product.description](https://schema.org/description).
288	Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"`
289	// Highly encouraged. Extra product attributes to be included. For example,
290	// for products, this could include the store name, vendor, style, color, etc.
291	// These are very strong signals for recommendation model, thus we highly
292	// recommend providing the attributes here.
293	//
294	// Features that can take on one of a limited number of possible values. Two
295	// types of features can be set are:
296	//
297	// Textual features. some examples would be the brand/maker of a product, or
298	// country of a customer. Numerical features. Some examples would be the
299	// height/weight of a product, or age of a customer.
300	//
301	// For example: `{ "vendor": {"text": ["vendor123", "vendor456"]},
302	// "lengths_cm": {"numbers":[2.3, 15.4]}, "heights_cm": {"numbers":[8.1, 6.4]}
303	// }`.
304	//
305	// A maximum of 150 attributes are allowed. Otherwise, an INVALID_ARGUMENT
306	// error is returned.
307	//
308	// The key must be a UTF-8 encoded string with a length limit of 5,000
309	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
310	Attributes map[string]*CustomAttribute `protobuf:"bytes,12,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
311	// Custom tags associated with the product.
312	//
313	// At most 250 values are allowed per
314	// [Product][google.cloud.retail.v2.Product]. This value must be a UTF-8
315	// encoded string with a length limit of 1,000 characters. Otherwise, an
316	// INVALID_ARGUMENT error is returned.
317	//
318	// This tag can be used for filtering recommendation results by passing the
319	// tag as part of the
320	// [PredictRequest.filter][google.cloud.retail.v2.PredictRequest.filter].
321	//
322	// Google Merchant Center property
323	// [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
324	Tags []string `protobuf:"bytes,13,rep,name=tags,proto3" json:"tags,omitempty"`
325	// Product price and cost information.
326	//
327	// Google Merchant Center property
328	// [price](https://support.google.com/merchants/answer/6324371).
329	PriceInfo *PriceInfo `protobuf:"bytes,14,opt,name=price_info,json=priceInfo,proto3" json:"price_info,omitempty"`
330	// The timestamp when this [Product][google.cloud.retail.v2.Product] becomes
331	// available recommendation and search.
332	AvailableTime *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=available_time,json=availableTime,proto3" json:"available_time,omitempty"`
333	// The online availability of the [Product][google.cloud.retail.v2.Product].
334	// Default to
335	// [Availability.IN_STOCK][google.cloud.retail.v2.Product.Availability.IN_STOCK].
336	//
337	// Google Merchant Center Property
338	// [availability](https://support.google.com/merchants/answer/6324448).
339	// Schema.org Property [Offer.availability](https://schema.org/availability).
340	Availability Product_Availability `protobuf:"varint,19,opt,name=availability,proto3,enum=google.cloud.retail.v2.Product_Availability" json:"availability,omitempty"`
341	// The available quantity of the item.
342	AvailableQuantity *wrapperspb.Int32Value `protobuf:"bytes,20,opt,name=available_quantity,json=availableQuantity,proto3" json:"available_quantity,omitempty"`
343	// Canonical URL directly linking to the product detail page.
344	//
345	// This field must be a UTF-8 encoded string with a length limit of 5,000
346	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
347	//
348	// Google Merchant Center property
349	// [link](https://support.google.com/merchants/answer/6324416). Schema.org
350	// property [Offer.url](https://schema.org/url).
351	Uri string `protobuf:"bytes,22,opt,name=uri,proto3" json:"uri,omitempty"`
352	// Product images for the product.
353	//
354	// A maximum of 300 images are allowed.
355	//
356	// Google Merchant Center property
357	// [image_link](https://support.google.com/merchants/answer/6324350).
358	// Schema.org property [Product.image](https://schema.org/image).
359	Images []*Image `protobuf:"bytes,23,rep,name=images,proto3" json:"images,omitempty"`
360}
361
362func (x *Product) Reset() {
363	*x = Product{}
364	if protoimpl.UnsafeEnabled {
365		mi := &file_google_cloud_retail_v2_product_proto_msgTypes[0]
366		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
367		ms.StoreMessageInfo(mi)
368	}
369}
370
371func (x *Product) String() string {
372	return protoimpl.X.MessageStringOf(x)
373}
374
375func (*Product) ProtoMessage() {}
376
377func (x *Product) ProtoReflect() protoreflect.Message {
378	mi := &file_google_cloud_retail_v2_product_proto_msgTypes[0]
379	if protoimpl.UnsafeEnabled && x != nil {
380		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
381		if ms.LoadMessageInfo() == nil {
382			ms.StoreMessageInfo(mi)
383		}
384		return ms
385	}
386	return mi.MessageOf(x)
387}
388
389// Deprecated: Use Product.ProtoReflect.Descriptor instead.
390func (*Product) Descriptor() ([]byte, []int) {
391	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0}
392}
393
394func (x *Product) GetName() string {
395	if x != nil {
396		return x.Name
397	}
398	return ""
399}
400
401func (x *Product) GetId() string {
402	if x != nil {
403		return x.Id
404	}
405	return ""
406}
407
408func (x *Product) GetType() Product_Type {
409	if x != nil {
410		return x.Type
411	}
412	return Product_TYPE_UNSPECIFIED
413}
414
415func (x *Product) GetPrimaryProductId() string {
416	if x != nil {
417		return x.PrimaryProductId
418	}
419	return ""
420}
421
422func (x *Product) GetCategories() []string {
423	if x != nil {
424		return x.Categories
425	}
426	return nil
427}
428
429func (x *Product) GetTitle() string {
430	if x != nil {
431		return x.Title
432	}
433	return ""
434}
435
436func (x *Product) GetDescription() string {
437	if x != nil {
438		return x.Description
439	}
440	return ""
441}
442
443func (x *Product) GetAttributes() map[string]*CustomAttribute {
444	if x != nil {
445		return x.Attributes
446	}
447	return nil
448}
449
450func (x *Product) GetTags() []string {
451	if x != nil {
452		return x.Tags
453	}
454	return nil
455}
456
457func (x *Product) GetPriceInfo() *PriceInfo {
458	if x != nil {
459		return x.PriceInfo
460	}
461	return nil
462}
463
464func (x *Product) GetAvailableTime() *timestamppb.Timestamp {
465	if x != nil {
466		return x.AvailableTime
467	}
468	return nil
469}
470
471func (x *Product) GetAvailability() Product_Availability {
472	if x != nil {
473		return x.Availability
474	}
475	return Product_AVAILABILITY_UNSPECIFIED
476}
477
478func (x *Product) GetAvailableQuantity() *wrapperspb.Int32Value {
479	if x != nil {
480		return x.AvailableQuantity
481	}
482	return nil
483}
484
485func (x *Product) GetUri() string {
486	if x != nil {
487		return x.Uri
488	}
489	return ""
490}
491
492func (x *Product) GetImages() []*Image {
493	if x != nil {
494		return x.Images
495	}
496	return nil
497}
498
499var File_google_cloud_retail_v2_product_proto protoreflect.FileDescriptor
500
501var file_google_cloud_retail_v2_product_proto_rawDesc = []byte{
502	0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72,
503	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
504	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
505	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x1a, 0x1c,
506	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
507	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,
508	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
509	0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
510	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
511	0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
512	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32,
513	0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67,
514	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66,
515	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
516	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
517	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
518	0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
519	0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
520	0x22, 0xf4, 0x08, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x04,
521	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52,
522	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
523	0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79,
524	0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
525	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76,
526	0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03,
527	0xe0, 0x41, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x69,
528	0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
529	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x72,
530	0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67,
531	0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74,
532	0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
533	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x69, 0x74,
534	0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
535	0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
536	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
537	0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
538	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76,
539	0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
540	0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69,
541	0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0d, 0x20,
542	0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x72, 0x69,
543	0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
544	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
545	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
546	0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x0e, 0x61,
547	0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20,
548	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
549	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
550	0x0d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x50,
551	0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13,
552	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
553	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72,
554	0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69,
555	0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
556	0x12, 0x4a, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75,
557	0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
558	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49,
559	0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c,
560	0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03,
561	0x75, 0x72, 0x69, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x35,
562	0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
563	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
564	0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69,
565	0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
566	0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
567	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61,
568	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
569	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e,
570	0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
571	0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a,
572	0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
573	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50,
574	0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x49,
575	0x41, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54,
576	0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x69, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
577	0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42,
578	0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
579	0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x43, 0x4b, 0x10,
580	0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x54, 0x4f, 0x43,
581	0x4b, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10,
582	0x03, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x41, 0x43, 0x4b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x04,
583	0x3a, 0x84, 0x01, 0xea, 0x41, 0x80, 0x01, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e,
584	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
585	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
586	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
587	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
588	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f,
589	0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61,
590	0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70,
591	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x42, 0xb0, 0x02, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e,
592	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
593	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x50,
594	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
595	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f,
596	0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c,
597	0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x3b, 0x72, 0x65,
598	0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02, 0x16,
599	0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x74,
600	0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c,
601	0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32, 0xea,
602	0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a,
603	0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0xea, 0x41, 0x6c, 0x0a, 0x1c,
604	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
605	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x4c, 0x70, 0x72,
606	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d,
607	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61,
608	0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b,
609	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65,
610	0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
611	0x6f, 0x33,
612}
613
614var (
615	file_google_cloud_retail_v2_product_proto_rawDescOnce sync.Once
616	file_google_cloud_retail_v2_product_proto_rawDescData = file_google_cloud_retail_v2_product_proto_rawDesc
617)
618
619func file_google_cloud_retail_v2_product_proto_rawDescGZIP() []byte {
620	file_google_cloud_retail_v2_product_proto_rawDescOnce.Do(func() {
621		file_google_cloud_retail_v2_product_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2_product_proto_rawDescData)
622	})
623	return file_google_cloud_retail_v2_product_proto_rawDescData
624}
625
626var file_google_cloud_retail_v2_product_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
627var file_google_cloud_retail_v2_product_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
628var file_google_cloud_retail_v2_product_proto_goTypes = []interface{}{
629	(Product_Type)(0),             // 0: google.cloud.retail.v2.Product.Type
630	(Product_Availability)(0),     // 1: google.cloud.retail.v2.Product.Availability
631	(*Product)(nil),               // 2: google.cloud.retail.v2.Product
632	nil,                           // 3: google.cloud.retail.v2.Product.AttributesEntry
633	(*PriceInfo)(nil),             // 4: google.cloud.retail.v2.PriceInfo
634	(*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
635	(*wrapperspb.Int32Value)(nil), // 6: google.protobuf.Int32Value
636	(*Image)(nil),                 // 7: google.cloud.retail.v2.Image
637	(*CustomAttribute)(nil),       // 8: google.cloud.retail.v2.CustomAttribute
638}
639var file_google_cloud_retail_v2_product_proto_depIdxs = []int32{
640	0, // 0: google.cloud.retail.v2.Product.type:type_name -> google.cloud.retail.v2.Product.Type
641	3, // 1: google.cloud.retail.v2.Product.attributes:type_name -> google.cloud.retail.v2.Product.AttributesEntry
642	4, // 2: google.cloud.retail.v2.Product.price_info:type_name -> google.cloud.retail.v2.PriceInfo
643	5, // 3: google.cloud.retail.v2.Product.available_time:type_name -> google.protobuf.Timestamp
644	1, // 4: google.cloud.retail.v2.Product.availability:type_name -> google.cloud.retail.v2.Product.Availability
645	6, // 5: google.cloud.retail.v2.Product.available_quantity:type_name -> google.protobuf.Int32Value
646	7, // 6: google.cloud.retail.v2.Product.images:type_name -> google.cloud.retail.v2.Image
647	8, // 7: google.cloud.retail.v2.Product.AttributesEntry.value:type_name -> google.cloud.retail.v2.CustomAttribute
648	8, // [8:8] is the sub-list for method output_type
649	8, // [8:8] is the sub-list for method input_type
650	8, // [8:8] is the sub-list for extension type_name
651	8, // [8:8] is the sub-list for extension extendee
652	0, // [0:8] is the sub-list for field type_name
653}
654
655func init() { file_google_cloud_retail_v2_product_proto_init() }
656func file_google_cloud_retail_v2_product_proto_init() {
657	if File_google_cloud_retail_v2_product_proto != nil {
658		return
659	}
660	file_google_cloud_retail_v2_common_proto_init()
661	if !protoimpl.UnsafeEnabled {
662		file_google_cloud_retail_v2_product_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
663			switch v := v.(*Product); i {
664			case 0:
665				return &v.state
666			case 1:
667				return &v.sizeCache
668			case 2:
669				return &v.unknownFields
670			default:
671				return nil
672			}
673		}
674	}
675	type x struct{}
676	out := protoimpl.TypeBuilder{
677		File: protoimpl.DescBuilder{
678			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
679			RawDescriptor: file_google_cloud_retail_v2_product_proto_rawDesc,
680			NumEnums:      2,
681			NumMessages:   2,
682			NumExtensions: 0,
683			NumServices:   0,
684		},
685		GoTypes:           file_google_cloud_retail_v2_product_proto_goTypes,
686		DependencyIndexes: file_google_cloud_retail_v2_product_proto_depIdxs,
687		EnumInfos:         file_google_cloud_retail_v2_product_proto_enumTypes,
688		MessageInfos:      file_google_cloud_retail_v2_product_proto_msgTypes,
689	}.Build()
690	File_google_cloud_retail_v2_product_proto = out.File
691	file_google_cloud_retail_v2_product_proto_rawDesc = nil
692	file_google_cloud_retail_v2_product_proto_goTypes = nil
693	file_google_cloud_retail_v2_product_proto_depIdxs = nil
694}
695