google-apis-retail_v2alpha 0.24.0 → 0.28.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
@@ -1306,7 +1473,8 @@ module Google
1306
1473
  # imports: * `user_event` (default): One JSON UserEvent per line. * `
1307
1474
  # user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
1308
1475
  # Supported values for control imports: * 'control' (default): One JSON Control
1309
- # per line.
1476
+ # per line. Supported values for catalog attribute imports: * 'catalog_attribute'
1477
+ # (default): One CSV CatalogAttribute per line.
1310
1478
  # Corresponds to the JSON property `dataSchema`
1311
1479
  # @return [String]
1312
1480
  attr_accessor :data_schema
@@ -1735,6 +1903,31 @@ module Google
1735
1903
  end
1736
1904
  end
1737
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
+
1738
1931
  # Response message for ProductService.ListProducts method.
1739
1932
  class GoogleCloudRetailV2alphaListProductsResponse
1740
1933
  include Google::Apis::Core::Hashable
@@ -1770,6 +1963,31 @@ module Google
1770
1963
  end
1771
1964
  end
1772
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
+
1773
1991
  # The inventory information at a place (e.g. a store) identified by a place ID.
1774
1992
  class GoogleCloudRetailV2alphaLocalInventory
1775
1993
  include Google::Apis::Core::Hashable
@@ -2239,7 +2457,9 @@ module Google
2239
2457
  # @return [Array<String>]
2240
2458
  attr_accessor :categories
2241
2459
 
2242
- # 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
2243
2463
  # it for other types. A maximum of 1000 values are allowed. Otherwise, an
2244
2464
  # INVALID_ARGUMENT error is return.
2245
2465
  # Corresponds to the JSON property `collectionMemberIds`
@@ -2252,12 +2472,12 @@ module Google
2252
2472
  attr_accessor :color_info
2253
2473
 
2254
2474
  # The condition of the product. Strongly encouraged to use the standard values: "
2255
- # new", "refurbished", "used". A maximum of 5 values are allowed per Product.
2256
- # Each value must be a UTF-8 encoded string with a length limit of 128
2257
- # characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding
2258
- # properties: Google Merchant Center property [condition](https://support.google.
2259
- # com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https:
2260
- # //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).
2261
2481
  # Corresponds to the JSON property `conditions`
2262
2482
  # @return [Array<String>]
2263
2483
  attr_accessor :conditions
@@ -2378,7 +2598,8 @@ module Google
2378
2598
  attr_accessor :primary_product_id
2379
2599
 
2380
2600
  # The promotions applied to the product. A maximum of 10 values are allowed per
2381
- # Product.
2601
+ # Product. Only Promotion.promotion_id will be used, other fields will be
2602
+ # ignored if set.
2382
2603
  # Corresponds to the JSON property `promotions`
2383
2604
  # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaPromotion>]
2384
2605
  attr_accessor :promotions
@@ -2657,7 +2878,7 @@ module Google
2657
2878
  class GoogleCloudRetailV2alphaPromotion
2658
2879
  include Google::Apis::Core::Hashable
2659
2880
 
2660
- # ID of the promotion. For example, "free gift". The value value must be a UTF-8
2881
+ # ID of the promotion. For example, "free gift". The value must be a UTF-8
2661
2882
  # encoded string with a length limit of 128 characters, and match the pattern: `
2662
2883
  # a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an
2663
2884
  # INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion]
@@ -2888,6 +3109,26 @@ module Google
2888
3109
  end
2889
3110
  end
2890
3111
 
3112
+ # Request for RemoveControl method.
3113
+ class GoogleCloudRetailV2alphaRemoveControlRequest
3114
+ include Google::Apis::Core::Hashable
3115
+
3116
+ # Required. The id of the control to apply. Assumed to be in the same catalog as
3117
+ # the serving config.
3118
+ # Corresponds to the JSON property `controlId`
3119
+ # @return [String]
3120
+ attr_accessor :control_id
3121
+
3122
+ def initialize(**args)
3123
+ update!(**args)
3124
+ end
3125
+
3126
+ # Update properties of this object
3127
+ def update!(**args)
3128
+ @control_id = args[:control_id] if args.key?(:control_id)
3129
+ end
3130
+ end
3131
+
2891
3132
  # Metadata related to the progress of the RemoveFulfillmentPlaces operation.
2892
3133
  # Currently empty because there is no meaningful metadata populated from the
2893
3134
  # RemoveFulfillmentPlaces method.
@@ -3038,6 +3279,333 @@ module Google
3038
3279
  end
