google-apis-retail_v2alpha 0.23.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -618,6 +618,26 @@ module Google
618
618
  end
619
619
  end
620
620
 
621
+ # Request for AddControl method.
622
+ class GoogleCloudRetailV2alphaAddControlRequest
623
+ include Google::Apis::Core::Hashable
624
+
625
+ # Required. The id of the control to apply. Assumed to be in the same catalog as
626
+ # the serving config - if id is not found a NOT_FOUND error is returned.
627
+ # Corresponds to the JSON property `controlId`
628
+ # @return [String]
629
+ attr_accessor :control_id
630
+
631
+ def initialize(**args)
632
+ update!(**args)
633
+ end
634
+
635
+ # Update properties of this object
636
+ def update!(**args)
637
+ @control_id = args[:control_id] if args.key?(:control_id)
638
+ end
639
+ end
640
+
621
641
  # Metadata related to the progress of the AddFulfillmentPlaces operation.
622
642
  # Currently empty because there is no meaningful metadata populated from the
623
643
  # AddFulfillmentPlaces method.
@@ -1108,6 +1128,153 @@ module Google
1108
1128
  end
1109
1129
  end
1110
1130
 
1131
+ # Metadata that is used to define a condition that triggers an action. A valid
1132
+ # condition must specify at least one of 'query_terms' or 'products_filter'. If
1133
+ # multiple fields are specified, the condition is met if all the fields are
1134
+ # satisfied e.g. if a set of query terms and product_filter are set, then only
1135
+ # items matching the product_filter for requests with a query matching the query
1136
+ # terms wil get boosted.
1137
+ class GoogleCloudRetailV2alphaCondition
1138
+ include Google::Apis::Core::Hashable
1139
+
1140
+ # Range of time(s) specifying when Condition is active. Condition true if any
1141
+ # time range matches.
1142
+ # Corresponds to the JSON property `activeTimeRange`
1143
+ # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaConditionTimeRange>]
1144
+ attr_accessor :active_time_range
1145
+
1146
+ # A list (up to 10 entries) of terms to match the query on. If not specified,
1147
+ # match all queries. If many query terms are specified, the condition is matched
1148
+ # if any of the terms is a match (i.e. using the OR operator).
1149
+ # Corresponds to the JSON property `queryTerms`
1150
+ # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaConditionQueryTerm>]
1151
+ attr_accessor :query_terms
1152
+
1153
+ def initialize(**args)
1154
+ update!(**args)
1155
+ end
1156
+
1157
+ # Update properties of this object
1158
+ def update!(**args)
1159
+ @active_time_range = args[:active_time_range] if args.key?(:active_time_range)
1160
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
1161
+ end
1162
+ end
1163
+
1164
+ # Query terms that we want to match on.
1165
+ class GoogleCloudRetailV2alphaConditionQueryTerm
1166
+ include Google::Apis::Core::Hashable
1167
+
1168
+ # Whether this is supposed to be a full or partial match.
1169
+ # Corresponds to the JSON property `fullMatch`
1170
+ # @return [Boolean]
1171
+ attr_accessor :full_match
1172
+ alias_method :full_match?, :full_match
1173
+
1174
+ # The value of the term to match on. Value cannot be empty. Value can have at
1175
+ # most 3 terms if specified as a partial match. Each space separated string is
1176
+ # considered as one term. Example) "a b c" is 3 terms and allowed, " a b c d" is
1177
+ # 4 terms and not allowed for partial match.
1178
+ # Corresponds to the JSON property `value`
1179
+ # @return [String]
1180
+ attr_accessor :value
1181
+
1182
+ def initialize(**args)
1183
+ update!(**args)
1184
+ end
1185
+
1186
+ # Update properties of this object
1187
+ def update!(**args)
1188
+ @full_match = args[:full_match] if args.key?(:full_match)
1189
+ @value = args[:value] if args.key?(:value)
1190
+ end
1191
+ end
1192
+
1193
+ # Used for time-dependent conditions. Example: Want to have rule applied for
1194
+ # week long sale.
1195
+ class GoogleCloudRetailV2alphaConditionTimeRange
1196
+ include Google::Apis::Core::Hashable
1197
+
1198
+ # End of time range. Range is inclusive.
1199
+ # Corresponds to the JSON property `endTime`
1200
+ # @return [String]
1201
+ attr_accessor :end_time
1202
+
1203
+ # Start of time range. Range is inclusive.
1204
+ # Corresponds to the JSON property `startTime`
1205
+ # @return [String]
1206
+ attr_accessor :start_time
1207
+
1208
+ def initialize(**args)
1209
+ update!(**args)
1210
+ end
1211
+
1212
+ # Update properties of this object
1213
+ def update!(**args)
1214
+ @end_time = args[:end_time] if args.key?(:end_time)
1215
+ @start_time = args[:start_time] if args.key?(:start_time)
1216
+ end
1217
+ end
1218
+
1219
+ # Configures dynamic serving time metadata that is used to pre and post process
1220
+ # search/recommendation model results.
1221
+ class GoogleCloudRetailV2alphaControl
1222
+ include Google::Apis::Core::Hashable
1223
+
1224
+ # Output only. List of serving configuration ids that that are associated with
1225
+ # this control. Note the association is managed via the ServingConfig, this is
1226
+ # an output only denormalizeed view. Assumed to be in the same catalog.
1227
+ # Corresponds to the JSON property `associatedServingConfigIds`
1228
+ # @return [Array<String>]
1229
+ attr_accessor :associated_serving_config_ids
1230
+
1231
+ # Required. The human readable control display name. Used in Retail UI. This
1232
+ # field must be a UTF-8 encoded string with a length limit of 128 characters.
1233
+ # Otherwise, an INVALID_ARGUMENT error is thrown.
1234
+ # Corresponds to the JSON property `displayName`
1235
+ # @return [String]
1236
+ attr_accessor :display_name
1237
+
1238
+ # A facet specification to perform faceted search.
1239
+ # Corresponds to the JSON property `facetSpec`
1240
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaSearchRequestFacetSpec]
1241
+ attr_accessor :facet_spec
1242
+
1243
+ # Immutable. Fully qualified name projects/*/locations/global/catalogs/*/
1244
+ # controls/*
1245
+ # Corresponds to the JSON property `name`
1246
+ # @return [String]
1247
+ attr_accessor :name
1248
+
1249
+ # A rule is a condition-action pair * A condition defines when a rule is to be
1250
+ # triggered. * An action specifies what occurs on that trigger. Currently only
1251
+ # boost rules are supported. Currently only supported by the search endpoint.
1252
+ # Corresponds to the JSON property `rule`
1253
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRule]
1254
+ attr_accessor :rule
1255
+
1256
+ # Required. Immutable. The solution types that the serving config is used for.
1257
+ # Currently we support setting only one type of solution at creation time. Only `
1258
+ # SOLUTION_TYPE_SEARCH` value is supported at the moment.
1259
+ # Corresponds to the JSON property `solutionTypes`
1260
+ # @return [Array<String>]
1261
+ attr_accessor :solution_types
1262
+
1263
+ def initialize(**args)
1264
+ update!(**args)
1265
+ end
1266
+
1267
+ # Update properties of this object
1268
+ def update!(**args)
1269
+ @associated_serving_config_ids = args[:associated_serving_config_ids] if args.key?(:associated_serving_config_ids)
1270
+ @display_name = args[:display_name] if args.key?(:display_name)
1271
+ @facet_spec = args[:facet_spec] if args.key?(:facet_spec)
1272
+ @name = args[:name] if args.key?(:name)
1273
+ @rule = args[:rule] if args.key?(:rule)
1274
+ @solution_types = args[:solution_types] if args.key?(:solution_types)
1275
+ end
1276
+ end
1277
+
1111
1278
  # A custom attribute that is not explicitly modeled in Product.
