product.proto 25 KB

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