3039
3280
  end
3040
3281
 
3282
+ # A rule is a condition-action pair * A condition defines when a rule is to be
3283
+ # triggered. * An action specifies what occurs on that trigger. Currently only
3284
+ # boost rules are supported. Currently only supported by the search endpoint.
3285
+ class GoogleCloudRetailV2alphaRule
3286
+ include Google::Apis::Core::Hashable
3287
+
3288
+ # A boost action to apply to results matching condition specified above.
3289
+ # Corresponds to the JSON property `boostAction`
3290
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleBoostAction]
3291
+ attr_accessor :boost_action
3292
+
3293
+ # Metadata that is used to define a condition that triggers an action. A valid
3294
+ # condition must specify at least one of 'query_terms' or 'products_filter'. If
3295
+ # multiple fields are specified, the condition is met if all the fields are
3296
+ # satisfied e.g. if a set of query terms and product_filter are set, then only
3297
+ # items matching the product_filter for requests with a query matching the query
3298
+ # terms wil get boosted.
3299
+ # Corresponds to the JSON property `condition`
3300
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaCondition]
3301
+ attr_accessor :condition
3302
+
3303
+ # Prevents `query_term` from being associated with specified terms during search.
3304
+ # Example: Don't associate "gShoe" and "cheap".
3305
+ # Corresponds to the JSON property `doNotAssociateAction`
3306
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleDoNotAssociateAction]
3307
+ attr_accessor :do_not_associate_action
3308
+
3309
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3310
+ # Condition provided is combined with OR operator. * Action Input: The request
3311
+ # query and filter that will be applied to the retrieved products, in addition
3312
+ # to any filters already provided with the SearchRequest. The AND operator is
3313
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3314
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3315
+ # returned objects to be ONLY those that passed the filter.
3316
+ # Corresponds to the JSON property `filterAction`
3317
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleFilterAction]
3318
+ attr_accessor :filter_action
3319
+
3320
+ # Prevents a term in the query from being used in search. Example: Don't search
3321
+ # for "shoddy".
3322
+ # Corresponds to the JSON property `ignoreAction`
3323
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleIgnoreAction]
3324
+ attr_accessor :ignore_action
3325
+
3326
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3327
+ # synonyms of each query term only. `query_terms` will not be treated as
3328
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3329
+ # shoes" will not use a synonym of "sneakers".
3330
+ # Corresponds to the JSON property `onewaySynonymsAction`
3331
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleOnewaySynonymsAction]
3332
+ attr_accessor :oneway_synonyms_action
3333
+
3334
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3335
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3336
+ # provided uri.
3337
+ # Corresponds to the JSON property `redirectAction`
3338
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleRedirectAction]
3339
+ attr_accessor :redirect_action
3340
+
3341
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3342
+ # All `query_terms` will be replaced with the replacement term. Example:
3343
+ # Replace "gShoe" with "google shoe".
3344
+ # Corresponds to the JSON property `replacementAction`
3345
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleReplacementAction]
3346
+ attr_accessor :replacement_action
3347
+
3348
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3349
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3350
+ # . * "shoes" will use a synonym of "sneakers".
3351
+ # Corresponds to the JSON property `twowaySynonymsAction`
3352
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaRuleTwowaySynonymsAction]
3353
+ attr_accessor :twoway_synonyms_action
3354
+
3355
+ def initialize(**args)
3356
+ update!(**args)
3357
+ end
3358
+
3359
+ # Update properties of this object
3360
+ def update!(**args)
3361
+ @boost_action = args[:boost_action] if args.key?(:boost_action)
3362
+ @condition = args[:condition] if args.key?(:condition)
3363
+ @do_not_associate_action = args[:do_not_associate_action] if args.key?(:do_not_associate_action)
3364
+ @filter_action = args[:filter_action] if args.key?(:filter_action)
3365
+ @ignore_action = args[:ignore_action] if args.key?(:ignore_action)
3366
+ @oneway_synonyms_action = args[:oneway_synonyms_action] if args.key?(:oneway_synonyms_action)
3367
+ @redirect_action = args[:redirect_action] if args.key?(:redirect_action)
3368
+ @replacement_action = args[:replacement_action] if args.key?(:replacement_action)
3369
+ @twoway_synonyms_action = args[:twoway_synonyms_action] if args.key?(:twoway_synonyms_action)
3370
+ end
3371
+ end
3372
+
3373
+ # A boost action to apply to results matching condition specified above.
3374
+ class GoogleCloudRetailV2alphaRuleBoostAction
3375
+ include Google::Apis::Core::Hashable
3376
+
3377
+ # Strength of the condition boost, which must be in [-1, 1]. Negative boost
3378
+ # means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion.
3379
+ # However, it does not necessarily mean that the boosted item will be the top
3380
+ # result at all times, nor that other items will be excluded. Results could
3381
+ # still be shown even when none of them matches the condition. And results that
3382
+ # are significantly more relevant to the search query can still trump your
3383
+ # heavily favored but irrelevant items. Setting to -1.0 gives the item a big
3384
+ # demotion. However, results that are deeply relevant might still be shown. The
3385
+ # item will have an upstream battle to get a fairly high ranking, but it is not
3386
+ # blocked out completely. Setting to 0.0 means no boost applied. The boosting
3387
+ # condition is ignored.
3388
+ # Corresponds to the JSON property `boost`
3389
+ # @return [Float]
3390
+ attr_accessor :boost
3391
+
3392
+ # The filter can have a max size of 5000 characters. An expression which
3393
+ # specifies which products to apply an action to. The syntax and supported
3394
+ # fields are the same as a filter expression. See SearchRequest.filter for
3395
+ # detail syntax and limitations. Examples: * To boost products with product ID "
3396
+ # product_1" or "product_2", and color "Red" or "Blue": *(id: ANY("product_1", "
3397
+ # product_2")) * *AND * *(colorFamilies: ANY("Red", "Blue")) *
3398
+ # Corresponds to the JSON property `productsFilter`
3399
+ # @return [String]
3400
+ attr_accessor :products_filter
3401
+
3402
+ def initialize(**args)
3403
+ update!(**args)
3404
+ end
3405
+
3406
+ # Update properties of this object
3407
+ def update!(**args)
3408
+ @boost = args[:boost] if args.key?(:boost)
3409
+ @products_filter = args[:products_filter] if args.key?(:products_filter)
3410
+ end
3411
+ end
3412
+
3413
+ # Prevents `query_term` from being associated with specified terms during search.
3414
+ # Example: Don't associate "gShoe" and "cheap".
3415
+ class GoogleCloudRetailV2alphaRuleDoNotAssociateAction
3416
+ include Google::Apis::Core::Hashable
3417
+
3418
+ # Cannot contain duplicates or the query term. Can specify up to 100 terms.
3419
+ # Corresponds to the JSON property `doNotAssociateTerms`
3420
+ # @return [Array<String>]
3421
+ attr_accessor :do_not_associate_terms
3422
+
3423
+ # Terms from the search query. Will not consider do_not_associate_terms for
3424
+ # search if in search query. Can specify up to 100 terms.
3425
+ # Corresponds to the JSON property `queryTerms`
3426
+ # @return [Array<String>]
3427
+ attr_accessor :query_terms
3428
+
3429
+ # Will be [deprecated = true] post migration;
3430
+ # Corresponds to the JSON property `terms`
3431
+ # @return [Array<String>]
3432
+ attr_accessor :terms
3433
+
3434
+ def initialize(**args)
3435
+ update!(**args)
3436
+ end
3437
+
3438
+ # Update properties of this object
3439
+ def update!(**args)
3440
+ @do_not_associate_terms = args[:do_not_associate_terms] if args.key?(:do_not_associate_terms)
3441
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3442
+ @terms = args[:terms] if args.key?(:terms)
3443
+ end
3444
+ end
3445
+
3446
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3447
+ # Condition provided is combined with OR operator. * Action Input: The request
3448
+ # query and filter that will be applied to the retrieved products, in addition
3449
+ # to any filters already provided with the SearchRequest. The AND operator is
3450
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3451
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3452
+ # returned objects to be ONLY those that passed the filter.
3453
+ class GoogleCloudRetailV2alphaRuleFilterAction
3454
+ include Google::Apis::Core::Hashable
3455
+
3456
+ # A filter to apply on the matching condition results. Supported features: *
3457
+ # filter must be set. * Filter syntax is identical to SearchRequest.filter. See
3458
+ # more details at the Retail Search [user guide](/retail/search/docs/filter-and-
3459
+ # order#filter). * To filter products with product ID "product_1" or "product_2",
3460
+ # and color "Red" or "Blue": *(id: ANY("product_1", "product_2")) * *AND * *(
3461
+ # colorFamilies: ANY("Red", "Blue")) *
3462
+ # Corresponds to the JSON property `filter`
3463
+ # @return [String]
3464
+ attr_accessor :filter
3465
+
3466
+ def initialize(**args)
3467
+ update!(**args)
3468
+ end
3469
+
3470
+ # Update properties of this object
3471
+ def update!(**args)
3472
+ @filter = args[:filter] if args.key?(:filter)
3473
+ end
3474
+ end
3475
+
3476
+ # Prevents a term in the query from being used in search. Example: Don't search
3477
+ # for "shoddy".
3478
+ class GoogleCloudRetailV2alphaRuleIgnoreAction
3479
+ include Google::Apis::Core::Hashable
3480
+
3481
+ # Terms to ignore in the search query.
3482
+ # Corresponds to the JSON property `ignoreTerms`
3483
+ # @return [Array<String>]
3484
+ attr_accessor :ignore_terms
3485
+
3486
+ def initialize(**args)
3487
+ update!(**args)
3488
+ end
3489
+
3490
+ # Update properties of this object
3491
+ def update!(**args)
3492
+ @ignore_terms = args[:ignore_terms] if args.key?(:ignore_terms)
3493
+ end
3494
+ end
3495
+
3496
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3497
+ # synonyms of each query term only. `query_terms` will not be treated as
3498
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3499
+ # shoes" will not use a synonym of "sneakers".
3500
+ class GoogleCloudRetailV2alphaRuleOnewaySynonymsAction
3501
+ include Google::Apis::Core::Hashable
3502
+
3503
+ # Will be [deprecated = true] post migration;
3504
+ # Corresponds to the JSON property `onewayTerms`
3505
+ # @return [Array<String>]
3506
+ attr_accessor :oneway_terms
3507
+
3508
+ # Terms from the search query. Will treat synonyms as their synonyms. Not
3509
+ # themselves synonyms of the synonyms. Can specify up to 100 terms.
3510
+ # Corresponds to the JSON property `queryTerms`
3511
+ # @return [Array<String>]
3512
+ attr_accessor :query_terms
3513
+
3514
+ # Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100
3515
+ # synonyms.
3516
+ # Corresponds to the JSON property `synonyms`
3517
+ # @return [Array<String>]
3518
+ attr_accessor :synonyms
3519
+
3520
+ def initialize(**args)
3521
+ update!(**args)
3522
+ end
3523
+
3524
+ # Update properties of this object
3525
+ def update!(**args)
3526
+ @oneway_terms = args[:oneway_terms] if args.key?(:oneway_terms)
3527
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3528
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3529
+ end
3530
+ end
3531
+
3532
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3533
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3534
+ # provided uri.
3535
+ class GoogleCloudRetailV2alphaRuleRedirectAction
3536
+ include Google::Apis::Core::Hashable
3537
+
3538
+ # URL must have length equal or less than 2000 characters.
3539
+ # Corresponds to the JSON property `redirectUri`
3540
+ # @return [String]
3541
+ attr_accessor :redirect_uri
3542
+
3543
+ def initialize(**args)
3544
+ update!(**args)
3545
+ end
3546
+
3547
+ # Update properties of this object
3548
+ def update!(**args)
3549
+ @redirect_uri = args[:redirect_uri] if args.key?(:redirect_uri)
3550
+ end
3551
+ end
3552
+
3553
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3554
+ # All `query_terms` will be replaced with the replacement term. Example:
3555
+ # Replace "gShoe" with "google shoe".
3556
+ class GoogleCloudRetailV2alphaRuleReplacementAction
3557
+ include Google::Apis::Core::Hashable
3558
+
3559
+ # Terms from the search query. Will be replaced by replacement term. Can specify
3560
+ # up to 100 terms.
3561
+ # Corresponds to the JSON property `queryTerms`
3562
+ # @return [Array<String>]
3563
+ attr_accessor :query_terms
3564
+
3565
+ # Term that will be used for replacement.
3566
+ # Corresponds to the JSON property `replacementTerm`
3567
+ # @return [String]
3568
+ attr_accessor :replacement_term
3569
+
3570
+ # Will be [deprecated = true] post migration;
3571
+ # Corresponds to the JSON property `term`
3572
+ # @return [String]
3573
+ attr_accessor :term
3574
+
3575
+ def initialize(**args)
3576
+ update!(**args)
3577
+ end
3578
+
3579
+ # Update properties of this object
3580
+ def update!(**args)
3581
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3582
+ @replacement_term = args[:replacement_term] if args.key?(:replacement_term)
3583
+ @term = args[:term] if args.key?(:term)
3584
+ end
3585
+ end
3586
+
3587
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3588
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3589
+ # . * "shoes" will use a synonym of "sneakers".
3590
+ class GoogleCloudRetailV2alphaRuleTwowaySynonymsAction
3591
+ include Google::Apis::Core::Hashable
3592
+
3593
+ # Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at
3594
+ # least 2 synonyms.
3595
+ # Corresponds to the JSON property `synonyms`
3596
+ # @return [Array<String>]
3597
+ attr_accessor :synonyms
3598
+
3599
+ def initialize(**args)
3600
+ update!(**args)
3601
+ end
3602
+
3603
+ # Update properties of this object
3604
+ def update!(**args)
3605
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3606
+ end
3607
+ end
3608
+
3041
3609
  # Request message for SearchService.Search method.