1112
1279
  class GoogleCloudRetailV2alphaCustomAttribute
1113
1280
  include Google::Apis::Core::Hashable
@@ -1305,6 +1472,9 @@ module Google
1305
1472
  # recommendations-ai/docs/upload-catalog#mc). Supported values for user events
1306
1473
  # imports: * `user_event` (default): One JSON UserEvent per line. * `
1307
1474
  # user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
1475
+ # Supported values for control imports: * 'control' (default): One JSON Control
1476
+ # per line. Supported values for catalog attribute imports: * 'catalog_attribute'
1477
+ # (default): One CSV CatalogAttribute per line.
1308
1478
  # Corresponds to the JSON property `dataSchema`
1309
1479
  # @return [String]
1310
1480
  attr_accessor :data_schema
@@ -1733,6 +1903,31 @@ module Google
1733
1903
  end
1734
1904
  end
1735
1905
 
1906
+ # Response for ListControls method.
1907
+ class GoogleCloudRetailV2alphaListControlsResponse
1908
+ include Google::Apis::Core::Hashable
1909
+
1910
+ # All the Controls for a given catalog.
1911
+ # Corresponds to the JSON property `controls`
1912
+ # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaControl>]
1913
+ attr_accessor :controls
1914
+
1915
+ # Pagination token, if not returned indicates the last page.
1916
+ # Corresponds to the JSON property `nextPageToken`
1917
+ # @return [String]
1918
+ attr_accessor :next_page_token
1919
+
1920
+ def initialize(**args)
1921
+ update!(**args)
1922
+ end
1923
+
1924
+ # Update properties of this object
1925
+ def update!(**args)
1926
+ @controls = args[:controls] if args.key?(:controls)
1927
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1928
+ end
1929
+ end
1930
+
1736
1931
  # Response message for ProductService.ListProducts method.
1737
1932
  class GoogleCloudRetailV2alphaListProductsResponse
1738
1933
  include Google::Apis::Core::Hashable
@@ -1768,6 +1963,31 @@ module Google
1768
1963
  end
1769
1964
  end
1770
1965
 
1966
+ # Response for ListServingConfigs method.
1967
+ class GoogleCloudRetailV2alphaListServingConfigsResponse
1968
+ include Google::Apis::Core::Hashable
1969
+
1970
+ # Pagination token, if not returned indicates the last page.
1971
+ # Corresponds to the JSON property `nextPageToken`
1972
+ # @return [String]
1973
+ attr_accessor :next_page_token
1974
+
1975
+ # All the ServingConfigs for a given catalog.
1976
+ # Corresponds to the JSON property `servingConfigs`
1977
+ # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaServingConfig>]
1978
+ attr_accessor :serving_configs
1979
+
1980
+ def initialize(**args)
1981
+ update!(**args)
1982
+ end
1983
+
1984
+ # Update properties of this object
1985
+ def update!(**args)
1986
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1987
+ @serving_configs = args[:serving_configs] if args.key?(:serving_configs)
1988
+ end
1989
+ end
1990
+
1771
1991
  # The inventory information at a place (e.g. a store) identified by a place ID.
1772
1992
  class GoogleCloudRetailV2alphaLocalInventory
1773
1993
  include Google::Apis::Core::Hashable
@@ -1779,7 +1999,7 @@ module Google
1779
1999
  # key must match the pattern: `a-zA-Z0-9*`. For example, key0LikeThis or
1780
2000
  # KEY_1_LIKE_THIS. * The attribute values must be of the same type (text or
1781
2001
  # number). * The max number of values per attribute is 10. * For text values,
