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/v2/product.proto
20
21package retail
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	_ "google.golang.org/genproto/googleapis/api/annotations"
28	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
29	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
30	durationpb "google.golang.org/protobuf/types/known/durationpb"
31	fieldmaskpb "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// The type of this product.
44type Product_Type int32
45
46const (
47	// Default value. Default to
48	// [Catalog.product_level_config.ingestion_product_type][google.cloud.retail.v2.ProductLevelConfig.ingestion_product_type]
49	// if unset.
50	Product_TYPE_UNSPECIFIED Product_Type = 0
51	// The primary type.
52	//
53	// As the primary unit for predicting, indexing and search serving, a
54	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
55	// [Product][google.cloud.retail.v2.Product] is grouped with multiple
56	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
57	// [Product][google.cloud.retail.v2.Product]s.
58	Product_PRIMARY Product_Type = 1
59	// The variant type.
60	//
61	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
62	// [Product][google.cloud.retail.v2.Product]s usually share some common
63	// attributes on the same
64	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
65	// [Product][google.cloud.retail.v2.Product]s, but they have variant
66	// attributes like different colors, sizes and prices, etc.
67	Product_VARIANT Product_Type = 2
68	// The collection type. Collection products are bundled
69	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
70	// [Product][google.cloud.retail.v2.Product]s or
71	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]
72	// [Product][google.cloud.retail.v2.Product]s that are sold together, such
73	// as a jewelry set with necklaces, earrings and rings, etc.
74	Product_COLLECTION Product_Type = 3
75)
76
77// Enum value maps for Product_Type.
78var (
79	Product_Type_name = map[int32]string{
80		0: "TYPE_UNSPECIFIED",
81		1: "PRIMARY",
82		2: "VARIANT",
83		3: "COLLECTION",
84	}
85	Product_Type_value = map[string]int32{
86		"TYPE_UNSPECIFIED": 0,
87		"PRIMARY":          1,
88		"VARIANT":          2,
89		"COLLECTION":       3,
90	}
91)
92
93func (x Product_Type) Enum() *Product_Type {
94	p := new(Product_Type)
95	*p = x
96	return p
97}
98
99func (x Product_Type) String() string {
100	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
101}
102
103func (Product_Type) Descriptor() protoreflect.EnumDescriptor {
104	return file_google_cloud_retail_v2_product_proto_enumTypes[0].Descriptor()
105}
106
107func (Product_Type) Type() protoreflect.EnumType {
108	return &file_google_cloud_retail_v2_product_proto_enumTypes[0]
109}
110
111func (x Product_Type) Number() protoreflect.EnumNumber {
112	return protoreflect.EnumNumber(x)
113}
114
115// Deprecated: Use Product_Type.Descriptor instead.
116func (Product_Type) EnumDescriptor() ([]byte, []int) {
117	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0, 0}
118}
119
120// Product availability. If this field is unspecified, the product is
121// assumed to be in stock.
122type Product_Availability int32
123
124const (
125	// Default product availability. Default to
126	// [Availability.IN_STOCK][google.cloud.retail.v2.Product.Availability.IN_STOCK]
127	// if unset.
128	Product_AVAILABILITY_UNSPECIFIED Product_Availability = 0
129	// Product in stock.
130	Product_IN_STOCK Product_Availability = 1
131	// Product out of stock.
132	Product_OUT_OF_STOCK Product_Availability = 2
133	// Product that is in pre-order state.
134	Product_PREORDER Product_Availability = 3
135	// Product that is back-ordered (i.e. temporarily out of stock).
136	Product_BACKORDER Product_Availability = 4
137)
138
139// Enum value maps for Product_Availability.
140var (
141	Product_Availability_name = map[int32]string{
142		0: "AVAILABILITY_UNSPECIFIED",
143		1: "IN_STOCK",
144		2: "OUT_OF_STOCK",
145		3: "PREORDER",
146		4: "BACKORDER",
147	}
148	Product_Availability_value = map[string]int32{
149		"AVAILABILITY_UNSPECIFIED": 0,
150		"IN_STOCK":                 1,
151		"OUT_OF_STOCK":             2,
152		"PREORDER":                 3,
153		"BACKORDER":                4,
154	}
155)
156
157func (x Product_Availability) Enum() *Product_Availability {
158	p := new(Product_Availability)
159	*p = x
160	return p
161}
162
163func (x Product_Availability) String() string {
164	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
165}
166
167func (Product_Availability) Descriptor() protoreflect.EnumDescriptor {
168	return file_google_cloud_retail_v2_product_proto_enumTypes[1].Descriptor()
169}
170
171func (Product_Availability) Type() protoreflect.EnumType {
172	return &file_google_cloud_retail_v2_product_proto_enumTypes[1]
173}
174
175func (x Product_Availability) Number() protoreflect.EnumNumber {
176	return protoreflect.EnumNumber(x)
177}
178
179// Deprecated: Use Product_Availability.Descriptor instead.
180func (Product_Availability) EnumDescriptor() ([]byte, []int) {
181	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0, 1}
182}
183
184// Product captures all metadata information of items to be recommended or
185// searched.
186type Product struct {
187	state         protoimpl.MessageState
188	sizeCache     protoimpl.SizeCache
189	unknownFields protoimpl.UnknownFields
190
191	// Types that are assignable to Expiration:
192	//	*Product_ExpireTime
193	//	*Product_Ttl
194	Expiration isProduct_Expiration `protobuf_oneof:"expiration"`
195	// Immutable. Full resource name of the product, such as
196	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.
197	//
198	// The branch ID must be "default_branch".
199	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
200	// Immutable. [Product][google.cloud.retail.v2.Product] identifier, which is
201	// the final component of [name][google.cloud.retail.v2.Product.name]. For
202	// example, this field is "id_1", if
203	// [name][google.cloud.retail.v2.Product.name] is
204	// `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`.
205	//
206	// This field must be a UTF-8 encoded string with a length limit of 128
207	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
208	//
209	// Google Merchant Center property
210	// [id](https://support.google.com/merchants/answer/6324405). Schema.org
211	// Property [Product.sku](https://schema.org/sku).
212	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
213	// Immutable. The type of the product. Default to
214	// [Catalog.product_level_config.ingestion_product_type][google.cloud.retail.v2.ProductLevelConfig.ingestion_product_type]
215	// if unset.
216	Type Product_Type `protobuf:"varint,3,opt,name=type,proto3,enum=google.cloud.retail.v2.Product_Type" json:"type,omitempty"`
217	// Variant group identifier. Must be an
218	// [id][google.cloud.retail.v2.Product.id], with the same parent branch with
219	// this product. Otherwise, an error is thrown.
220	//
221	// For [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
222	// [Product][google.cloud.retail.v2.Product]s, this field can only be empty or
223	// set to the same value as [id][google.cloud.retail.v2.Product.id].
224	//
225	// For VARIANT [Product][google.cloud.retail.v2.Product]s, this field cannot
226	// be empty. A maximum of 2,000 products are allowed to share the same
227	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
228	// [Product][google.cloud.retail.v2.Product]. Otherwise, an INVALID_ARGUMENT
229	// error is returned.
230	//
231	// Google Merchant Center Property
232	// [item_group_id](https://support.google.com/merchants/answer/6324507).
233	// Schema.org Property
234	// [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).
235	//
236	// This field must be enabled before it can be used. [Learn
237	// more](/recommendations-ai/docs/catalog#item-group-id).
238	PrimaryProductId string `protobuf:"bytes,4,opt,name=primary_product_id,json=primaryProductId,proto3" json:"primary_product_id,omitempty"`
239	// The [id][google.cloud.retail.v2.Product.id] of the collection members when
240	// [type][google.cloud.retail.v2.Product.type] is
241	// [Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION].
242	//
243	// Should not set it for other types. A maximum of 1000 values are allowed.
244	// Otherwise, an INVALID_ARGUMENT error is return.
245	CollectionMemberIds []string `protobuf:"bytes,5,rep,name=collection_member_ids,json=collectionMemberIds,proto3" json:"collection_member_ids,omitempty"`
246	// The Global Trade Item Number (GTIN) of the product.
247	//
248	// This field must be a UTF-8 encoded string with a length limit of 128
249	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
250	//
251	// This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is
252	// returned.
253	//
254	// Google Merchant Center property
255	// [gtin](https://support.google.com/merchants/answer/6324461).
256	// Schema.org property
257	// [Product.isbn](https://schema.org/isbn) or
258	// [Product.gtin8](https://schema.org/gtin8) or
259	// [Product.gtin12](https://schema.org/gtin12) or
260	// [Product.gtin13](https://schema.org/gtin13) or
261	// [Product.gtin14](https://schema.org/gtin14).
262	//
263	// If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
264	Gtin string `protobuf:"bytes,6,opt,name=gtin,proto3" json:"gtin,omitempty"`
265	// Product categories. This field is repeated for supporting one product
266	// belonging to several parallel categories. Strongly recommended using the
267	// full path for better search / recommendation quality.
268	//
269	//
270	// To represent full path of category, use '>' sign to separate different
271	// hierarchies. If '>' is part of the category name, please replace it with
272	// other character(s).
273	//
274	// For example, if a shoes product belongs to both
275	// ["Shoes & Accessories" -> "Shoes"] and
276	// ["Sports & Fitness" -> "Athletic Clothing" -> "Shoes"], it could be
277	// represented as:
278	//
279	//      "categories": [
280	//        "Shoes & Accessories > Shoes",
281	//        "Sports & Fitness > Athletic Clothing > Shoes"
282	//      ]
283	//
284	// Must be set for [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
285	// [Product][google.cloud.retail.v2.Product] otherwise an INVALID_ARGUMENT
286	// error is returned.
287	//
288	// At most 250 values are allowed per
289	// [Product][google.cloud.retail.v2.Product]. Empty values are not allowed.
290	// Each value must be a UTF-8 encoded string with a length limit of 5,000
291	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
292	//
293	// Google Merchant Center property
294	// [google_product_category][mc_google_product_category]. Schema.org property
295	// [Product.category] (https://schema.org/category).
296	//
297	// [mc_google_product_category]:
298	// https://support.google.com/merchants/answer/6324436
299	Categories []string `protobuf:"bytes,7,rep,name=categories,proto3" json:"categories,omitempty"`
300	// Required. Product title.
301	//
302	// This field must be a UTF-8 encoded string with a length limit of 1,000
303	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
304	//
305	// Google Merchant Center property
306	// [title](https://support.google.com/merchants/answer/6324415). Schema.org
307	// property [Product.name](https://schema.org/name).
308	Title string `protobuf:"bytes,8,opt,name=title,proto3" json:"title,omitempty"`
309	// The brands of the product.
310	//
311	// A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded
312	// string with a length limit of 1,000 characters. Otherwise, an
313	// INVALID_ARGUMENT error is returned.
314	//
315	// Google Merchant Center property
316	// [brand](https://support.google.com/merchants/answer/6324351). Schema.org
317	// property [Product.brand](https://schema.org/brand).
318	Brands []string `protobuf:"bytes,9,rep,name=brands,proto3" json:"brands,omitempty"`
319	// Product description.
320	//
321	// This field must be a UTF-8 encoded string with a length limit of 5,000
322	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
323	//
324	// Google Merchant Center property
325	// [description](https://support.google.com/merchants/answer/6324468).
326	// schema.org property [Product.description](https://schema.org/description).
327	Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"`
328	// Language of the title/description and other string attributes. Use language
329	// tags defined by [BCP 47][https://www.rfc-editor.org/rfc/bcp/bcp47.txt].
330	//
331	// For product prediction, this field is ignored and the model automatically
332	// detects the text language. The [Product][google.cloud.retail.v2.Product]
333	// can include text in different languages, but duplicating
334	// [Product][google.cloud.retail.v2.Product]s to provide text in multiple
335	// languages can result in degraded model performance.
336	//
337	// For product search this field is in use. It defaults to "en-US" if unset.
338	LanguageCode string `protobuf:"bytes,11,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
339	// Highly encouraged. Extra product attributes to be included. For example,
340	// for products, this could include the store name, vendor, style, color, etc.
341	// These are very strong signals for recommendation model, thus we highly
342	// recommend providing the attributes here.
343	//
344	// Features that can take on one of a limited number of possible values. Two
345	// types of features can be set are:
346	//
347	// Textual features. some examples would be the brand/maker of a product, or
348	// country of a customer. Numerical features. Some examples would be the
349	// height/weight of a product, or age of a customer.
350	//
351	// For example: `{ "vendor": {"text": ["vendor123", "vendor456"]},
352	// "lengths_cm": {"numbers":[2.3, 15.4]}, "heights_cm": {"numbers":[8.1, 6.4]}
353	// }`.
354	//
355	// This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT
356	// error is returned:
357	//
358	// * Max entries count: 200.
359	// * The key must be a UTF-8 encoded string with a length limit of 128
360	//   characters.
361	// * For indexable attribute, the key must match the pattern:
362	//   [a-zA-Z0-9][a-zA-Z0-9_]*. For example, key0LikeThis or KEY_1_LIKE_THIS.
363	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"`
364	// Custom tags associated with the product.
365	//
366	// At most 250 values are allowed per
367	// [Product][google.cloud.retail.v2.Product]. This value must be a UTF-8
368	// encoded string with a length limit of 1,000 characters. Otherwise, an
369	// INVALID_ARGUMENT error is returned.
370	//
371	// This tag can be used for filtering recommendation results by passing the
372	// tag as part of the
373	// [PredictRequest.filter][google.cloud.retail.v2.PredictRequest.filter].
374	//
375	// Google Merchant Center property
376	// [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
377	Tags []string `protobuf:"bytes,13,rep,name=tags,proto3" json:"tags,omitempty"`
378	// Product price and cost information.
379	//
380	// Google Merchant Center property
381	// [price](https://support.google.com/merchants/answer/6324371).
382	PriceInfo *PriceInfo `protobuf:"bytes,14,opt,name=price_info,json=priceInfo,proto3" json:"price_info,omitempty"`
383	// The rating of this product.
384	Rating *Rating `protobuf:"bytes,15,opt,name=rating,proto3" json:"rating,omitempty"`
385	// The timestamp when this [Product][google.cloud.retail.v2.Product] becomes
386	// available for
387	// [SearchService.Search][google.cloud.retail.v2.SearchService.Search].
388	AvailableTime *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=available_time,json=availableTime,proto3" json:"available_time,omitempty"`
389	// The online availability of the [Product][google.cloud.retail.v2.Product].
390	// Default to
391	// [Availability.IN_STOCK][google.cloud.retail.v2.Product.Availability.IN_STOCK].
392	//
393	// Google Merchant Center Property
394	// [availability](https://support.google.com/merchants/answer/6324448).
395	// Schema.org Property [Offer.availability](https://schema.org/availability).
396	Availability Product_Availability `protobuf:"varint,19,opt,name=availability,proto3,enum=google.cloud.retail.v2.Product_Availability" json:"availability,omitempty"`
397	// The available quantity of the item.
398	AvailableQuantity *wrapperspb.Int32Value `protobuf:"bytes,20,opt,name=available_quantity,json=availableQuantity,proto3" json:"available_quantity,omitempty"`
399	// Fulfillment information, such as the store IDs for in-store pickup or
400	// region IDs for different shipping methods.
401	//
402	// All the elements must have distinct
403	// [FulfillmentInfo.type][google.cloud.retail.v2.FulfillmentInfo.type].
404	// Otherwise, an INVALID_ARGUMENT error is returned.
405	FulfillmentInfo []*FulfillmentInfo `protobuf:"bytes,21,rep,name=fulfillment_info,json=fulfillmentInfo,proto3" json:"fulfillment_info,omitempty"`
406	// Canonical URL directly linking to the product detail page.
407	//
408	// It is strongly recommended to provide a valid uri for the product,
409	// otherwise the service performance could be significantly degraded.
410	//
411	// This field must be a UTF-8 encoded string with a length limit of 5,000
412	// characters. Otherwise, an INVALID_ARGUMENT error is returned.
413	//
414	// Google Merchant Center property
415	// [link](https://support.google.com/merchants/answer/6324416). Schema.org
416	// property [Offer.url](https://schema.org/url).
417	Uri string `protobuf:"bytes,22,opt,name=uri,proto3" json:"uri,omitempty"`
418	// Product images for the product.Highly recommended to put the main image
419	// to the first.
420	//
421	// A maximum of 300 images are allowed.
422	//
423	// Google Merchant Center property
424	// [image_link](https://support.google.com/merchants/answer/6324350).
425	// Schema.org property [Product.image](https://schema.org/image).
426	Images []*Image `protobuf:"bytes,23,rep,name=images,proto3" json:"images,omitempty"`
427	// The target group associated with a given audience (e.g. male, veterans,
428	// car owners, musicians, etc.) of the product.
429	Audience *Audience `protobuf:"bytes,24,opt,name=audience,proto3" json:"audience,omitempty"`
430	// The color of the product.
431	//
432	// Google Merchant Center property
433	// [color](https://support.google.com/merchants/answer/6324487). Schema.org
434	// property [Product.color](https://schema.org/color).
435	ColorInfo *ColorInfo `protobuf:"bytes,25,opt,name=color_info,json=colorInfo,proto3" json:"color_info,omitempty"`
436	// The size of the product. To represent different size systems or size types,
437	// consider using this format: [[[size_system:]size_type:]size_value].
438	//
439	// For example, in "US:MENS:M", "US" represents size system; "MENS" represents
440	// size type; "M" represents size value. In "GIRLS:27", size system is empty;
441	// "GIRLS" represents size type; "27" represents size value. In "32 inches",
442	// both size system and size type are empty, while size value is "32 inches".
443	//
444	// A maximum of 20 values are allowed per
445	// [Product][google.cloud.retail.v2.Product]. Each value must be a UTF-8
446	// encoded string with a length limit of 128 characters. Otherwise, an
447	// INVALID_ARGUMENT error is returned.
448	//
449	// Google Merchant Center property
450	// [size](https://support.google.com/merchants/answer/6324492),
451	// [size_type](https://support.google.com/merchants/answer/6324497) and
452	// [size_system](https://support.google.com/merchants/answer/6324502).
453	// Schema.org property [Product.size](https://schema.org/size).
454	Sizes []string `protobuf:"bytes,26,rep,name=sizes,proto3" json:"sizes,omitempty"`
455	// The material of the product. For example, "leather", "wooden".
456	//
457	// A maximum of 20 values are allowed. Each value must be a UTF-8 encoded
458	// string with a length limit of 128 characters. Otherwise, an
459	// INVALID_ARGUMENT error is returned.
460	//
461	// Google Merchant Center property
462	// [material](https://support.google.com/merchants/answer/6324410). Schema.org
463	// property [Product.material](https://schema.org/material).
464	Materials []string `protobuf:"bytes,27,rep,name=materials,proto3" json:"materials,omitempty"`
465	// The pattern or graphic print of the product. For example, "striped", "polka
466	// dot", "paisley".
467	//
468	// A maximum of 20 values are allowed per
469	// [Product][google.cloud.retail.v2.Product]. Each value must be a UTF-8
470	// encoded string with a length limit of 128 characters. Otherwise, an
471	// INVALID_ARGUMENT error is returned.
472	//
473	// Google Merchant Center property
474	// [pattern](https://support.google.com/merchants/answer/6324483). Schema.org
475	// property [Product.pattern](https://schema.org/pattern).
476	Patterns []string `protobuf:"bytes,28,rep,name=patterns,proto3" json:"patterns,omitempty"`
477	// The condition of the product. Strongly encouraged to use the standard
478	// values: "new", "refurbished", "used".
479	//
480	// A maximum of 5 values are allowed per
481	// [Product][google.cloud.retail.v2.Product]. Each value must be a UTF-8
482	// encoded string with a length limit of 128 characters. Otherwise, an
483	// INVALID_ARGUMENT error is returned.
484	//
485	// Google Merchant Center property
486	// [condition](https://support.google.com/merchants/answer/6324469).
487	// Schema.org property
488	// [Offer.itemCondition](https://schema.org/itemCondition).
489	Conditions []string `protobuf:"bytes,29,rep,name=conditions,proto3" json:"conditions,omitempty"`
490	// The promotions applied to the product. A maximum of 10 values are allowed
491	// per [Product][google.cloud.retail.v2.Product].
492	Promotions []*Promotion `protobuf:"bytes,34,rep,name=promotions,proto3" json:"promotions,omitempty"`
493	// The timestamp when the product is published by the retailer for the first
494	// time, which indicates the freshness of the products. Note that this field
495	// is different from
496	// [available_time][google.cloud.retail.v2.Product.available_time], given it
497	// purely describes product freshness regardless of when it is available on
498	// search and recommendation.
499	PublishTime *timestamppb.Timestamp `protobuf:"bytes,33,opt,name=publish_time,json=publishTime,proto3" json:"publish_time,omitempty"`
500	// Indicates which fields in the [Product][google.cloud.retail.v2.Product]s
501	// are returned in [SearchResponse][google.cloud.retail.v2.SearchResponse].
502	//
503	// Supported fields for all [type][google.cloud.retail.v2.Product.type]s:
504	//
505	// * [audience][google.cloud.retail.v2.Product.audience]
506	// * [availability][google.cloud.retail.v2.Product.availability]
507	// * [brands][google.cloud.retail.v2.Product.brands]
508	// * [color_info][google.cloud.retail.v2.Product.color_info]
509	// * [conditions][google.cloud.retail.v2.Product.conditions]
510	// * [gtin][google.cloud.retail.v2.Product.gtin]
511	// * [materials][google.cloud.retail.v2.Product.materials]
512	// * [name][google.cloud.retail.v2.Product.name]
513	// * [patterns][google.cloud.retail.v2.Product.patterns]
514	// * [price_info][google.cloud.retail.v2.Product.price_info]
515	// * [rating][google.cloud.retail.v2.Product.rating]
516	// * [sizes][google.cloud.retail.v2.Product.sizes]
517	// * [title][google.cloud.retail.v2.Product.title]
518	// * [uri][google.cloud.retail.v2.Product.uri]
519	//
520	// Supported fields only for
521	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] and
522	// [Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION]:
523	//
524	// * [categories][google.cloud.retail.v2.Product.categories]
525	// * [description][google.cloud.retail.v2.Product.description]
526	// * [images][google.cloud.retail.v2.Product.images]
527	//
528	// Supported fields only for
529	// [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT]:
530	//
531	// * Only the first image in [images][google.cloud.retail.v2.Product.images]
532	//
533	// To mark [attributes][google.cloud.retail.v2.Product.attributes] as
534	// retrievable, include paths of the form "attributes.key" where "key" is the
535	// key of a custom attribute, as specified in
536	// [attributes][google.cloud.retail.v2.Product.attributes].
537	//
538	// For [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY] and
539	// [Type.COLLECTION][google.cloud.retail.v2.Product.Type.COLLECTION], the
540	// following fields are always returned in
541	// [SearchResponse][google.cloud.retail.v2.SearchResponse] by default:
542	//
543	// * [name][google.cloud.retail.v2.Product.name]
544	//
545	// For [Type.VARIANT][google.cloud.retail.v2.Product.Type.VARIANT], the
546	// following fields are always returned in by default:
547	//
548	// * [name][google.cloud.retail.v2.Product.name]
549	// * [color_info][google.cloud.retail.v2.Product.color_info]
550	//
551	// Maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is
552	// returned.
553	//
554	// Note: Returning more fields in
555	// [SearchResponse][google.cloud.retail.v2.SearchResponse] may increase
556	// response payload size and serving latency.
557	RetrievableFields *fieldmaskpb.FieldMask `protobuf:"bytes,30,opt,name=retrievable_fields,json=retrievableFields,proto3" json:"retrievable_fields,omitempty"`
558	// Output only. Product variants grouped together on primary product which
559	// share similar product attributes. It's automatically grouped by
560	// [primary_product_id][google.cloud.retail.v2.Product.primary_product_id] for
561	// all the product variants. Only populated for
562	// [Type.PRIMARY][google.cloud.retail.v2.Product.Type.PRIMARY]
563	// [Product][google.cloud.retail.v2.Product]s.
564	//
565	// Note: This field is OUTPUT_ONLY for
566	// [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct].
567	// Do not set this field in API requests.
568	Variants []*Product `protobuf:"bytes,31,rep,name=variants,proto3" json:"variants,omitempty"`
569}
570
571func (x *Product) Reset() {
572	*x = Product{}
573	if protoimpl.UnsafeEnabled {
574		mi := &file_google_cloud_retail_v2_product_proto_msgTypes[0]
575		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
576		ms.StoreMessageInfo(mi)
577	}
578}
579
580func (x *Product) String() string {
581	return protoimpl.X.MessageStringOf(x)
582}
583
584func (*Product) ProtoMessage() {}
585
586func (x *Product) ProtoReflect() protoreflect.Message {
587	mi := &file_google_cloud_retail_v2_product_proto_msgTypes[0]
588	if protoimpl.UnsafeEnabled && x != nil {
589		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
590		if ms.LoadMessageInfo() == nil {
591			ms.StoreMessageInfo(mi)
592		}
593		return ms
594	}
595	return mi.MessageOf(x)
596}
597
598// Deprecated: Use Product.ProtoReflect.Descriptor instead.
599func (*Product) Descriptor() ([]byte, []int) {
600	return file_google_cloud_retail_v2_product_proto_rawDescGZIP(), []int{0}
601}
602
603func (m *Product) GetExpiration() isProduct_Expiration {
604	if m != nil {
605		return m.Expiration
606	}
607	return nil
608}
609
610func (x *Product) GetExpireTime() *timestamppb.Timestamp {
611	if x, ok := x.GetExpiration().(*Product_ExpireTime); ok {
612		return x.ExpireTime
613	}
614	return nil
615}
616
617func (x *Product) GetTtl() *durationpb.Duration {
618	if x, ok := x.GetExpiration().(*Product_Ttl); ok {
619		return x.Ttl
620	}
621	return nil
622}
623
624func (x *Product) GetName() string {
625	if x != nil {
626		return x.Name
627	}
628	return ""
629}
630
631func (x *Product) GetId() string {
632	if x != nil {
633		return x.Id
634	}
635	return ""
636}
637
638func (x *Product) GetType() Product_Type {
639	if x != nil {
640		return x.Type
641	}
642	return Product_TYPE_UNSPECIFIED
643}
644
645func (x *Product) GetPrimaryProductId() string {
646	if x != nil {
647		return x.PrimaryProductId
648	}
649	return ""
650}
651
652func (x *Product) GetCollectionMemberIds() []string {
653	if x != nil {
654		return x.CollectionMemberIds
655	}
656	return nil
657}
658
659func (x *Product) GetGtin() string {
660	if x != nil {
661		return x.Gtin
662	}
663	return ""
664}
665
666func (x *Product) GetCategories() []string {
667	if x != nil {
668		return x.Categories
669	}
670	return nil
671}
672
673func (x *Product) GetTitle() string {
674	if x != nil {
675		return x.Title
676	}
677	return ""
678}
679
680func (x *Product) GetBrands() []string {
681	if x != nil {
682		return x.Brands
683	}
684	return nil
685}
686
687func (x *Product) GetDescription() string {
688	if x != nil {
689		return x.Description
690	}
691	return ""
692}
693
694func (x *Product) GetLanguageCode() string {
695	if x != nil {
696		return x.LanguageCode
697	}
698	return ""
699}
700
701func (x *Product) GetAttributes() map[string]*CustomAttribute {
702	if x != nil {
703		return x.Attributes
704	}
705	return nil
706}
707
708func (x *Product) GetTags() []string {
709	if x != nil {
710		return x.Tags
711	}
712	return nil
713}
714
715func (x *Product) GetPriceInfo() *PriceInfo {
716	if x != nil {
717		return x.PriceInfo
718	}
719	return nil
720}
721
722func (x *Product) GetRating() *Rating {
723	if x != nil {
724		return x.Rating
725	}
726	return nil
727}
728
729func (x *Product) GetAvailableTime() *timestamppb.Timestamp {
730	if x != nil {
731		return x.AvailableTime
732	}
733	return nil
734}
735
736func (x *Product) GetAvailability() Product_Availability {
737	if x != nil {
738		return x.Availability
739	}
740	return Product_AVAILABILITY_UNSPECIFIED
741}
742
743func (x *Product) GetAvailableQuantity() *wrapperspb.Int32Value {
744	if x != nil {
745		return x.AvailableQuantity
746	}
747	return nil
748}
749
750func (x *Product) GetFulfillmentInfo() []*FulfillmentInfo {
751	if x != nil {
752		return x.FulfillmentInfo
753	}
754	return nil
755}
756
757func (x *Product) GetUri() string {
758	if x != nil {
759		return x.Uri
760	}
761	return ""
762}
763
764func (x *Product) GetImages() []*Image {
765	if x != nil {
766		return x.Images
767	}
768	return nil
769}
770
771func (x *Product) GetAudience() *Audience {
772	if x != nil {
773		return x.Audience
774	}
775	return nil
776}
777
778func (x *Product) GetColorInfo() *ColorInfo {
779	if x != nil {
780		return x.ColorInfo
781	}
782	return nil
783}
784
785func (x *Product) GetSizes() []string {
786	if x != nil {
787		return x.Sizes
788	}
789	return nil
790}
791
792func (x *Product) GetMaterials() []string {
793	if x != nil {
794		return x.Materials
795	}
796	return nil
797}
798
799func (x *Product) GetPatterns() []string {
800	if x != nil {
801		return x.Patterns
802	}
803	return nil
804}
805
806func (x *Product) GetConditions() []string {
807	if x != nil {
808		return x.Conditions
809	}
810	return nil
811}
812
813func (x *Product) GetPromotions() []*Promotion {
814	if x != nil {
815		return x.Promotions
816	}
817	return nil
818}
819
820func (x *Product) GetPublishTime() *timestamppb.Timestamp {
821	if x != nil {
822		return x.PublishTime
823	}
824	return nil
825}
826
827func (x *Product) GetRetrievableFields() *fieldmaskpb.FieldMask {
828	if x != nil {
829		return x.RetrievableFields
830	}
831	return nil
832}
833
834func (x *Product) GetVariants() []*Product {
835	if x != nil {
836		return x.Variants
837	}
838	return nil
839}
840
841type isProduct_Expiration interface {
842	isProduct_Expiration()
843}
844
845type Product_ExpireTime struct {
846	// The timestamp when this product becomes unavailable for
847	// [SearchService.Search][google.cloud.retail.v2.SearchService.Search].
848	//
849	// If it is set, the [Product][google.cloud.retail.v2.Product] is not
850	// available for
851	// [SearchService.Search][google.cloud.retail.v2.SearchService.Search] after
852	// [expire_time][google.cloud.retail.v2.Product.expire_time]. However, the
853	// product can still be retrieved by
854	// [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct]
855	// and
856	// [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts].
857	//
858	// Google Merchant Center property
859	// [expiration_date](https://support.google.com/merchants/answer/6324499).
860	ExpireTime *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=expire_time,json=expireTime,proto3,oneof"`
861}
862
863type Product_Ttl struct {
864	// Input only. The TTL (time to live) of the product.
865	//
866	// If it is set, [expire_time][google.cloud.retail.v2.Product.expire_time]
867	// is set as current timestamp plus
868	// [ttl][google.cloud.retail.v2.Product.ttl]. The derived
869	// [expire_time][google.cloud.retail.v2.Product.expire_time] is returned in
870	// the output and [ttl][google.cloud.retail.v2.Product.ttl] is left blank
871	// when retrieving the [Product][google.cloud.retail.v2.Product].
872	//
873	// If it is set, the product is not available for
874	// [SearchService.Search][google.cloud.retail.v2.SearchService.Search] after
875	// current timestamp plus [ttl][google.cloud.retail.v2.Product.ttl].
876	// However, the product can still be retrieved by
877	// [ProductService.GetProduct][google.cloud.retail.v2.ProductService.GetProduct]
878	// and
879	// [ProductService.ListProducts][google.cloud.retail.v2.ProductService.ListProducts].
880	Ttl *durationpb.Duration `protobuf:"bytes,17,opt,name=ttl,proto3,oneof"`
881}
882
883func (*Product_ExpireTime) isProduct_Expiration() {}
884
885func (*Product_Ttl) isProduct_Expiration() {}
886
887var File_google_cloud_retail_v2_product_proto protoreflect.FileDescriptor
888
889var file_google_cloud_retail_v2_product_proto_rawDesc = []byte{
890	0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72,
891	0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
892	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
893	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x1a, 0x1c,
894	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
895	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,
896	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
897	0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
898	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
899	0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
900	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32,
901	0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67,
902	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
903	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67,
904	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66,
905	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
906	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
907	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
908	0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
909	0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
910	0x22, 0x85, 0x10, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x0b,
911	0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28,
912	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
913	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52,
914	0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x74,
915	0x74, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
916	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
917	0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x04, 0x48, 0x00, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12,
918	0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
919	0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02,
920	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a,
921	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f,
922	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
923	0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70,
924	0x65, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12,
925	0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f,
926	0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
927	0x79, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f,
928	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f,
929	0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65,
930	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x12,
931	0x0a, 0x04, 0x67, 0x74, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x74,
932	0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73,
933	0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
934	0x65, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
935	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a,
936	0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x62,
937	0x72, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
938	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
939	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75,
940	0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
941	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0a,
942	0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b,
943	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
944	0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
945	0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
946	0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a,
947	0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67,
948	0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
949	0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
950	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50,
951	0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x49,
952	0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20,
953	0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
954	0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x61, 0x74,
955	0x69, 0x6e, 0x67, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x61,
956	0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20,
957	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
958	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
959	0x0d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x50,
960	0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13,
961	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
962	0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72,
963	0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69,
964	0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
965	0x12, 0x4a, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75,
966	0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
967	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49,
968	0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c,
969	0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x10,
970	0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
971	0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
972	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e,
973	0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52,
974	0x0f, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f,
975	0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
976	0x72, 0x69, 0x12, 0x35, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03,
977	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
978	0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67,
979	0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x61, 0x75, 0x64,
980	0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f,
981	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
982	0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61,
983	0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
984	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f,
985	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69,
986	0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
987	0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x7a,
988	0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x12,
989	0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x1b, 0x20, 0x03,
990	0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a,
991	0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52,
992	0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e,
993	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63,
994	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
995	0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
996	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74,
997	0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
998	0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0c,
999	0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01,
1000	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
1001	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b,
1002	0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x12, 0x72,
1003	0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
1004	0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1005	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d,
1006	0x61, 0x73, 0x6b, 0x52, 0x11, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x62, 0x6c, 0x65,
1007	0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e,
1008	0x74, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1009	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76,
1010	0x32, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08,
1011	0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x1a, 0x66, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72,
1012	0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
1013	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a,
1014	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67,
1015	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x74, 0x61,
1016	0x69, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72,
1017	0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
1018	0x22, 0x46, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45,
1019	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b,
1020	0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56,
1021	0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x4c,
1022	0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x69, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69,
1023	0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x56, 0x41, 0x49,
1024	0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
1025	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x4f,
1026	0x43, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53,
1027	0x54, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x4f, 0x52, 0x44,
1028	0x45, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x41, 0x43, 0x4b, 0x4f, 0x52, 0x44, 0x45,
1029	0x52, 0x10, 0x04, 0x3a, 0x84, 0x01, 0xea, 0x41, 0x80, 0x01, 0x0a, 0x1d, 0x72, 0x65, 0x74, 0x61,
1030	0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
1031	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1032	0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f,
1033	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
1034	0x6e, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x74,
1035	0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b,
1036	0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
1037	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78,
1038	0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xb0, 0x02, 0x0a, 0x1a, 0x63, 0x6f, 0x6d,
1039	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
1040	0x74, 0x61, 0x69, 0x6c, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
1041	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1042	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72,
1043	0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63,
1044	0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2f, 0x76, 0x32, 0x3b, 0x72,
1045	0x65, 0x74, 0x61, 0x69, 0x6c, 0xa2, 0x02, 0x06, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0xaa, 0x02,
1046	0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65,
1047	0x74, 0x61, 0x69, 0x6c, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x16, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1048	0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5c, 0x56, 0x32,
1049	0xea, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64,
1050	0x3a, 0x3a, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x3a, 0x56, 0x32, 0xea, 0x41, 0x6c, 0x0a,
1051	0x1c, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
1052	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x4c, 0x70,
1053	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
1054	0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63,
1055	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x2f,
1056	0x7b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68,
1057	0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x62, 0x06, 0x70, 0x72, 0x6f,
1058	0x74, 0x6f, 0x33,
1059}
1060
1061var (
1062	file_google_cloud_retail_v2_product_proto_rawDescOnce sync.Once
1063	file_google_cloud_retail_v2_product_proto_rawDescData = file_google_cloud_retail_v2_product_proto_rawDesc
1064)
1065
1066func file_google_cloud_retail_v2_product_proto_rawDescGZIP() []byte {
1067	file_google_cloud_retail_v2_product_proto_rawDescOnce.Do(func() {
1068		file_google_cloud_retail_v2_product_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_retail_v2_product_proto_rawDescData)
1069	})
1070	return file_google_cloud_retail_v2_product_proto_rawDescData
1071}
1072
1073var file_google_cloud_retail_v2_product_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
1074var file_google_cloud_retail_v2_product_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
1075var file_google_cloud_retail_v2_product_proto_goTypes = []interface{}{
1076	(Product_Type)(0),             // 0: google.cloud.retail.v2.Product.Type
1077	(Product_Availability)(0),     // 1: google.cloud.retail.v2.Product.Availability
1078	(*Product)(nil),               // 2: google.cloud.retail.v2.Product
1079	nil,                           // 3: google.cloud.retail.v2.Product.AttributesEntry
1080	(*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp
1081	(*durationpb.Duration)(nil),   // 5: google.protobuf.Duration
1082	(*PriceInfo)(nil),             // 6: google.cloud.retail.v2.PriceInfo
1083	(*Rating)(nil),                // 7: google.cloud.retail.v2.Rating
1084	(*wrapperspb.Int32Value)(nil), // 8: google.protobuf.Int32Value
1085	(*FulfillmentInfo)(nil),       // 9: google.cloud.retail.v2.FulfillmentInfo
1086	(*Image)(nil),                 // 10: google.cloud.retail.v2.Image
1087	(*Audience)(nil),              // 11: google.cloud.retail.v2.Audience
1088	(*ColorInfo)(nil),             // 12: google.cloud.retail.v2.ColorInfo
1089	(*Promotion)(nil),             // 13: google.cloud.retail.v2.Promotion
1090	(*fieldmaskpb.FieldMask)(nil), // 14: google.protobuf.FieldMask
1091	(*CustomAttribute)(nil),       // 15: google.cloud.retail.v2.CustomAttribute
1092}
1093var file_google_cloud_retail_v2_product_proto_depIdxs = []int32{
1094	4,  // 0: google.cloud.retail.v2.Product.expire_time:type_name -> google.protobuf.Timestamp
1095	5,  // 1: google.cloud.retail.v2.Product.ttl:type_name -> google.protobuf.Duration
1096	0,  // 2: google.cloud.retail.v2.Product.type:type_name -> google.cloud.retail.v2.Product.Type
1097	3,  // 3: google.cloud.retail.v2.Product.attributes:type_name -> google.cloud.retail.v2.Product.AttributesEntry
1098	6,  // 4: google.cloud.retail.v2.Product.price_info:type_name -> google.cloud.retail.v2.PriceInfo
1099	7,  // 5: google.cloud.retail.v2.Product.rating:type_name -> google.cloud.retail.v2.Rating
1100	4,  // 6: google.cloud.retail.v2.Product.available_time:type_name -> google.protobuf.Timestamp
1101	1,  // 7: google.cloud.retail.v2.Product.availability:type_name -> google.cloud.retail.v2.Product.Availability
1102	8,  // 8: google.cloud.retail.v2.Product.available_quantity:type_name -> google.protobuf.Int32Value
1103	9,  // 9: google.cloud.retail.v2.Product.fulfillment_info:type_name -> google.cloud.retail.v2.FulfillmentInfo
1104	10, // 10: google.cloud.retail.v2.Product.images:type_name -> google.cloud.retail.v2.Image
1105	11, // 11: google.cloud.retail.v2.Product.audience:type_name -> google.cloud.retail.v2.Audience
1106	12, // 12: google.cloud.retail.v2.Product.color_info:type_name -> google.cloud.retail.v2.ColorInfo
1107	13, // 13: google.cloud.retail.v2.Product.promotions:type_name -> google.cloud.retail.v2.Promotion
1108	4,  // 14: google.cloud.retail.v2.Product.publish_time:type_name -> google.protobuf.Timestamp
1109	14, // 15: google.cloud.retail.v2.Product.retrievable_fields:type_name -> google.protobuf.FieldMask
1110	2,  // 16: google.cloud.retail.v2.Product.variants:type_name -> google.cloud.retail.v2.Product
1111	15, // 17: google.cloud.retail.v2.Product.AttributesEntry.value:type_name -> google.cloud.retail.v2.CustomAttribute
1112	18, // [18:18] is the sub-list for method output_type
1113	18, // [18:18] is the sub-list for method input_type
1114	18, // [18:18] is the sub-list for extension type_name
1115	18, // [18:18] is the sub-list for extension extendee
1116	0,  // [0:18] is the sub-list for field type_name
1117}
1118
1119func init() { file_google_cloud_retail_v2_product_proto_init() }
1120func file_google_cloud_retail_v2_product_proto_init() {
1121	if File_google_cloud_retail_v2_product_proto != nil {
1122		return
1123	}
1124	file_google_cloud_retail_v2_common_proto_init()
1125	if !protoimpl.UnsafeEnabled {
1126		file_google_cloud_retail_v2_product_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
1127			switch v := v.(*Product); i {
1128			case 0:
1129				return &v.state
1130			case 1:
1131				return &v.sizeCache
1132			case 2:
1133				return &v.unknownFields
1134			default:
1135				return nil
1136			}
1137		}
1138	}
1139	file_google_cloud_retail_v2_product_proto_msgTypes[0].OneofWrappers = []interface{}{
1140		(*Product_ExpireTime)(nil),
1141		(*Product_Ttl)(nil),
1142	}
1143	type x struct{}
1144	out := protoimpl.TypeBuilder{
1145		File: protoimpl.DescBuilder{
1146			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1147			RawDescriptor: file_google_cloud_retail_v2_product_proto_rawDesc,
1148			NumEnums:      2,
1149			NumMessages:   2,
1150			NumExtensions: 0,
1151			NumServices:   0,
1152		},
1153		GoTypes:           file_google_cloud_retail_v2_product_proto_goTypes,
1154		DependencyIndexes: file_google_cloud_retail_v2_product_proto_depIdxs,
1155		EnumInfos:         file_google_cloud_retail_v2_product_proto_enumTypes,
1156		MessageInfos:      file_google_cloud_retail_v2_product_proto_msgTypes,
1157	}.Build()
1158	File_google_cloud_retail_v2_product_proto = out.File
1159	file_google_cloud_retail_v2_product_proto_rawDesc = nil
1160	file_google_cloud_retail_v2_product_proto_goTypes = nil
1161	file_google_cloud_retail_v2_product_proto_depIdxs = nil
1162}
1163