3042
3610
  class GoogleCloudRetailV2alphaSearchRequest
3043
3611
  include Google::Apis::Core::Hashable
@@ -3129,6 +3697,11 @@ module Google
3129
3697
  # @return [String]
3130
3698
  attr_accessor :page_token
3131
3699
 
3700
+ # The specification for personalization.
3701
+ # Corresponds to the JSON property `personalizationSpec`
3702
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaSearchRequestPersonalizationSpec]
3703
+ attr_accessor :personalization_spec
3704
+
3132
3705
  # Raw search query.
3133
3706
  # Corresponds to the JSON property `query`
3134
3707
  # @return [String]
@@ -3215,6 +3788,7 @@ module Google
3215
3788
  @page_categories = args[:page_categories] if args.key?(:page_categories)
3216
3789
  @page_size = args[:page_size] if args.key?(:page_size)
3217
3790
  @page_token = args[:page_token] if args.key?(:page_token)
3791
+ @personalization_spec = args[:personalization_spec] if args.key?(:personalization_spec)
3218
3792
  @query = args[:query] if args.key?(:query)
3219
3793
  @query_expansion_spec = args[:query_expansion_spec] if args.key?(:query_expansion_spec)
3220
3794
  @relevance_threshold = args[:relevance_threshold] if args.key?(:relevance_threshold)