1782
- # the length limit is 64 UTF-8 characters. * The attribute does not support
2002
+ # the length limit is 256 UTF-8 characters. * The attribute does not support
1783
2003
  # search. The `searchable` field should be unset or set to false. * The max
1784
2004
  # summed total bytes of custom attribute keys and values per product is 5MiB.
1785
2005
  # Corresponds to the JSON property `attributes`
@@ -2088,8 +2308,8 @@ module Google
2088
2308
  attr_accessor :original_price
2089
2309
 
2090
2310
  # Price of the product. Google Merchant Center property [price](https://support.
2091
- # google.com/merchants/answer/6324371). Schema.org property [Offer.
2092
- # priceSpecification](https://schema.org/priceSpecification).
2311
+ # google.com/merchants/answer/6324371). Schema.org property [Offer.price](https:/
2312
+ # /schema.org/price).
2093
2313
  # Corresponds to the JSON property `price`
2094
2314
  # @return [Float]
2095
2315
  attr_accessor :price
@@ -2237,7 +2457,9 @@ module Google
2237
2457
  # @return [Array<String>]
2238
2458
  attr_accessor :categories
2239
2459
 
2240
- # The id of the collection members when type is Type.COLLECTION. Should not set
2460
+ # The id of the collection members when type is Type.COLLECTION. Non-existent
2461
+ # product ids are allowed. The type of the members must be either Type.PRIMARY
2462
+ # or Type.VARIANT otherwise and INVALID_ARGUMENT error is thrown. Should not set
2241
2463
  # it for other types. A maximum of 1000 values are allowed. Otherwise, an
2242
2464
  # INVALID_ARGUMENT error is return.
2243
2465
  # Corresponds to the JSON property `collectionMemberIds`
@@ -2250,12 +2472,12 @@ module Google
2250
2472
  attr_accessor :color_info
2251
2473
 
2252
2474
  # The condition of the product. Strongly encouraged to use the standard values: "
2253
- # new", "refurbished", "used". A maximum of 5 values are allowed per Product.
2254
- # Each value must be a UTF-8 encoded string with a length limit of 128
2255
- # characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding
2256
- # properties: Google Merchant Center property [condition](https://support.google.
2257
- # com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https:
2258
- # //schema.org/itemCondition).
2475
+ # new", "refurbished", "used". A maximum of 1 value is allowed per Product. Each
2476
+ # value must be a UTF-8 encoded string with a length limit of 128 characters.
2477
+ # Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties:
2478
+ # Google Merchant Center property [condition](https://support.google.com/
2479
+ # merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://
2480
+ # schema.org/itemCondition).
2259
2481
  # Corresponds to the JSON property `conditions`
2260
2482
  # @return [Array<String>]
2261
2483
  attr_accessor :conditions
@@ -2886,6 +3108,26 @@ module Google
2886
3108
  end
2887
3109
  end
2888
3110
 
3111
+ # Request for RemoveControl method.
3112
+ class GoogleCloudRetailV2alphaRemoveControlRequest
3113
+ include Google::Apis::Core::Hashable
3114
+
3115
+ # Required. The id of the control to apply. Assumed to be in the same catalog as
3116
+ # the serving config.
3117
+ # Corresponds to the JSON property `controlId`
3118
+ # @return [String]
3119
+ attr_accessor :control_id
3120
+
3121
+ def initialize(**args)
3122
+ update!(**args)
3123
+ end
3124
+
3125
+ # Update properties of this object
3126
+ def update!(**args)
3127
+ @control_id = args[:control_id] if args.key?(:control_id)
3128
+ end
3129
+ end
3130
+
2889
3131
  # Metadata related to the progress of the RemoveFulfillmentPlaces operation.
2890
3132
  # Currently empty because there is no meaningful metadata populated from the
2891
3133
  # RemoveFulfillmentPlaces method.
@@ -3036,6 +3278,333 @@ module Google
3036
3278
  end
3037
3279
  end
3038
3280
 
