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