@@ -3465,6 +4039,25 @@ module Google
3465
4039
  end
3466
4040
  end
3467
4041
 
4042
+ # The specification for personalization.
4043
+ class GoogleCloudRetailV2alphaSearchRequestPersonalizationSpec
4044
+ include Google::Apis::Core::Hashable
4045
+
4046
+ # Defaults to Mode.AUTO.
4047
+ # Corresponds to the JSON property `mode`
4048
+ # @return [String]
4049
+ attr_accessor :mode
4050
+
4051
+ def initialize(**args)
4052
+ update!(**args)
4053
+ end
4054
+
4055
+ # Update properties of this object
4056
+ def update!(**args)
4057
+ @mode = args[:mode] if args.key?(:mode)
4058
+ end
4059
+ end
4060
+
3468
4061
  # Specification to determine under which conditions query expansion should occur.
3469
4062
  class GoogleCloudRetailV2alphaSearchRequestQueryExpansionSpec
3470
4063
  include Google::Apis::Core::Hashable
@@ -3721,6 +4314,183 @@ module Google
3721
4314
  end
3722
4315
  end
3723
4316
 
4317
+ # Configures metadata that is used to generate serving time results (e.g. search
4318
+ # results or recommendation predictions). The ServingConfig is passed in the
4319
+ # search and predict request and together with the Catalog.default_branch,
4320
+ # generates results.
4321
+ class GoogleCloudRetailV2alphaServingConfig
4322
+ include Google::Apis::Core::Hashable
4323
+
4324
+ # Condition boost specifications. If a product matches multiple conditions in
4325
+ # the specifications, boost scores from these specifications are all applied and
4326
+ # combined in a non-linear way. Maximum number of specifications is 10. Notice
4327
+ # that if both ServingConfig.boost_control_ids and [SearchRequest.boost_spec]
4328
+ # are set, the boost conditions from both places are evaluated. If a search
4329
+ # request matches multiple boost conditions, the final boost score is equal to
4330
+ # the sum of the boost scores from all matched boost conditions. Can only be set
4331
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4332
+ # Corresponds to the JSON property `boostControlIds`
4333
+ # @return [Array<String>]
4334
+ attr_accessor :boost_control_ids
4335
+
4336
+ # Required. The human readable serving config display name. Used in Retail UI.
4337
+ # This field must be a UTF-8 encoded string with a length limit of 128
4338
+ # characters. Otherwise, an INVALID_ARGUMENT error is returned.
4339
+ # Corresponds to the JSON property `displayName`
4340
+ # @return [String]
4341
+ attr_accessor :display_name
4342
+
4343
+ # How much diversity to use in recommendation model results e.g. 'medium-
4344
+ # diversity' or 'high-diversity'. Currently supported values: * 'no-diversity' *
4345
+ # 'low-diversity' * 'medium-diversity' * 'high-diversity' * 'auto-diversity' If
4346
+ # not specified, we choose default based on recommendation model type. Default
4347
+ # value: 'no-diversity'. Can only be set if solution_types is
4348
+ # SOLUTION_TYPE_RECOMMENDATION.
4349
+ # Corresponds to the JSON property `diversityLevel`
4350
+ # @return [String]
4351
+ attr_accessor :diversity_level
4352
+
4353
+ # Condition do not associate specifications. If multiple do not associate
4354
+ # conditions match, all matching do not associate controls in the list will
4355
+ # execute. - Order does not matter. - Maximum number of specifications is 100.
4356
+ # Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4357
+ # Corresponds to the JSON property `doNotAssociateControlIds`
4358
+ # @return [Array<String>]
4359
+ attr_accessor :do_not_associate_control_ids
4360
+
4361
+ # The specifications of dynamically generated facets.
4362
+ # Corresponds to the JSON property `dynamicFacetSpec`
4363
+ # @return [Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpec]
4364
+ attr_accessor :dynamic_facet_spec
4365
+
4366
+ # Whether to add additional category filters on the 'similar-items' model. If
4367
+ # not specified, we enable it by default. Allowed values are: * 'no-category-
4368
+ # match': No additional filtering of original results from the model and the
4369
+ # customer's filters. * 'relaxed-category-match': Only keep results with
4370
+ # categories that match at least one item categories in the PredictRequests's
4371
+ # context item. * If customer also sends filters in the PredictRequest, then the
4372
+ # results will satisfy both conditions (user given and category match). Can only
4373
+ # be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.
4374
+ # Corresponds to the JSON property `enableCategoryFilterLevel`
4375
+ # @return [String]
4376
+ attr_accessor :enable_category_filter_level
4377
+
4378
+ # Facet specifications for faceted search. If empty, no facets are returned. The
4379
+ # ids refer to the ids of Control resources with only the Facet control set.
4380
+ # These controls are assumed to be in the same Catalog as the ServingConfig. A
4381
+ # maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is
4382
+ # returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4383
+ # Corresponds to the JSON property `facetControlIds`
4384
+ # @return [Array<String>]
4385
+ attr_accessor :facet_control_ids
4386
+
4387
+ # Condition filter specifications. If a product matches multiple conditions in
4388
+ # the specifications, filters from these specifications are all applied and
4389
+ # combined via the AND operator. Maximum number of specifications is 100. Can
4390
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4391
+ # Corresponds to the JSON property `filterControlIds`
4392
+ # @return [Array<String>]
4393
+ attr_accessor :filter_control_ids
4394
+
4395
+ # Condition ignore specifications. If multiple ignore conditions match, all
4396
+ # matching ignore controls in the list will execute. - Order does not matter. -
4397
+ # Maximum number of specifications is 100. Can only be set if solution_types is
4398
+ # SOLUTION_TYPE_SEARCH.
4399
+ # Corresponds to the JSON property `ignoreControlIds`
4400
+ # @return [Array<String>]
4401
+ attr_accessor :ignore_control_ids
4402
+
4403
+ # The id of the model to use at serving time. Currently only
4404
+ # RecommendationModels are supported: https://cloud.google.com/retail/
4405
+ # recommendations-ai/docs/create-models Can be changed but only to a compatible
4406
+ # model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when
4407
+ # solution_types is SOLUTION_TYPE_RECOMMENDATION.
4408
+ # Corresponds to the JSON property `modelId`
4409
+ # @return [String]
4410
+ attr_accessor :model_id
4411
+
4412
+ # Immutable. Fully qualified name projects/*/locations/global/catalogs/*/
4413
+ # servingConfig/*
4414
+ # Corresponds to the JSON property `name`
4415
+ # @return [String]
4416
+ attr_accessor :name
4417
+
4418
+ # Condition oneway synonyms specifications. If multiple oneway synonyms
4419
+ # conditions match, all matching oneway synonyms controls in the list will
4420
+ # execute. Order of controls in the list will not matter. Maximum number of
4421
+ # specifications is 100. Can only be set if solution_types is
4422
+ # SOLUTION_TYPE_SEARCH.
4423
+ # Corresponds to the JSON property `onewaySynonymsControlIds`
4424
+ # @return [Array<String>]
4425
+ attr_accessor :oneway_synonyms_control_ids
4426
+
4427
+ # How much price ranking we want in serving results. Price reranking causes
4428
+ # product items with a similar recommendation probability to be ordered by price,
4429
+ # with the highest-priced items first. This setting could result in a decrease
4430
+ # in click-through and conversion rates. Allowed values are: * 'no-price-
4431
+ # reranking' * 'low-price-raranking' * 'medium-price-reranking' * 'high-price-
4432
+ # reranking' If not specified, we choose default based on model type. Default
4433
+ # value: 'no-price-reranking'. Can only be set if solution_types is
4434
+ # SOLUTION_TYPE_RECOMMENDATION.
4435
+ # Corresponds to the JSON property `priceRerankingLevel`
4436
+ # @return [String]
4437
+ attr_accessor :price_reranking_level
4438
+
4439
+ # Condition redirect specifications. Only the first triggered redirect action is
4440
+ # applied, even if multiple apply. Maximum number of specifications is 100. Can
4441
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4442
+ # Corresponds to the JSON property `redirectControlIds`
4443
+ # @return [Array<String>]
4444
+ attr_accessor :redirect_control_ids
4445
+
4446
+ # Condition replacement specifications. - Applied according to the order in the
4447
+ # list. - A previously replaced term can not be re-replaced. - Maximum number of
4448
+ # specifications is 100. Can only be set if solution_types is
4449
+ # SOLUTION_TYPE_SEARCH.
4450
+ # Corresponds to the JSON property `replacementControlIds`
4451
+ # @return [Array<String>]
4452
+ attr_accessor :replacement_control_ids
4453
+
4454
+ # Required. Immutable. Specifies the solution types that a serving config can be
4455
+ # associated with. Currently we support setting only one type of solution.
4456
+ # Corresponds to the JSON property `solutionTypes`
4457
+ # @return [Array<String>]
4458
+ attr_accessor :solution_types
4459
+
4460
+ # Condition synonyms specifications. If multiple syonyms conditions match, all
4461
+ # matching synonyms control in the list will execute. Order of controls in the
4462
+ # list will not matter. Maximum number of specifications is 100. Can only be set
4463
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4464
+ # Corresponds to the JSON property `twowaySynonymsControlIds`
4465
+ # @return [Array<String>]
4466
+ attr_accessor :twoway_synonyms_control_ids
4467
+
4468
+ def initialize(**args)
4469
+ update!(**args)
4470
+ end
4471
+
4472
+ # Update properties of this object
4473
+ def update!(**args)
4474
+ @boost_control_ids = args[:boost_control_ids] if args.key?(:boost_control_ids)
4475
+ @display_name = args[:display_name] if args.key?(:display_name)
4476
+ @diversity_level = args[:diversity_level] if args.key?(:diversity_level)
4477
+ @do_not_associate_control_ids = args[:do_not_associate_control_ids] if args.key?(:do_not_associate_control_ids)
4478
+ @dynamic_facet_spec = args[:dynamic_facet_spec] if args.key?(:dynamic_facet_spec)
4479
+ @enable_category_filter_level = args[:enable_category_filter_level] if args.key?(:enable_category_filter_level)
4480
+ @facet_control_ids = args[:facet_control_ids] if args.key?(:facet_control_ids)
4481
+ @filter_control_ids = args[:filter_control_ids] if args.key?(:filter_control_ids)
4482
+ @ignore_control_ids = args[:ignore_control_ids] if args.key?(:ignore_control_ids)
4483
+ @model_id = args[:model_id] if args.key?(:model_id)
4484
+ @name = args[:name] if args.key?(:name)
4485
+ @oneway_synonyms_control_ids = args[:oneway_synonyms_control_ids] if args.key?(:oneway_synonyms_control_ids)
4486
+ @price_reranking_level = args[:price_reranking_level] if args.key?(:price_reranking_level)
4487
+ @redirect_control_ids = args[:redirect_control_ids] if args.key?(:redirect_control_ids)
4488
+ @replacement_control_ids = args[:replacement_control_ids] if args.key?(:replacement_control_ids)
4489
+ @solution_types = args[:solution_types] if args.key?(:solution_types)
4490
+ @twoway_synonyms_control_ids = args[:twoway_synonyms_control_ids] if args.key?(:twoway_synonyms_control_ids)
4491
+ end
4492
+ end
4493
+
3724
4494
  # Request message to set a specified branch as new default_branch.