3281
+ # A rule is a condition-action pair * A condition defines when a rule is to be
3282
+ # triggered. * An action specifies what occurs on that trigger. Currently only
3283
+ # boost rules are supported. Currently only supported by the search endpoint.
3284
+ class GoogleCloudRetailV2alphaRule
3285
+ include Google::Apis::Core::Hashable
3286
+
3287
+ # A boost action to apply to results matching condition specified above.
3288
+ # Corresponds to the JSON property `boostAction`
3289
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleBoostAction]
3290
+ attr_accessor :boost_action
3291
+
3292
+ # Metadata that is used to define a condition that triggers an action. A valid
3293
+ # condition must specify at least one of 'query_terms' or 'products_filter'. If
3294
+ # multiple fields are specified, the condition is met if all the fields are
3295
+ # satisfied e.g. if a set of query terms and product_filter are set, then only
3296
+ # items matching the product_filter for requests with a query matching the query
3297
+ # terms wil get boosted.
3298
+ # Corresponds to the JSON property `condition`
3299
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaCondition]
3300
+ attr_accessor :condition
3301
+
3302
+ # Prevents `query_term` from being associated with specified terms during search.
3303
+ # Example: Don't associate "gShoe" and "cheap".
3304
+ # Corresponds to the JSON property `doNotAssociateAction`
3305
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleDoNotAssociateAction]
3306
+ attr_accessor :do_not_associate_action
3307
+
3308
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3309
+ # Condition provided is combined with OR operator. * Action Input: The request
3310
+ # query and filter that will be applied to the retrieved products, in addition
3311
+ # to any filters already provided with the SearchRequest. The AND operator is
3312
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3313
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3314
+ # returned objects to be ONLY those that passed the filter.
3315
+ # Corresponds to the JSON property `filterAction`
3316
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleFilterAction]
3317
+ attr_accessor :filter_action
3318
+
3319
+ # Prevents a term in the query from being used in search. Example: Don't search
3320
+ # for "shoddy".
3321
+ # Corresponds to the JSON property `ignoreAction`
3322
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleIgnoreAction]
3323
+ attr_accessor :ignore_action
3324
+
3325
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3326
+ # synonyms of each query term only. `query_terms` will not be treated as
3327
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3328
+ # shoes" will not use a synonym of "sneakers".
3329
+ # Corresponds to the JSON property `onewaySynonymsAction`
3330
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleOnewaySynonymsAction]
3331
+ attr_accessor :oneway_synonyms_action
3332
+
3333
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3334
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3335
+ # provided uri.
3336
+ # Corresponds to the JSON property `redirectAction`
3337
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleRedirectAction]
3338
+ attr_accessor :redirect_action
3339
+
3340
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3341
+ # All `query_terms` will be replaced with the replacement term. Example:
3342
+ # Replace "gShoe" with "google shoe".
3343
+ # Corresponds to the JSON property `replacementAction`
3344
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleReplacementAction]
3345
+ attr_accessor :replacement_action
3346
+
3347
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3348
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3349
+ # . * "shoes" will use a synonym of "sneakers".
3350
+ # Corresponds to the JSON property `twowaySynonymsAction`
3351
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleTwowaySynonymsAction]
3352
+ attr_accessor :twoway_synonyms_action
3353
+
3354
+ def initialize(**args)
3355
+ update!(**args)
3356
+ end
3357
+
3358
+ # Update properties of this object
3359
+ def update!(**args)
3360
+ @boost_action = args[:boost_action] if args.key?(:boost_action)
3361
+ @condition = args[:condition] if args.key?(:condition)
3362
+ @do_not_associate_action = args[:do_not_associate_action] if args.key?(:do_not_associate_action)
3363
+ @filter_action = args[:filter_action] if args.key?(:filter_action)
3364
+ @ignore_action = args[:ignore_action] if args.key?(:ignore_action)
3365
+ @oneway_synonyms_action = args[:oneway_synonyms_action] if args.key?(:oneway_synonyms_action)
3366
+ @redirect_action = args[:redirect_action] if args.key?(:redirect_action)
3367
+ @replacement_action = args[:replacement_action] if args.key?(:replacement_action)
3368
+ @twoway_synonyms_action = args[:twoway_synonyms_action] if args.key?(:twoway_synonyms_action)
3369
+ end
3370
+ end
3371
+
3372
+ # A boost action to apply to results matching condition specified above.
3373
+ class GoogleCloudRetailV2alphaRuleBoostAction
3374
+ include Google::Apis::Core::Hashable
3375
+
3376
+ # Strength of the condition boost, which must be in [-1, 1]. Negative boost
3377
+ # means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion.
3378
+ # However, it does not necessarily mean that the boosted item will be the top
3379
+ # result at all times, nor that other items will be excluded. Results could
3380
+ # still be shown even when none of them matches the condition. And results that
3381
+ # are significantly more relevant to the search query can still trump your
3382
+ # heavily favored but irrelevant items. Setting to -1.0 gives the item a big
3383
+ # demotion. However, results that are deeply relevant might still be shown. The
3384
+ # item will have an upstream battle to get a fairly high ranking, but it is not
3385
+ # blocked out completely. Setting to 0.0 means no boost applied. The boosting
3386
+ # condition is ignored.
3387
+ # Corresponds to the JSON property `boost`
3388
+ # @return [Float]
3389
+ attr_accessor :boost
3390
+
3391
+ # The filter can have a max size of 5000 characters. An expression which
3392
+ # specifies which products to apply an action to. The syntax and supported
3393
+ # fields are the same as a filter expression. See SearchRequest.filter for
3394
+ # detail syntax and limitations. Examples: * To boost products with product ID "
3395
+ # product_1" or "product_2", and color "Red" or "Blue": *(id: ANY("product_1", "
3396
+ # product_2")) * *AND * *(colorFamilies: ANY("Red", "Blue")) *
3397
+ # Corresponds to the JSON property `productsFilter`
3398
+ # @return [String]
3399
+ attr_accessor :products_filter
3400
+
3401
+ def initialize(**args)
3402
+ update!(**args)
3403
+ end
3404
+
3405
+ # Update properties of this object
3406
+ def update!(**args)
3407
+ @boost = args[:boost] if args.key?(:boost)
3408
+ @products_filter = args[:products_filter] if args.key?(:products_filter)
3409
+ end
3410
+ end
3411
+
3412
+ # Prevents `query_term` from being associated with specified terms during search.
3413
+ # Example: Don't associate "gShoe" and "cheap".
3414
+ class GoogleCloudRetailV2alphaRuleDoNotAssociateAction
3415
+ include Google::Apis::Core::Hashable
3416
+
3417
+ # Cannot contain duplicates or the query term. Can specify up to 100 terms.
3418
+ # Corresponds to the JSON property `doNotAssociateTerms`
3419
+ # @return [Array<String>]
3420
+ attr_accessor :do_not_associate_terms
3421
+
3422
+ # Terms from the search query. Will not consider do_not_associate_terms for
3423
+ # search if in search query. Can specify up to 100 terms.
3424
+ # Corresponds to the JSON property `queryTerms`
3425
+ # @return [Array<String>]
3426
+ attr_accessor :query_terms
3427
+
3428
+ # Will be [deprecated = true] post migration;
3429
+ # Corresponds to the JSON property `terms`
3430
+ # @return [Array<String>]
3431
+ attr_accessor :terms
3432
+
3433
+ def initialize(**args)
3434
+ update!(**args)
3435
+ end
3436
+
3437
+ # Update properties of this object
3438
+ def update!(**args)
3439
+ @do_not_associate_terms = args[:do_not_associate_terms] if args.key?(:do_not_associate_terms)
3440
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3441
+ @terms = args[:terms] if args.key?(:terms)
3442
+ end
3443
+ end
3444
+
3445
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3446
+ # Condition provided is combined with OR operator. * Action Input: The request
3447
+ # query and filter that will be applied to the retrieved products, in addition
3448
+ # to any filters already provided with the SearchRequest. The AND operator is
3449
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3450
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3451
+ # returned objects to be ONLY those that passed the filter.
3452
+ class GoogleCloudRetailV2alphaRuleFilterAction
3453
+ include Google::Apis::Core::Hashable
3454
+
3455
+ # A filter to apply on the matching condition results. Supported features: *
3456
+ # filter must be set. * Filter syntax is identical to SearchRequest.filter. See
3457
+ # more details at the Retail Search [user guide](/retail/search/docs/filter-and-
3458
+ # order#filter). * To filter products with product ID "product_1" or "product_2",
3459
+ # and color "Red" or "Blue": *(id: ANY("product_1", "product_2")) * *AND * *(
3460
+ # colorFamilies: ANY("Red", "Blue")) *
3461
+ # Corresponds to the JSON property `filter`
3462
+ # @return [String]
3463
+ attr_accessor :filter
3464
+
3465
+ def initialize(**args)
3466
+ update!(**args)
3467
+ end
3468
+
3469
+ # Update properties of this object
3470
+ def update!(**args)
3471
+ @filter = args[:filter] if args.key?(:filter)
3472
+ end
3473
+ end
3474
+
3475
+ # Prevents a term in the query from being used in search. Example: Don't search
3476
+ # for "shoddy".
3477
+ class GoogleCloudRetailV2alphaRuleIgnoreAction
3478
+ include Google::Apis::Core::Hashable
3479
+
3480
+ # Terms to ignore in the search query.
3481
+ # Corresponds to the JSON property `ignoreTerms`
3482
+ # @return [Array<String>]
3483
+ attr_accessor :ignore_terms
3484
+
3485
+ def initialize(**args)
3486
+ update!(**args)
3487
+ end
3488
+
3489
+ # Update properties of this object
3490
+ def update!(**args)
3491
+ @ignore_terms = args[:ignore_terms] if args.key?(:ignore_terms)
3492
+ end
3493
+ end
3494
+
3495
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3496
+ # synonyms of each query term only. `query_terms` will not be treated as
3497
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3498
+ # shoes" will not use a synonym of "sneakers".
3499
+ class GoogleCloudRetailV2alphaRuleOnewaySynonymsAction
3500
+ include Google::Apis::Core::Hashable
3501
+
3502
+ # Will be [deprecated = true] post migration;
3503
+ # Corresponds to the JSON property `onewayTerms`
3504
+ # @return [Array<String>]
3505
+ attr_accessor :oneway_terms
3506
+
3507
+ # Terms from the search query. Will treat synonyms as their synonyms. Not
3508
+ # themselves synonyms of the synonyms. Can specify up to 100 terms.
3509
+ # Corresponds to the JSON property `queryTerms`
3510
+ # @return [Array<String>]
3511
+ attr_accessor :query_terms
3512
+
3513
+ # Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100
3514
+ # synonyms.
3515
+ # Corresponds to the JSON property `synonyms`
3516
+ # @return [Array<String>]
3517
+ attr_accessor :synonyms
3518
+
3519
+ def initialize(**args)
3520
+ update!(**args)
3521
+ end
3522
+
3523
+ # Update properties of this object
3524
+ def update!(**args)
3525
+ @oneway_terms = args[:oneway_terms] if args.key?(:oneway_terms)
3526
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3527
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3528
+ end
3529
+ end
3530
+
3531
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3532
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3533
+ # provided uri.
3534
+ class GoogleCloudRetailV2alphaRuleRedirectAction
3535
+ include Google::Apis::Core::Hashable
3536
+
3537
+ # URL must have length equal or less than 2000 characters.
3538
+ # Corresponds to the JSON property `redirectUri`
3539
+ # @return [String]
3540
+ attr_accessor :redirect_uri
3541
+
3542
+ def initialize(**args)
3543
+ update!(**args)
3544
+ end
3545
+
3546
+ # Update properties of this object
3547
+ def update!(**args)
3548
+ @redirect_uri = args[:redirect_uri] if args.key?(:redirect_uri)
3549
+ end
3550
+ end
3551
+
3552
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3553
+ # All `query_terms` will be replaced with the replacement term. Example:
3554
+ # Replace "gShoe" with "google shoe".
3555
+ class GoogleCloudRetailV2alphaRuleReplacementAction
3556
+ include Google::Apis::Core::Hashable
3557
+
3558
+ # Terms from the search query. Will be replaced by replacement term. Can specify
3559
+ # up to 100 terms.
3560
+ # Corresponds to the JSON property `queryTerms`
3561
+ # @return [Array<String>]
3562
+ attr_accessor :query_terms
3563
+
3564
+ # Term that will be used for replacement.
3565
+ # Corresponds to the JSON property `replacementTerm`
3566
+ # @return [String]
3567
+ attr_accessor :replacement_term
3568
+
3569
+ # Will be [deprecated = true] post migration;
3570
+ # Corresponds to the JSON property `term`
3571
+ # @return [String]
3572
+ attr_accessor :term
3573
+
3574
+ def initialize(**args)
3575
+ update!(**args)
3576
+ end
3577
+
3578
+ # Update properties of this object
3579
+ def update!(**args)
3580
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3581
+ @replacement_term = args[:replacement_term] if args.key?(:replacement_term)
3582
+ @term = args[:term] if args.key?(:term)
3583
+ end
3584
+ end
3585
+
3586
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3587
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3588
+ # . * "shoes" will use a synonym of "sneakers".
3589
+ class GoogleCloudRetailV2alphaRuleTwowaySynonymsAction
3590
+ include Google::Apis::Core::Hashable
3591
+
3592
+ # Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at
3593
+ # least 2 synonyms.
3594
+ # Corresponds to the JSON property `synonyms`
3595
+ # @return [Array<String>]
3596
+ attr_accessor :synonyms
3597
+
3598
+ def initialize(**args)
3599
+ update!(**args)
3600
+ end
3601
+
3602
+ # Update properties of this object
3603
+ def update!(**args)
3604
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3605
+ end
3606
+ end
3607
+
3039
3608
  # Request message for SearchService.Search method.
