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 15syntax = "proto3"; 16 17package google.cloud.retail.v2beta; 18 19import "google/api/field_behavior.proto"; 20import "google/api/resource.proto"; 21import "google/cloud/retail/v2beta/common.proto"; 22import "google/cloud/retail/v2beta/promotion.proto"; 23import "google/protobuf/duration.proto"; 24import "google/protobuf/field_mask.proto"; 25import "google/protobuf/timestamp.proto"; 26import "google/protobuf/wrappers.proto"; 27 28option csharp_namespace = "Google.Cloud.Retail.V2Beta"; 29option go_package = "cloud.google.com/go/retail/apiv2beta/retailpb;retailpb"; 30option java_multiple_files = true; 31option java_outer_classname = "ProductProto"; 32option java_package = "com.google.cloud.retail.v2beta"; 33option objc_class_prefix = "RETAIL"; 34option php_namespace = "Google\\Cloud\\Retail\\V2beta"; 35option ruby_package = "Google::Cloud::Retail::V2beta"; 36option (google.api.resource_definition) = { 37 type: "retail.googleapis.com/Branch" 38 pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/branches/{branch}" 39}; 40 41// Product captures all metadata information of items to be recommended or 42// searched. 43message Product { 44 option (google.api.resource) = { 45 type: "retail.googleapis.com/Product" 46 pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/branches/{branch}/products/{product}" 47 }; 48 49 // The type of this product. 50 enum Type { 51 // Default value. Default to 52 // [Catalog.product_level_config.ingestion_product_type][google.cloud.retail.v2beta.ProductLevelConfig.ingestion_product_type] 53 // if unset. 54 TYPE_UNSPECIFIED = 0; 55 56 // The primary type. 57 // 58 // As the primary unit for predicting, indexing and search serving, a 59 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 60 // [Product][google.cloud.retail.v2beta.Product] is grouped with multiple 61 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] 62 // [Product][google.cloud.retail.v2beta.Product]s. 63 PRIMARY = 1; 64 65 // The variant type. 66 // 67 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] 68 // [Product][google.cloud.retail.v2beta.Product]s usually share some common 69 // attributes on the same 70 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 71 // [Product][google.cloud.retail.v2beta.Product]s, but they have variant 72 // attributes like different colors, sizes and prices, etc. 73 VARIANT = 2; 74 75 // The collection type. Collection products are bundled 76 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 77 // [Product][google.cloud.retail.v2beta.Product]s or 78 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] 79 // [Product][google.cloud.retail.v2beta.Product]s that are sold together, 80 // such as a jewelry set with necklaces, earrings and rings, etc. 81 COLLECTION = 3; 82 } 83 84 // Product availability. If this field is unspecified, the product is 85 // assumed to be in stock. 86 enum Availability { 87 // Default product availability. Default to 88 // [Availability.IN_STOCK][google.cloud.retail.v2beta.Product.Availability.IN_STOCK] 89 // if unset. 90 AVAILABILITY_UNSPECIFIED = 0; 91 92 // Product in stock. 93 IN_STOCK = 1; 94 95 // Product out of stock. 96 OUT_OF_STOCK = 2; 97 98 // Product that is in pre-order state. 99 PREORDER = 3; 100 101 // Product that is back-ordered (i.e. temporarily out of stock). 102 BACKORDER = 4; 103 } 104 105 oneof expiration { 106 // The timestamp when this product becomes unavailable for 107 // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search]. 108 // Note that this is only applicable to 109 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] and 110 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION], 111 // and ignored for 112 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT]. In 113 // general, we suggest the users to delete the stale products explicitly, 114 // instead of using this field to determine staleness. 115 // 116 // If it is set, the [Product][google.cloud.retail.v2beta.Product] is not 117 // available for 118 // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] 119 // after [expire_time][google.cloud.retail.v2beta.Product.expire_time]. 120 // However, the product can still be retrieved by 121 // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct] 122 // and 123 // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. 124 // 125 // [expire_time][google.cloud.retail.v2beta.Product.expire_time] must be 126 // later than 127 // [available_time][google.cloud.retail.v2beta.Product.available_time] and 128 // [publish_time][google.cloud.retail.v2beta.Product.publish_time], 129 // otherwise an INVALID_ARGUMENT error is thrown. 130 // 131 // Corresponding properties: Google Merchant Center property 132 // [expiration_date](https://support.google.com/merchants/answer/6324499). 133 google.protobuf.Timestamp expire_time = 16; 134 135 // Input only. The TTL (time to live) of the product. Note that this is only 136 // applicable to 137 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] and 138 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION], 139 // and ignored for 140 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT]. In 141 // general, we suggest the users to delete the stale products explicitly, 142 // instead of using this field to determine staleness. 143 // 144 // If it is set, it must be a non-negative value, and 145 // [expire_time][google.cloud.retail.v2beta.Product.expire_time] is set as 146 // current timestamp plus [ttl][google.cloud.retail.v2beta.Product.ttl]. The 147 // derived [expire_time][google.cloud.retail.v2beta.Product.expire_time] is 148 // returned in the output and [ttl][google.cloud.retail.v2beta.Product.ttl] 149 // is left blank when retrieving the 150 // [Product][google.cloud.retail.v2beta.Product]. 151 // 152 // If it is set, the product is not available for 153 // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search] 154 // after current timestamp plus 155 // [ttl][google.cloud.retail.v2beta.Product.ttl]. However, the product can 156 // still be retrieved by 157 // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct] 158 // and 159 // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]. 160 google.protobuf.Duration ttl = 17 161 [(google.api.field_behavior) = INPUT_ONLY]; 162 } 163 164 // Immutable. Full resource name of the product, such as 165 // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. 166 string name = 1 [(google.api.field_behavior) = IMMUTABLE]; 167 168 // Immutable. [Product][google.cloud.retail.v2beta.Product] identifier, which 169 // is the final component of [name][google.cloud.retail.v2beta.Product.name]. 170 // For example, this field is "id_1", if 171 // [name][google.cloud.retail.v2beta.Product.name] is 172 // `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. 173 // 174 // This field must be a UTF-8 encoded string with a length limit of 128 175 // characters. Otherwise, an INVALID_ARGUMENT error is returned. 176 // 177 // Corresponding properties: Google Merchant Center property 178 // [id](https://support.google.com/merchants/answer/6324405). Schema.org 179 // property [Product.sku](https://schema.org/sku). 180 string id = 2 [(google.api.field_behavior) = IMMUTABLE]; 181 182 // Immutable. The type of the product. Default to 183 // [Catalog.product_level_config.ingestion_product_type][google.cloud.retail.v2beta.ProductLevelConfig.ingestion_product_type] 184 // if unset. 185 Type type = 3 [(google.api.field_behavior) = IMMUTABLE]; 186 187 // Variant group identifier. Must be an 188 // [id][google.cloud.retail.v2beta.Product.id], with the same parent branch 189 // with this product. Otherwise, an error is thrown. 190 // 191 // For [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 192 // [Product][google.cloud.retail.v2beta.Product]s, this field can only be 193 // empty or set to the same value as 194 // [id][google.cloud.retail.v2beta.Product.id]. 195 // 196 // For VARIANT [Product][google.cloud.retail.v2beta.Product]s, this field 197 // cannot be empty. A maximum of 2,000 products are allowed to share the same 198 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 199 // [Product][google.cloud.retail.v2beta.Product]. Otherwise, an 200 // INVALID_ARGUMENT error is returned. 201 // 202 // Corresponding properties: Google Merchant Center property 203 // [item_group_id](https://support.google.com/merchants/answer/6324507). 204 // Schema.org property 205 // [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). 206 string primary_product_id = 4; 207 208 // The [id][google.cloud.retail.v2beta.Product.id] of the collection members 209 // when [type][google.cloud.retail.v2beta.Product.type] is 210 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION]. 211 // 212 // Non-existent product ids are allowed. 213 // The [type][google.cloud.retail.v2beta.Product.type] of the members must be 214 // either [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] or 215 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT] otherwise 216 // an INVALID_ARGUMENT error is thrown. Should not set it for other types. A 217 // maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is 218 // return. 219 repeated string collection_member_ids = 5; 220 221 // The Global Trade Item Number (GTIN) of the product. 222 // 223 // This field must be a UTF-8 encoded string with a length limit of 128 224 // characters. Otherwise, an INVALID_ARGUMENT error is returned. 225 // 226 // This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is 227 // returned. 228 // 229 // Corresponding properties: Google Merchant Center property 230 // [gtin](https://support.google.com/merchants/answer/6324461). 231 // Schema.org property 232 // [Product.isbn](https://schema.org/isbn), 233 // [Product.gtin8](https://schema.org/gtin8), 234 // [Product.gtin12](https://schema.org/gtin12), 235 // [Product.gtin13](https://schema.org/gtin13), or 236 // [Product.gtin14](https://schema.org/gtin14). 237 // 238 // If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned. 239 string gtin = 6; 240 241 // Product categories. This field is repeated for supporting one product 242 // belonging to several parallel categories. Strongly recommended using the 243 // full path for better search / recommendation quality. 244 // 245 // 246 // To represent full path of category, use '>' sign to separate different 247 // hierarchies. If '>' is part of the category name, replace it with 248 // other character(s). 249 // 250 // For example, if a shoes product belongs to both 251 // ["Shoes & Accessories" -> "Shoes"] and 252 // ["Sports & Fitness" -> "Athletic Clothing" -> "Shoes"], it could be 253 // represented as: 254 // 255 // "categories": [ 256 // "Shoes & Accessories > Shoes", 257 // "Sports & Fitness > Athletic Clothing > Shoes" 258 // ] 259 // 260 // Must be set for 261 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 262 // [Product][google.cloud.retail.v2beta.Product] otherwise an INVALID_ARGUMENT 263 // error is returned. 264 // 265 // At most 250 values are allowed per 266 // [Product][google.cloud.retail.v2beta.Product]. Empty values are not 267 // allowed. Each value must be a UTF-8 encoded string with a length limit of 268 // 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. 269 // 270 // Corresponding properties: Google Merchant Center property 271 // [google_product_category][mc_google_product_category]. Schema.org property 272 // [Product.category] (https://schema.org/category). 273 // 274 // [mc_google_product_category]: 275 // https://support.google.com/merchants/answer/6324436 276 repeated string categories = 7; 277 278 // Required. Product title. 279 // 280 // This field must be a UTF-8 encoded string with a length limit of 1,000 281 // characters. Otherwise, an INVALID_ARGUMENT error is returned. 282 // 283 // Corresponding properties: Google Merchant Center property 284 // [title](https://support.google.com/merchants/answer/6324415). Schema.org 285 // property [Product.name](https://schema.org/name). 286 string title = 8 [(google.api.field_behavior) = REQUIRED]; 287 288 // The brands of the product. 289 // 290 // A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded 291 // string with a length limit of 1,000 characters. Otherwise, an 292 // INVALID_ARGUMENT error is returned. 293 // 294 // Corresponding properties: Google Merchant Center property 295 // [brand](https://support.google.com/merchants/answer/6324351). Schema.org 296 // property [Product.brand](https://schema.org/brand). 297 repeated string brands = 9; 298 299 // Product description. 300 // 301 // This field must be a UTF-8 encoded string with a length limit of 5,000 302 // characters. Otherwise, an INVALID_ARGUMENT error is returned. 303 // 304 // Corresponding properties: Google Merchant Center property 305 // [description](https://support.google.com/merchants/answer/6324468). 306 // Schema.org property [Product.description](https://schema.org/description). 307 string description = 10; 308 309 // Language of the title/description and other string attributes. Use language 310 // tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). 311 // 312 // For product prediction, this field is ignored and the model automatically 313 // detects the text language. The 314 // [Product][google.cloud.retail.v2beta.Product] can include text in different 315 // languages, but duplicating [Product][google.cloud.retail.v2beta.Product]s 316 // to provide text in multiple languages can result in degraded model 317 // performance. 318 // 319 // For product search this field is in use. It defaults to "en-US" if unset. 320 string language_code = 11; 321 322 // Highly encouraged. Extra product attributes to be included. For example, 323 // for products, this could include the store name, vendor, style, color, etc. 324 // These are very strong signals for recommendation model, thus we highly 325 // recommend providing the attributes here. 326 // 327 // Features that can take on one of a limited number of possible values. Two 328 // types of features can be set are: 329 // 330 // Textual features. some examples would be the brand/maker of a product, or 331 // country of a customer. Numerical features. Some examples would be the 332 // height/weight of a product, or age of a customer. 333 // 334 // For example: `{ "vendor": {"text": ["vendor123", "vendor456"]}, 335 // "lengths_cm": {"numbers":[2.3, 15.4]}, "heights_cm": {"numbers":[8.1, 6.4]} 336 // }`. 337 // 338 // This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT 339 // error is returned: 340 // 341 // * Max entries count: 200. 342 // * The key must be a UTF-8 encoded string with a length limit of 128 343 // characters. 344 // * For indexable attribute, the key must match the pattern: 345 // `[a-zA-Z0-9][a-zA-Z0-9_]*`. For example, `key0LikeThis` or 346 // `KEY_1_LIKE_THIS`. 347 // * For text attributes, at most 400 values are allowed. Empty values are not 348 // allowed. Each value must be a non-empty UTF-8 encoded string with a 349 // length limit of 256 characters. 350 // * For number attributes, at most 400 values are allowed. 351 map<string, CustomAttribute> attributes = 12; 352 353 // Custom tags associated with the product. 354 // 355 // At most 250 values are allowed per 356 // [Product][google.cloud.retail.v2beta.Product]. This value must be a UTF-8 357 // encoded string with a length limit of 1,000 characters. Otherwise, an 358 // INVALID_ARGUMENT error is returned. 359 // 360 // This tag can be used for filtering recommendation results by passing the 361 // tag as part of the 362 // [PredictRequest.filter][google.cloud.retail.v2beta.PredictRequest.filter]. 363 // 364 // Corresponding properties: Google Merchant Center property 365 // [custom_label_0–4](https://support.google.com/merchants/answer/6324473). 366 repeated string tags = 13; 367 368 // Product price and cost information. 369 // 370 // Corresponding properties: Google Merchant Center property 371 // [price](https://support.google.com/merchants/answer/6324371). 372 PriceInfo price_info = 14; 373 374 // The rating of this product. 375 Rating rating = 15; 376 377 // The timestamp when this [Product][google.cloud.retail.v2beta.Product] 378 // becomes available for 379 // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search]. 380 // Note that this is only applicable to 381 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] and 382 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION], and 383 // ignored for 384 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT]. 385 google.protobuf.Timestamp available_time = 18; 386 387 // The online availability of the 388 // [Product][google.cloud.retail.v2beta.Product]. Default to 389 // [Availability.IN_STOCK][google.cloud.retail.v2beta.Product.Availability.IN_STOCK]. 390 // 391 // Corresponding properties: Google Merchant Center property 392 // [availability](https://support.google.com/merchants/answer/6324448). 393 // Schema.org property [Offer.availability](https://schema.org/availability). 394 Availability availability = 19; 395 396 // The available quantity of the item. 397 google.protobuf.Int32Value available_quantity = 20; 398 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.v2beta.FulfillmentInfo.type]. 404 // Otherwise, an INVALID_ARGUMENT error is returned. 405 repeated FulfillmentInfo fulfillment_info = 21; 406 407 // Canonical URL directly linking to the product detail page. 408 // 409 // It is strongly recommended to provide a valid uri for the product, 410 // otherwise the service performance could be significantly degraded. 411 // 412 // This field must be a UTF-8 encoded string with a length limit of 5,000 413 // characters. Otherwise, an INVALID_ARGUMENT error is returned. 414 // 415 // Corresponding properties: Google Merchant Center property 416 // [link](https://support.google.com/merchants/answer/6324416). Schema.org 417 // property [Offer.url](https://schema.org/url). 418 string uri = 22; 419 420 // Product images for the product. We highly recommend putting the main 421 // image first. 422 // 423 // A maximum of 300 images are allowed. 424 // 425 // Corresponding properties: Google Merchant Center property 426 // [image_link](https://support.google.com/merchants/answer/6324350). 427 // Schema.org property [Product.image](https://schema.org/image). 428 repeated Image images = 23; 429 430 // The target group associated with a given audience (e.g. male, veterans, 431 // car owners, musicians, etc.) of the product. 432 Audience audience = 24; 433 434 // The color of the product. 435 // 436 // Corresponding properties: Google Merchant Center property 437 // [color](https://support.google.com/merchants/answer/6324487). Schema.org 438 // property [Product.color](https://schema.org/color). 439 ColorInfo color_info = 25; 440 441 // The size of the product. To represent different size systems or size types, 442 // consider using this format: [[[size_system:]size_type:]size_value]. 443 // 444 // For example, in "US:MENS:M", "US" represents size system; "MENS" represents 445 // size type; "M" represents size value. In "GIRLS:27", size system is empty; 446 // "GIRLS" represents size type; "27" represents size value. In "32 inches", 447 // both size system and size type are empty, while size value is "32 inches". 448 // 449 // A maximum of 20 values are allowed per 450 // [Product][google.cloud.retail.v2beta.Product]. Each value must be a UTF-8 451 // encoded string with a length limit of 128 characters. Otherwise, an 452 // INVALID_ARGUMENT error is returned. 453 // 454 // Corresponding properties: Google Merchant Center property 455 // [size](https://support.google.com/merchants/answer/6324492), 456 // [size_type](https://support.google.com/merchants/answer/6324497), and 457 // [size_system](https://support.google.com/merchants/answer/6324502). 458 // Schema.org property [Product.size](https://schema.org/size). 459 repeated string sizes = 26; 460 461 // The material of the product. For example, "leather", "wooden". 462 // 463 // A maximum of 20 values are allowed. Each value must be a UTF-8 encoded 464 // string with a length limit of 200 characters. Otherwise, an 465 // INVALID_ARGUMENT error is returned. 466 // 467 // Corresponding properties: Google Merchant Center property 468 // [material](https://support.google.com/merchants/answer/6324410). Schema.org 469 // property [Product.material](https://schema.org/material). 470 repeated string materials = 27; 471 472 // The pattern or graphic print of the product. For example, "striped", "polka 473 // dot", "paisley". 474 // 475 // A maximum of 20 values are allowed per 476 // [Product][google.cloud.retail.v2beta.Product]. Each value must be a UTF-8 477 // encoded string with a length limit of 128 characters. Otherwise, an 478 // INVALID_ARGUMENT error is returned. 479 // 480 // Corresponding properties: Google Merchant Center property 481 // [pattern](https://support.google.com/merchants/answer/6324483). Schema.org 482 // property [Product.pattern](https://schema.org/pattern). 483 repeated string patterns = 28; 484 485 // The condition of the product. Strongly encouraged to use the standard 486 // values: "new", "refurbished", "used". 487 // 488 // A maximum of 1 value is allowed per 489 // [Product][google.cloud.retail.v2beta.Product]. Each value must be a UTF-8 490 // encoded string with a length limit of 128 characters. Otherwise, an 491 // INVALID_ARGUMENT error is returned. 492 // 493 // Corresponding properties: Google Merchant Center property 494 // [condition](https://support.google.com/merchants/answer/6324469). 495 // Schema.org property 496 // [Offer.itemCondition](https://schema.org/itemCondition). 497 repeated string conditions = 29; 498 499 // The promotions applied to the product. A maximum of 10 values are allowed 500 // per [Product][google.cloud.retail.v2beta.Product]. Only 501 // [Promotion.promotion_id][google.cloud.retail.v2beta.Promotion.promotion_id] 502 // will be used, other fields will be ignored if set. 503 repeated Promotion promotions = 34; 504 505 // The timestamp when the product is published by the retailer for the first 506 // time, which indicates the freshness of the products. Note that this field 507 // is different from 508 // [available_time][google.cloud.retail.v2beta.Product.available_time], given 509 // it purely describes product freshness regardless of when it is available on 510 // search and recommendation. 511 google.protobuf.Timestamp publish_time = 33; 512 513 // Indicates which fields in the 514 // [Product][google.cloud.retail.v2beta.Product]s are returned in 515 // [SearchResponse][google.cloud.retail.v2beta.SearchResponse]. 516 // 517 // Supported fields for all [type][google.cloud.retail.v2beta.Product.type]s: 518 // 519 // * [audience][google.cloud.retail.v2beta.Product.audience] 520 // * [availability][google.cloud.retail.v2beta.Product.availability] 521 // * [brands][google.cloud.retail.v2beta.Product.brands] 522 // * [color_info][google.cloud.retail.v2beta.Product.color_info] 523 // * [conditions][google.cloud.retail.v2beta.Product.conditions] 524 // * [gtin][google.cloud.retail.v2beta.Product.gtin] 525 // * [materials][google.cloud.retail.v2beta.Product.materials] 526 // * [name][google.cloud.retail.v2beta.Product.name] 527 // * [patterns][google.cloud.retail.v2beta.Product.patterns] 528 // * [price_info][google.cloud.retail.v2beta.Product.price_info] 529 // * [rating][google.cloud.retail.v2beta.Product.rating] 530 // * [sizes][google.cloud.retail.v2beta.Product.sizes] 531 // * [title][google.cloud.retail.v2beta.Product.title] 532 // * [uri][google.cloud.retail.v2beta.Product.uri] 533 // 534 // Supported fields only for 535 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] and 536 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION]: 537 // 538 // * [categories][google.cloud.retail.v2beta.Product.categories] 539 // * [description][google.cloud.retail.v2beta.Product.description] 540 // * [images][google.cloud.retail.v2beta.Product.images] 541 // 542 // Supported fields only for 543 // [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT]: 544 // 545 // * Only the first image in 546 // [images][google.cloud.retail.v2beta.Product.images] 547 // 548 // To mark [attributes][google.cloud.retail.v2beta.Product.attributes] as 549 // retrievable, include paths of the form "attributes.key" where "key" is the 550 // key of a custom attribute, as specified in 551 // [attributes][google.cloud.retail.v2beta.Product.attributes]. 552 // 553 // For [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] and 554 // [Type.COLLECTION][google.cloud.retail.v2beta.Product.Type.COLLECTION], the 555 // following fields are always returned in 556 // [SearchResponse][google.cloud.retail.v2beta.SearchResponse] by default: 557 // 558 // * [name][google.cloud.retail.v2beta.Product.name] 559 // 560 // For [Type.VARIANT][google.cloud.retail.v2beta.Product.Type.VARIANT], the 561 // following fields are always returned in by default: 562 // 563 // * [name][google.cloud.retail.v2beta.Product.name] 564 // * [color_info][google.cloud.retail.v2beta.Product.color_info] 565 // 566 // The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is 567 // returned. 568 // 569 // Note: Returning more fields in 570 // [SearchResponse][google.cloud.retail.v2beta.SearchResponse] can increase 571 // response payload size and serving latency. 572 // 573 // This field is deprecated. Use the retrievable site-wide control instead. 574 google.protobuf.FieldMask retrievable_fields = 30 [deprecated = true]; 575 576 // Output only. Product variants grouped together on primary product which 577 // share similar product attributes. It's automatically grouped by 578 // [primary_product_id][google.cloud.retail.v2beta.Product.primary_product_id] 579 // for all the product variants. Only populated for 580 // [Type.PRIMARY][google.cloud.retail.v2beta.Product.Type.PRIMARY] 581 // [Product][google.cloud.retail.v2beta.Product]s. 582 // 583 // Note: This field is OUTPUT_ONLY for 584 // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct]. 585 // Do not set this field in API requests. 586 repeated Product variants = 31 [(google.api.field_behavior) = OUTPUT_ONLY]; 587 588 // Output only. A list of local inventories specific to different places. 589 // 590 // This field can be managed by 591 // [ProductService.AddLocalInventories][google.cloud.retail.v2beta.ProductService.AddLocalInventories] 592 // and 593 // [ProductService.RemoveLocalInventories][google.cloud.retail.v2beta.ProductService.RemoveLocalInventories] 594 // APIs if fine-grained, high-volume updates are necessary. 595 repeated LocalInventory local_inventories = 35 596 [(google.api.field_behavior) = OUTPUT_ONLY]; 597} 598