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