3040
3609
  class GoogleCloudRetailV2alphaSearchRequest
3041
3610
  include Google::Apis::Core::Hashable
@@ -3189,9 +3758,9 @@ module Google
3189
3758
  # Required. A unique identifier for tracking visitors. For example, this could
3190
3759
  # be implemented with an HTTP cookie, which should be able to uniquely identify
3191
3760
  # a visitor on a single device. This unique identifier should not change if the
3192
- # visitor logs in or out of the website. The field must be a UTF-8 encoded
3193
- # string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT
3194
- # error is returned.
3761
+ # visitor logs in or out of the website. This should be the same identifier as
3762
+ # UserEvent.visitor_id. The field must be a UTF-8 encoded string with a length
3763
+ # limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
3195
3764
  # Corresponds to the JSON property `visitorId`
3196
3765
  # @return [String]
3197
3766
  attr_accessor :visitor_id
@@ -3719,6 +4288,183 @@ module Google
3719
4288
  end
3720
4289
  end
3721
4290
 
4291
+ # Configures metadata that is used to generate serving time results (e.g. search
4292
+ # results or recommendation predictions). The ServingConfig is passed in the
4293
+ # search and predict request and together with the Catalog.default_branch,
4294
+ # generates results.
4295
+ class GoogleCloudRetailV2alphaServingConfig
4296
+ include Google::Apis::Core::Hashable
4297
+
4298
+ # Condition boost specifications. If a product matches multiple conditions in
4299
+ # the specifications, boost scores from these specifications are all applied and
4300
+ # combined in a non-linear way. Maximum number of specifications is 10. Notice
4301
+ # that if both ServingConfig.boost_control_ids and [SearchRequest.boost_spec]
4302
+ # are set, the boost conditions from both places are evaluated. If a search
4303
+ # request matches multiple boost conditions, the final boost score is equal to
4304
+ # the sum of the boost scores from all matched boost conditions. Can only be set
4305
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4306
+ # Corresponds to the JSON property `boostControlIds`
4307
+ # @return [Array<String>]
4308
+ attr_accessor :boost_control_ids
4309
+
4310
+ # Required. The human readable serving config display name. Used in Retail UI.
4311
+ # This field must be a UTF-8 encoded string with a length limit of 128
4312
+ # characters. Otherwise, an INVALID_ARGUMENT error is returned.
4313
+ # Corresponds to the JSON property `displayName`
4314
+ # @return [String]
4315
+ attr_accessor :display_name
4316
+
4317
+ # How much diversity to use in recommendation model results e.g. 'medium-
4318
+ # diversity' or 'high-diversity'. Currently supported values: * 'no-diversity' *
4319
+ # 'low-diversity' * 'medium-diversity' * 'high-diversity' * 'auto-diversity' If
4320
+ # not specified, we choose default based on recommendation model type. Default
4321
+ # value: 'no-diversity'. Can only be set if solution_types is
4322
+ # SOLUTION_TYPE_RECOMMENDATION.
4323
+ # Corresponds to the JSON property `diversityLevel`
4324
+ # @return [String]
4325
+ attr_accessor :diversity_level
4326
+
4327
+ # Condition do not associate specifications. If multiple do not associate
4328
+ # conditions match, all matching do not associate controls in the list will
4329
+ # execute. - Order does not matter. - Maximum number of specifications is 100.
4330
+ # Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4331
+ # Corresponds to the JSON property `doNotAssociateControlIds`
4332
+ # @return [Array<String>]
4333
+ attr_accessor :do_not_associate_control_ids
4334
+
4335
+ # The specifications of dynamically generated facets.
4336
+ # Corresponds to the JSON property `dynamicFacetSpec`
4337
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpec]
4338
+ attr_accessor :dynamic_facet_spec
4339
+
4340
+ # Whether to add additional category filters on the 'similar-items' model. If
4341
+ # not specified, we enable it by default. Allowed values are: * 'no-category-
4342
+ # match': No additional filtering of original results from the model and the
4343
+ # customer's filters. * 'relaxed-category-match': Only keep results with
4344
+ # categories that match at least one item categories in the PredictRequests's
4345
+ # context item. * If customer also sends filters in the PredictRequest, then the
4346
+ # results will satisfy both conditions (user given and category match). Can only
4347
+ # be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.
4348
+ # Corresponds to the JSON property `enableCategoryFilterLevel`
4349
+ # @return [String]
4350
+ attr_accessor :enable_category_filter_level
4351
+
4352
+ # Facet specifications for faceted search. If empty, no facets are returned. The
4353
+ # ids refer to the ids of Control resources with only the Facet control set.
4354
+ # These controls are assumed to be in the same Catalog as the ServingConfig. A
4355
+ # maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is
4356
+ # returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4357
+ # Corresponds to the JSON property `facetControlIds`
4358
+ # @return [Array<String>]
4359
+ attr_accessor :facet_control_ids
4360
+
4361
+ # Condition filter specifications. If a product matches multiple conditions in
4362
+ # the specifications, filters from these specifications are all applied and
4363
+ # combined via the AND operator. Maximum number of specifications is 100. Can
4364
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4365
+ # Corresponds to the JSON property `filterControlIds`
4366
+ # @return [Array<String>]
4367
+ attr_accessor :filter_control_ids
4368
+
4369
+ # Condition ignore specifications. If multiple ignore conditions match, all
4370
+ # matching ignore controls in the list will execute. - Order does not matter. -
4371
+ # Maximum number of specifications is 100. Can only be set if solution_types is
4372
+ # SOLUTION_TYPE_SEARCH.
4373
+ # Corresponds to the JSON property `ignoreControlIds`
4374
+ # @return [Array<String>]
4375
+ attr_accessor :ignore_control_ids
4376
+
4377
+ # The id of the model to use at serving time. Currently only
4378
+ # RecommendationModels are supported: https://cloud.google.com/retail/
4379
+ # recommendations-ai/docs/create-models Can be changed but only to a compatible
4380
+ # model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when
4381
+ # solution_types is SOLUTION_TYPE_RECOMMENDATION.
4382
+ # Corresponds to the JSON property `modelId`
4383
+ # @return [String]
4384
+ attr_accessor :model_id
4385
+
4386
+ # Immutable. Fully qualified name projects/*/locations/global/catalogs/*/
4387
+ # servingConfig/*
4388
+ # Corresponds to the JSON property `name`
4389
+ # @return [String]
4390
+ attr_accessor :name
4391
+
4392
+ # Condition oneway synonyms specifications. If multiple oneway synonyms
4393
+ # conditions match, all matching oneway synonyms controls in the list will
4394
+ # execute. Order of controls in the list will not matter. Maximum number of
4395
+ # specifications is 100. Can only be set if solution_types is
4396
+ # SOLUTION_TYPE_SEARCH.
4397
+ # Corresponds to the JSON property `onewaySynonymsControlIds`
4398
+ # @return [Array<String>]
4399
+ attr_accessor :oneway_synonyms_control_ids
4400
+
4401
+ # How much price ranking we want in serving results. Price reranking causes
4402
+ # product items with a similar recommendation probability to be ordered by price,
4403
+ # with the highest-priced items first. This setting could result in a decrease
4404
+ # in click-through and conversion rates. Allowed values are: * 'no-price-
4405
+ # reranking' * 'low-price-raranking' * 'medium-price-reranking' * 'high-price-
4406
+ # reranking' If not specified, we choose default based on model type. Default
4407
+ # value: 'no-price-reranking'. Can only be set if solution_types is
4408
+ # SOLUTION_TYPE_RECOMMENDATION.
4409
+ # Corresponds to the JSON property `priceRerankingLevel`
4410
+ # @return [String]
4411
+ attr_accessor :price_reranking_level
4412
+
4413
+ # Condition redirect specifications. Only the first triggered redirect action is
4414
+ # applied, even if multiple apply. Maximum number of specifications is 100. Can
4415
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4416
+ # Corresponds to the JSON property `redirectControlIds`
4417
+ # @return [Array<String>]
4418
+ attr_accessor :redirect_control_ids
4419
+
4420
+ # Condition replacement specifications. - Applied according to the order in the
4421
+ # list. - A previously replaced term can not be re-replaced. - Maximum number of
4422
+ # specifications is 100. Can only be set if solution_types is
4423
+ # SOLUTION_TYPE_SEARCH.
4424
+ # Corresponds to the JSON property `replacementControlIds`
4425
+ # @return [Array<String>]
4426
+ attr_accessor :replacement_control_ids
4427
+
4428
+ # Required. Immutable. Specifies the solution types that a serving config can be
4429
+ # associated with. Currently we support setting only one type of solution.
4430
+ # Corresponds to the JSON property `solutionTypes`
4431
+ # @return [Array<String>]
4432
+ attr_accessor :solution_types
4433
+
4434
+ # Condition synonyms specifications. If multiple syonyms conditions match, all
4435
+ # matching synonyms control in the list will execute. Order of controls in the
4436
+ # list will not matter. Maximum number of specifications is 100. Can only be set
4437
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4438
+ # Corresponds to the JSON property `twowaySynonymsControlIds`
4439
+ # @return [Array<String>]
4440
+ attr_accessor :twoway_synonyms_control_ids
4441
+
4442
+ def initialize(**args)
4443
+ update!(**args)
4444
+ end
4445
+
4446
+ # Update properties of this object
4447
+ def update!(**args)
4448
+ @boost_control_ids = args[:boost_control_ids] if args.key?(:boost_control_ids)
4449
+ @display_name = args[:display_name] if args.key?(:display_name)
4450
+ @diversity_level = args[:diversity_level] if args.key?(:diversity_level)
4451
+ @do_not_associate_control_ids = args[:do_not_associate_control_ids] if args.key?(:do_not_associate_control_ids)
4452
+ @dynamic_facet_spec = args[:dynamic_facet_spec] if args.key?(:dynamic_facet_spec)
4453
+ @enable_category_filter_level = args[:enable_category_filter_level] if args.key?(:enable_category_filter_level)
4454
+ @facet_control_ids = args[:facet_control_ids] if args.key?(:facet_control_ids)
4455
+ @filter_control_ids = args[:filter_control_ids] if args.key?(:filter_control_ids)
4456
+ @ignore_control_ids = args[:ignore_control_ids] if args.key?(:ignore_control_ids)
4457
+ @model_id = args[:model_id] if args.key?(:model_id)
4458
+ @name = args[:name] if args.key?(:name)
4459
+ @oneway_synonyms_control_ids = args[:oneway_synonyms_control_ids] if args.key?(:oneway_synonyms_control_ids)
4460
+ @price_reranking_level = args[:price_reranking_level] if args.key?(:price_reranking_level)
4461
+ @redirect_control_ids = args[:redirect_control_ids] if args.key?(:redirect_control_ids)
4462
+ @replacement_control_ids = args[:replacement_control_ids] if args.key?(:replacement_control_ids)
4463
+ @solution_types = args[:solution_types] if args.key?(:solution_types)
4464
+ @twoway_synonyms_control_ids = args[:twoway_synonyms_control_ids] if args.key?(:twoway_synonyms_control_ids)
4465
+ end
4466
+ end
4467
+
3722
4468
  # Request message to set a specified branch as new default_branch.