3725
4495
  class GoogleCloudRetailV2alphaSetDefaultBranchRequest
3726
4496
  include Google::Apis::Core::Hashable
@@ -3825,76 +4595,6 @@ module Google
3825
4595
  end
3826
4596
  end
3827
4597
 
3828
- # Metadata related to the progress of the SetLocalInventories operation.
3829
- # Currently empty because there is no meaningful metadata populated from the
3830
- # SetLocalInventories method.
3831
- class GoogleCloudRetailV2alphaSetLocalInventoriesMetadata
3832
- include Google::Apis::Core::Hashable
3833
-
3834
- def initialize(**args)
3835
- update!(**args)
3836
- end
3837
-
3838
- # Update properties of this object
3839
- def update!(**args)
3840
- end
3841
- end
3842
-
3843
- # Request message for SetLocalInventories method.
3844
- class GoogleCloudRetailV2alphaSetLocalInventoriesRequest
3845
- include Google::Apis::Core::Hashable
3846
-
3847
- # If set to true, and the Product is not found, the local inventory will still
3848
- # be processed and retained for at most 1 day and processed once the Product is
3849
- # created. If set to false, a NOT_FOUND error is returned if the Product is not
3850
- # found.
3851
- # Corresponds to the JSON property `allowMissing`
3852
- # @return [Boolean]
3853
- attr_accessor :allow_missing
3854
- alias_method :allow_missing?, :allow_missing
3855
-
3856
- # A list of inventory information at difference places. Each place is identified
3857
- # by its place ID. For example, if `place1` and `place2` are stored, and this
3858
- # list is `[place1, place3]` with a fresher set timestamp, then the stored
3859
- # places will become `place1` and `place3`. An empty list removes all existing
3860
- # places with staler fields. At most 3000 inventories are allowed per request.
3861
- # Corresponds to the JSON property `localInventories`
3862
- # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaLocalInventory>]
3863
- attr_accessor :local_inventories
3864
-
3865
- # The time when the inventory updates are issued. Used to prevent out-of-order
3866
- # updates on local inventory fields. If not provided, the internal system time
3867
- # will be used.
3868
- # Corresponds to the JSON property `setTime`
3869
- # @return [String]
3870
- attr_accessor :set_time
3871
-
3872
- def initialize(**args)
3873
- update!(**args)
3874
- end
3875
-
3876
- # Update properties of this object
3877
- def update!(**args)
3878
- @allow_missing = args[:allow_missing] if args.key?(:allow_missing)
3879
- @local_inventories = args[:local_inventories] if args.key?(:local_inventories)
3880
- @set_time = args[:set_time] if args.key?(:set_time)
3881
- end
3882
- end
3883
-
3884
- # Response of the SetLocalInventories API. Currently empty because there is no
3885
- # meaningful response populated from the SetLocalInventories method.
3886
- class GoogleCloudRetailV2alphaSetLocalInventoriesResponse
3887
- include Google::Apis::Core::Hashable
3888
-
3889
- def initialize(**args)
3890
- update!(**args)
3891
- end
3892
-
3893
- # Update properties of this object
3894
- def update!(**args)
3895
- end
3896
- end
3897
-
3898
4598
  # UserEvent captures all metadata information Retail API needs to know about how