3723
4469
  class GoogleCloudRetailV2alphaSetDefaultBranchRequest
3724
4470
  include Google::Apis::Core::Hashable
@@ -3782,10 +4528,9 @@ module Google
3782
4528
  # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaProduct]
3783
4529
  attr_accessor :inventory
3784
4530
 
3785
- # Indicates which inventory fields in the provided Product to update. If not set
3786
- # or set with empty paths, all inventory fields will be updated. If an
3787
- # unsupported or unknown field is provided, an INVALID_ARGUMENT error is
3788
- # returned and the entire update will be ignored.
4531
+ # Indicates which inventory fields in the provided Product to update. At least
4532
+ # one field must be provided. If an unsupported or unknown field is provided, an
4533
+ # INVALID_ARGUMENT error is returned and the entire update will be ignored.
3789
4534
  # Corresponds to the JSON property `setMask`
3790
4535
  # @return [String]
3791
4536
  attr_accessor :set_mask
@@ -3824,76 +4569,6 @@ module Google
3824
4569
  end
3825
4570
  end
3826
4571
 
3827
- # Metadata related to the progress of the SetLocalInventories operation.
3828
- # Currently empty because there is no meaningful metadata populated from the
3829
- # SetLocalInventories method.
3830
- class GoogleCloudRetailV2alphaSetLocalInventoriesMetadata
3831
- include Google::Apis::Core::Hashable
3832
-
3833
- def initialize(**args)
3834
- update!(**args)
3835
- end
3836
-
3837
- # Update properties of this object
3838
- def update!(**args)
3839
- end
3840
- end
3841
-
3842
- # Request message for SetLocalInventories method.
3843
- class GoogleCloudRetailV2alphaSetLocalInventoriesRequest
3844
- include Google::Apis::Core::Hashable
3845
-
3846
- # If set to true, and the Product is not found, the local inventory will still
3847
- # be processed and retained for at most 1 day and processed once the Product is
3848
- # created. If set to false, a NOT_FOUND error is returned if the Product is not
3849
- # found.
3850
- # Corresponds to the JSON property `allowMissing`
3851
- # @return [Boolean]
3852
- attr_accessor :allow_missing
3853
- alias_method :allow_missing?, :allow_missing
3854
-
3855
- # A list of inventory information at difference places. Each place is identified
3856
- # by its place ID. For example, if `place1` and `place2` are stored, and this
3857
- # list is `[place1, place3]` with a fresher set timestamp, then the stored
3858
- # places will become `place1` and `place3`. An empty list removes all existing
3859
- # places with staler fields. At most 3000 inventories are allowed per request.
3860
- # Corresponds to the JSON property `localInventories`
3861
- # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaLocalInventory>]
3862
- attr_accessor :local_inventories
3863
-
3864
- # The time when the inventory updates are issued. Used to prevent out-of-order
3865
- # updates on local inventory fields. If not provided, the internal system time
3866
- # will be used.
3867
- # Corresponds to the JSON property `setTime`
3868
- # @return [String]
3869
- attr_accessor :set_time
3870
-
3871
- def initialize(**args)
3872
- update!(**args)
3873
- end
3874
-
3875
- # Update properties of this object
3876
- def update!(**args)
3877
- @allow_missing = args[:allow_missing] if args.key?(:allow_missing)
3878
- @local_inventories = args[:local_inventories] if args.key?(:local_inventories)
3879
- @set_time = args[:set_time] if args.key?(:set_time)
3880
- end
3881
- end
3882
-
3883
- # Response of the SetLocalInventories API. Currently empty because there is no
3884
- # meaningful response populated from the SetLocalInventories method.
3885
- class GoogleCloudRetailV2alphaSetLocalInventoriesResponse
3886
- include Google::Apis::Core::Hashable
3887
-
3888
- def initialize(**args)
3889
- update!(**args)
3890
- end
3891
-
3892
- # Update properties of this object
3893
- def update!(**args)
3894
- end
3895
- end
3896
-
3897
4572
  # UserEvent captures all metadata information Retail API needs to know about how
3898
4573
  # end users interact with customers' website.
3899
4574
  class GoogleCloudRetailV2alphaUserEvent
@@ -4020,12 +4695,12 @@ module Google
4020
4695
 
4021
4696
  # The main product details related to the event. This field is required for the
4022
4697
  # following event types: * `add-to-cart` * `detail-page-view` * `purchase-
4023
- # complete` In a `search` event, this field represents the products returned to
4024
- # the end user on the current page (the end user may have not finished browsing
4025
- # the whole page yet). When a new page is returned to the end user, after
4026
- # pagination/filtering/ordering even for the same query, a new `search` event
4027
- # with different product_details is desired. The end user may have not finished
4028
- # browsing the whole page yet.
4698
+ # complete` * `search` In a `search` event, this field represents the products
4699
+ # returned to the end user on the current page (the end user may have not
4700
+ # finished browsing the whole page yet). When a new page is returned to the end
4701
+ # user, after pagination/filtering/ordering even for the same query, a new `
4702
+ # search` event with different product_details is desired. The end user may have
4703
+ # not finished browsing the whole page yet.
4029
4704
  # Corresponds to the JSON property `productDetails`
4030
4705
  # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaProductDetail>]
4031
4706
  attr_accessor :product_details