3899
4599
  # end users interact with customers' website.
3900
4600
  class GoogleCloudRetailV2alphaUserEvent
@@ -4021,12 +4721,12 @@ module Google
4021
4721
 
4022
4722
  # The main product details related to the event. This field is required for the
4023
4723
  # following event types: * `add-to-cart` * `detail-page-view` * `purchase-
4024
- # complete` In a `search` event, this field represents the products returned to
4025
- # the end user on the current page (the end user may have not finished browsing
4026
- # the whole page yet). When a new page is returned to the end user, after
4027
- # pagination/filtering/ordering even for the same query, a new `search` event
4028
- # with different product_details is desired. The end user may have not finished
4029
- # browsing the whole page yet.
4724
+ # complete` * `search` In a `search` event, this field represents the products
4725
+ # returned to the end user on the current page (the end user may have not
4726
+ # finished browsing the whole page yet). When a new page is returned to the end
4727
+ # user, after pagination/filtering/ordering even for the same query, a new `
4728
+ # search` event with different product_details is desired. The end user may have
4729
+ # not finished browsing the whole page yet.
4030
4730
  # Corresponds to the JSON property `productDetails`
4031
4731
  # @return [Array<Google::Apis::RetailV2alpha::GoogleCloudRetailV2alphaProductDetail>]
4032
4732
  attr_accessor :product_details