google-apis-retail_v2beta 0.23.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1090,35 +1090,6 @@ module Google
1090
1090
  end
1091
1091
  end
1092
1092
 
1093
- # Metadata related to the progress of the SetLocalInventories operation.
1094
- # Currently empty because there is no meaningful metadata populated from the
1095
- # SetLocalInventories method.
1096
- class GoogleCloudRetailV2alphaSetLocalInventoriesMetadata
1097
- include Google::Apis::Core::Hashable
1098
-
1099
- def initialize(**args)
1100
- update!(**args)
1101
- end
1102
-
1103
- # Update properties of this object
1104
- def update!(**args)
1105
- end
1106
- end
1107
-
1108
- # Response of the SetLocalInventories API. Currently empty because there is no
1109
- # meaningful response populated from the SetLocalInventories method.
1110
- class GoogleCloudRetailV2alphaSetLocalInventoriesResponse
1111
- include Google::Apis::Core::Hashable
1112
-
1113
- def initialize(**args)
1114
- update!(**args)
1115
- end
1116
-
1117
- # Update properties of this object
1118
- def update!(**args)
1119
- end
1120
- end
1121
-
1122
1093
  # A summary of import result. The UserEventImportSummary summarizes the import
1123
1094
  # status for user events.
1124
1095
  class GoogleCloudRetailV2alphaUserEventImportSummary
@@ -1146,6 +1117,26 @@ module Google
1146
1117
  end
1147
1118
  end
1148
1119
 
1120
+ # Request for AddControl method.
1121
+ class GoogleCloudRetailV2betaAddControlRequest
1122
+ include Google::Apis::Core::Hashable
1123
+
1124
+ # Required. The id of the control to apply. Assumed to be in the same catalog as
1125
+ # the serving config - if id is not found a NOT_FOUND error is returned.
1126
+ # Corresponds to the JSON property `controlId`
1127
+ # @return [String]
1128
+ attr_accessor :control_id
1129
+
1130
+ def initialize(**args)
1131
+ update!(**args)
1132
+ end
1133
+
1134
+ # Update properties of this object
1135
+ def update!(**args)
1136
+ @control_id = args[:control_id] if args.key?(:control_id)
1137
+ end
1138
+ end
1139
+
1149
1140
  # Metadata related to the progress of the AddFulfillmentPlaces operation.
1150
1141
  # Currently empty because there is no meaningful metadata populated from the
1151
1142
  # AddFulfillmentPlaces method.
@@ -1549,6 +1540,153 @@ module Google
1549
1540
  end
1550
1541
  end
1551
1542
 
1543
+ # Metadata that is used to define a condition that triggers an action. A valid
1544
+ # condition must specify at least one of 'query_terms' or 'products_filter'. If
1545
+ # multiple fields are specified, the condition is met if all the fields are
1546
+ # satisfied e.g. if a set of query terms and product_filter are set, then only
1547
+ # items matching the product_filter for requests with a query matching the query
1548
+ # terms wil get boosted.
1549
+ class GoogleCloudRetailV2betaCondition
1550
+ include Google::Apis::Core::Hashable
1551
+
1552
+ # Range of time(s) specifying when Condition is active. Condition true if any
1553
+ # time range matches.
1554
+ # Corresponds to the JSON property `activeTimeRange`
1555
+ # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaConditionTimeRange>]
1556
+ attr_accessor :active_time_range
1557
+
1558
+ # A list (up to 10 entries) of terms to match the query on. If not specified,
1559
+ # match all queries. If many query terms are specified, the condition is matched
1560
+ # if any of the terms is a match (i.e. using the OR operator).
1561
+ # Corresponds to the JSON property `queryTerms`
1562
+ # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaConditionQueryTerm>]
1563
+ attr_accessor :query_terms
1564
+
1565
+ def initialize(**args)
1566
+ update!(**args)
1567
+ end
1568
+
1569
+ # Update properties of this object
1570
+ def update!(**args)
1571
+ @active_time_range = args[:active_time_range] if args.key?(:active_time_range)
1572
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
1573
+ end
1574
+ end
1575
+
1576
+ # Query terms that we want to match on.
1577
+ class GoogleCloudRetailV2betaConditionQueryTerm
1578
+ include Google::Apis::Core::Hashable
1579
+
1580
+ # Whether this is supposed to be a full or partial match.
1581
+ # Corresponds to the JSON property `fullMatch`
1582
+ # @return [Boolean]
1583
+ attr_accessor :full_match
1584
+ alias_method :full_match?, :full_match
1585
+
1586
+ # The value of the term to match on. Value cannot be empty. Value can have at
1587
+ # most 3 terms if specified as a partial match. Each space separated string is
1588
+ # considered as one term. Example) "a b c" is 3 terms and allowed, " a b c d" is
1589
+ # 4 terms and not allowed for partial match.
1590
+ # Corresponds to the JSON property `value`
1591
+ # @return [String]
1592
+ attr_accessor :value
1593
+
1594
+ def initialize(**args)
1595
+ update!(**args)
1596
+ end
1597
+
1598
+ # Update properties of this object
1599
+ def update!(**args)
1600
+ @full_match = args[:full_match] if args.key?(:full_match)
1601
+ @value = args[:value] if args.key?(:value)
1602
+ end
1603
+ end
1604
+
1605
+ # Used for time-dependent conditions. Example: Want to have rule applied for
1606
+ # week long sale.
1607
+ class GoogleCloudRetailV2betaConditionTimeRange
1608
+ include Google::Apis::Core::Hashable
1609
+
1610
+ # End of time range. Range is inclusive.
1611
+ # Corresponds to the JSON property `endTime`
1612
+ # @return [String]
1613
+ attr_accessor :end_time
1614
+
1615
+ # Start of time range. Range is inclusive.
1616
+ # Corresponds to the JSON property `startTime`
1617
+ # @return [String]
1618
+ attr_accessor :start_time
1619
+
1620
+ def initialize(**args)
1621
+ update!(**args)
1622
+ end
1623
+
1624
+ # Update properties of this object
1625
+ def update!(**args)
1626
+ @end_time = args[:end_time] if args.key?(:end_time)
1627
+ @start_time = args[:start_time] if args.key?(:start_time)
1628
+ end
1629
+ end
1630
+
1631
+ # Configures dynamic serving time metadata that is used to pre and post process
1632
+ # search/recommendation model results.
1633
+ class GoogleCloudRetailV2betaControl
1634
+ include Google::Apis::Core::Hashable
1635
+
1636
+ # Output only. List of serving configuration ids that that are associated with
1637
+ # this control. Note the association is managed via the ServingConfig, this is
1638
+ # an output only denormalizeed view. Assumed to be in the same catalog.
1639
+ # Corresponds to the JSON property `associatedServingConfigIds`
1640
+ # @return [Array<String>]
1641
+ attr_accessor :associated_serving_config_ids
1642
+
1643
+ # Required. The human readable control display name. Used in Retail UI. This
1644
+ # field must be a UTF-8 encoded string with a length limit of 128 characters.
1645
+ # Otherwise, an INVALID_ARGUMENT error is thrown.
1646
+ # Corresponds to the JSON property `displayName`
1647
+ # @return [String]
1648
+ attr_accessor :display_name
1649
+
1650
+ # A facet specification to perform faceted search.
1651
+ # Corresponds to the JSON property `facetSpec`
1652
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaSearchRequestFacetSpec]
1653
+ attr_accessor :facet_spec
1654
+
1655
+ # Immutable. Fully qualified name projects/*/locations/global/catalogs/*/
1656
+ # controls/*
1657
+ # Corresponds to the JSON property `name`
1658
+ # @return [String]
1659
+ attr_accessor :name
1660
+
1661
+ # A rule is a condition-action pair * A condition defines when a rule is to be
1662
+ # triggered. * An action specifies what occurs on that trigger. Currently only
1663
+ # boost rules are supported. Currently only supported by the search endpoint.
1664
+ # Corresponds to the JSON property `rule`
1665
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRule]
1666
+ attr_accessor :rule
1667
+
1668
+ # Required. Immutable. The solution types that the serving config is used for.
1669
+ # Currently we support setting only one type of solution at creation time. Only `
1670
+ # SOLUTION_TYPE_SEARCH` value is supported at the moment.
1671
+ # Corresponds to the JSON property `solutionTypes`
1672
+ # @return [Array<String>]
1673
+ attr_accessor :solution_types
1674
+
1675
+ def initialize(**args)
1676
+ update!(**args)
1677
+ end
1678
+
1679
+ # Update properties of this object
1680
+ def update!(**args)
1681
+ @associated_serving_config_ids = args[:associated_serving_config_ids] if args.key?(:associated_serving_config_ids)
1682
+ @display_name = args[:display_name] if args.key?(:display_name)
1683
+ @facet_spec = args[:facet_spec] if args.key?(:facet_spec)
1684
+ @name = args[:name] if args.key?(:name)
1685
+ @rule = args[:rule] if args.key?(:rule)
1686
+ @solution_types = args[:solution_types] if args.key?(:solution_types)
1687
+ end
1688
+ end
1689
+
1552
1690
  # A custom attribute that is not explicitly modeled in Product.
1553
1691
  class GoogleCloudRetailV2betaCustomAttribute
1554
1692
  include Google::Apis::Core::Hashable
@@ -1746,6 +1884,9 @@ module Google
1746
1884
  # recommendations-ai/docs/upload-catalog#mc). Supported values for user events
1747
1885
  # imports: * `user_event` (default): One JSON UserEvent per line. * `
1748
1886
  # user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
1887
+ # Supported values for control imports: * 'control' (default): One JSON Control
1888
+ # per line. Supported values for catalog attribute imports: * 'catalog_attribute'
1889
+ # (default): One CSV CatalogAttribute per line.
1749
1890
  # Corresponds to the JSON property `dataSchema`
1750
1891
  # @return [String]
1751
1892
  attr_accessor :data_schema
@@ -2174,6 +2315,31 @@ module Google
2174
2315
  end
2175
2316
  end
2176
2317
 
2318
+ # Response for ListControls method.
2319
+ class GoogleCloudRetailV2betaListControlsResponse
2320
+ include Google::Apis::Core::Hashable
2321
+
2322
+ # All the Controls for a given catalog.
2323
+ # Corresponds to the JSON property `controls`
2324
+ # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaControl>]
2325
+ attr_accessor :controls
2326
+
2327
+ # Pagination token, if not returned indicates the last page.
2328
+ # Corresponds to the JSON property `nextPageToken`
2329
+ # @return [String]
2330
+ attr_accessor :next_page_token
2331
+
2332
+ def initialize(**args)
2333
+ update!(**args)
2334
+ end
2335
+
2336
+ # Update properties of this object
2337
+ def update!(**args)
2338
+ @controls = args[:controls] if args.key?(:controls)
2339
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2340
+ end
2341
+ end
2342
+
2177
2343
  # Response message for ProductService.ListProducts method.
2178
2344
  class GoogleCloudRetailV2betaListProductsResponse
2179
2345
  include Google::Apis::Core::Hashable
@@ -2200,6 +2366,31 @@ module Google
2200
2366
  end
2201
2367
  end
2202
2368
 
2369
+ # Response for ListServingConfigs method.
2370
+ class GoogleCloudRetailV2betaListServingConfigsResponse
2371
+ include Google::Apis::Core::Hashable
2372
+
2373
+ # Pagination token, if not returned indicates the last page.
2374
+ # Corresponds to the JSON property `nextPageToken`
2375
+ # @return [String]
2376
+ attr_accessor :next_page_token
2377
+
2378
+ # All the ServingConfigs for a given catalog.
2379
+ # Corresponds to the JSON property `servingConfigs`
2380
+ # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaServingConfig>]
2381
+ attr_accessor :serving_configs
2382
+
2383
+ def initialize(**args)
2384
+ update!(**args)
2385
+ end
2386
+
2387
+ # Update properties of this object
2388
+ def update!(**args)
2389
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2390
+ @serving_configs = args[:serving_configs] if args.key?(:serving_configs)
2391
+ end
2392
+ end
2393
+
2203
2394
  # Request message for Predict method.
2204
2395
  class GoogleCloudRetailV2betaPredictRequest
2205
2396
  include Google::Apis::Core::Hashable
@@ -2399,8 +2590,8 @@ module Google
2399
2590
  attr_accessor :original_price
2400
2591
 
2401
2592
  # Price of the product. Google Merchant Center property [price](https://support.
2402
- # google.com/merchants/answer/6324371). Schema.org property [Offer.
2403
- # priceSpecification](https://schema.org/priceSpecification).
2593
+ # google.com/merchants/answer/6324371). Schema.org property [Offer.price](https:/
2594
+ # /schema.org/price).
2404
2595
  # Corresponds to the JSON property `price`
2405
2596
  # @return [Float]
2406
2597
  attr_accessor :price
@@ -2548,7 +2739,9 @@ module Google
2548
2739
  # @return [Array<String>]
2549
2740
  attr_accessor :categories
2550
2741
 
2551
- # The id of the collection members when type is Type.COLLECTION. Should not set
2742
+ # The id of the collection members when type is Type.COLLECTION. Non-existent
2743
+ # product ids are allowed. The type of the members must be either Type.PRIMARY
2744
+ # or Type.VARIANT otherwise and INVALID_ARGUMENT error is thrown. Should not set
2552
2745
  # it for other types. A maximum of 1000 values are allowed. Otherwise, an
2553
2746
  # INVALID_ARGUMENT error is return.
2554
2747
  # Corresponds to the JSON property `collectionMemberIds`
@@ -2561,12 +2754,12 @@ module Google
2561
2754
  attr_accessor :color_info
2562
2755
 
2563
2756
  # The condition of the product. Strongly encouraged to use the standard values: "
2564
- # new", "refurbished", "used". A maximum of 5 values are allowed per Product.
2565
- # Each value must be a UTF-8 encoded string with a length limit of 128
2566
- # characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding
2567
- # properties: Google Merchant Center property [condition](https://support.google.
2568
- # com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https:
2569
- # //schema.org/itemCondition).
2757
+ # new", "refurbished", "used". A maximum of 1 value is allowed per Product. Each
2758
+ # value must be a UTF-8 encoded string with a length limit of 128 characters.
2759
+ # Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties:
2760
+ # Google Merchant Center property [condition](https://support.google.com/
2761
+ # merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://
2762
+ # schema.org/itemCondition).
2570
2763
  # Corresponds to the JSON property `conditions`
2571
2764
  # @return [Array<String>]
2572
2765
  attr_accessor :conditions
@@ -2687,7 +2880,8 @@ module Google
2687
2880
  attr_accessor :primary_product_id
2688
2881
 
2689
2882
  # The promotions applied to the product. A maximum of 10 values are allowed per
2690
- # Product.
2883
+ # Product. Only Promotion.promotion_id will be used, other fields will be
2884
+ # ignored if set.
2691
2885
  # Corresponds to the JSON property `promotions`
2692
2886
  # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaPromotion>]
2693
2887
  attr_accessor :promotions
@@ -2966,7 +3160,7 @@ module Google
2966
3160
  class GoogleCloudRetailV2betaPromotion
2967
3161
  include Google::Apis::Core::Hashable
2968
3162
 
2969
- # ID of the promotion. For example, "free gift". The value value must be a UTF-8
3163
+ # ID of the promotion. For example, "free gift". The value must be a UTF-8
2970
3164
  # encoded string with a length limit of 128 characters, and match the pattern: `
2971
3165
  # a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an
2972
3166
  # INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion]
@@ -3197,6 +3391,26 @@ module Google
3197
3391
  end
3198
3392
  end
3199
3393
 
3394
+ # Request for RemoveControl method.
3395
+ class GoogleCloudRetailV2betaRemoveControlRequest
3396
+ include Google::Apis::Core::Hashable
3397
+
3398
+ # Required. The id of the control to apply. Assumed to be in the same catalog as
3399
+ # the serving config.
3400
+ # Corresponds to the JSON property `controlId`
3401
+ # @return [String]
3402
+ attr_accessor :control_id
3403
+
3404
+ def initialize(**args)
3405
+ update!(**args)
3406
+ end
3407
+
3408
+ # Update properties of this object
3409
+ def update!(**args)
3410
+ @control_id = args[:control_id] if args.key?(:control_id)
3411
+ end
3412
+ end
3413
+
3200
3414
  # Metadata related to the progress of the RemoveFulfillmentPlaces operation.
3201
3415
  # Currently empty because there is no meaningful metadata populated from the
3202
3416
  # RemoveFulfillmentPlaces method.
@@ -3280,6 +3494,333 @@ module Google
3280
3494
  end
3281
3495
  end
3282
3496
 
3497
+ # A rule is a condition-action pair * A condition defines when a rule is to be
3498
+ # triggered. * An action specifies what occurs on that trigger. Currently only
3499
+ # boost rules are supported. Currently only supported by the search endpoint.
3500
+ class GoogleCloudRetailV2betaRule
3501
+ include Google::Apis::Core::Hashable
3502
+
3503
+ # A boost action to apply to results matching condition specified above.
3504
+ # Corresponds to the JSON property `boostAction`
3505
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleBoostAction]
3506
+ attr_accessor :boost_action
3507
+
3508
+ # Metadata that is used to define a condition that triggers an action. A valid
3509
+ # condition must specify at least one of 'query_terms' or 'products_filter'. If
3510
+ # multiple fields are specified, the condition is met if all the fields are
3511
+ # satisfied e.g. if a set of query terms and product_filter are set, then only
3512
+ # items matching the product_filter for requests with a query matching the query
3513
+ # terms wil get boosted.
3514
+ # Corresponds to the JSON property `condition`
3515
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaCondition]
3516
+ attr_accessor :condition
3517
+
3518
+ # Prevents `query_term` from being associated with specified terms during search.
3519
+ # Example: Don't associate "gShoe" and "cheap".
3520
+ # Corresponds to the JSON property `doNotAssociateAction`
3521
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleDoNotAssociateAction]
3522
+ attr_accessor :do_not_associate_action
3523
+
3524
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3525
+ # Condition provided is combined with OR operator. * Action Input: The request
3526
+ # query and filter that will be applied to the retrieved products, in addition
3527
+ # to any filters already provided with the SearchRequest. The AND operator is
3528
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3529
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3530
+ # returned objects to be ONLY those that passed the filter.
3531
+ # Corresponds to the JSON property `filterAction`
3532
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleFilterAction]
3533
+ attr_accessor :filter_action
3534
+
3535
+ # Prevents a term in the query from being used in search. Example: Don't search
3536
+ # for "shoddy".
3537
+ # Corresponds to the JSON property `ignoreAction`
3538
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleIgnoreAction]
3539
+ attr_accessor :ignore_action
3540
+
3541
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3542
+ # synonyms of each query term only. `query_terms` will not be treated as
3543
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3544
+ # shoes" will not use a synonym of "sneakers".
3545
+ # Corresponds to the JSON property `onewaySynonymsAction`
3546
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleOnewaySynonymsAction]
3547
+ attr_accessor :oneway_synonyms_action
3548
+
3549
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3550
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3551
+ # provided uri.
3552
+ # Corresponds to the JSON property `redirectAction`
3553
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleRedirectAction]
3554
+ attr_accessor :redirect_action
3555
+
3556
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3557
+ # All `query_terms` will be replaced with the replacement term. Example:
3558
+ # Replace "gShoe" with "google shoe".
3559
+ # Corresponds to the JSON property `replacementAction`
3560
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleReplacementAction]
3561
+ attr_accessor :replacement_action
3562
+
3563
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3564
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3565
+ # . * "shoes" will use a synonym of "sneakers".
3566
+ # Corresponds to the JSON property `twowaySynonymsAction`
3567
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaRuleTwowaySynonymsAction]
3568
+ attr_accessor :twoway_synonyms_action
3569
+
3570
+ def initialize(**args)
3571
+ update!(**args)
3572
+ end
3573
+
3574
+ # Update properties of this object
3575
+ def update!(**args)
3576
+ @boost_action = args[:boost_action] if args.key?(:boost_action)
3577
+ @condition = args[:condition] if args.key?(:condition)
3578
+ @do_not_associate_action = args[:do_not_associate_action] if args.key?(:do_not_associate_action)
3579
+ @filter_action = args[:filter_action] if args.key?(:filter_action)
3580
+ @ignore_action = args[:ignore_action] if args.key?(:ignore_action)
3581
+ @oneway_synonyms_action = args[:oneway_synonyms_action] if args.key?(:oneway_synonyms_action)
3582
+ @redirect_action = args[:redirect_action] if args.key?(:redirect_action)
3583
+ @replacement_action = args[:replacement_action] if args.key?(:replacement_action)
3584
+ @twoway_synonyms_action = args[:twoway_synonyms_action] if args.key?(:twoway_synonyms_action)
3585
+ end
3586
+ end
3587
+
3588
+ # A boost action to apply to results matching condition specified above.
3589
+ class GoogleCloudRetailV2betaRuleBoostAction
3590
+ include Google::Apis::Core::Hashable
3591
+
3592
+ # Strength of the condition boost, which must be in [-1, 1]. Negative boost
3593
+ # means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion.
3594
+ # However, it does not necessarily mean that the boosted item will be the top
3595
+ # result at all times, nor that other items will be excluded. Results could
3596
+ # still be shown even when none of them matches the condition. And results that
3597
+ # are significantly more relevant to the search query can still trump your
3598
+ # heavily favored but irrelevant items. Setting to -1.0 gives the item a big
3599
+ # demotion. However, results that are deeply relevant might still be shown. The
3600
+ # item will have an upstream battle to get a fairly high ranking, but it is not
3601
+ # blocked out completely. Setting to 0.0 means no boost applied. The boosting
3602
+ # condition is ignored.
3603
+ # Corresponds to the JSON property `boost`
3604
+ # @return [Float]
3605
+ attr_accessor :boost
3606
+
3607
+ # The filter can have a max size of 5000 characters. An expression which
3608
+ # specifies which products to apply an action to. The syntax and supported
3609
+ # fields are the same as a filter expression. See SearchRequest.filter for
3610
+ # detail syntax and limitations. Examples: * To boost products with product ID "
3611
+ # product_1" or "product_2", and color "Red" or "Blue": *(id: ANY("product_1", "
3612
+ # product_2")) * *AND * *(colorFamilies: ANY("Red", "Blue")) *
3613
+ # Corresponds to the JSON property `productsFilter`
3614
+ # @return [String]
3615
+ attr_accessor :products_filter
3616
+
3617
+ def initialize(**args)
3618
+ update!(**args)
3619
+ end
3620
+
3621
+ # Update properties of this object
3622
+ def update!(**args)
3623
+ @boost = args[:boost] if args.key?(:boost)
3624
+ @products_filter = args[:products_filter] if args.key?(:products_filter)
3625
+ end
3626
+ end
3627
+
3628
+ # Prevents `query_term` from being associated with specified terms during search.
3629
+ # Example: Don't associate "gShoe" and "cheap".
3630
+ class GoogleCloudRetailV2betaRuleDoNotAssociateAction
3631
+ include Google::Apis::Core::Hashable
3632
+
3633
+ # Cannot contain duplicates or the query term. Can specify up to 100 terms.
3634
+ # Corresponds to the JSON property `doNotAssociateTerms`
3635
+ # @return [Array<String>]
3636
+ attr_accessor :do_not_associate_terms
3637
+
3638
+ # Terms from the search query. Will not consider do_not_associate_terms for
3639
+ # search if in search query. Can specify up to 100 terms.
3640
+ # Corresponds to the JSON property `queryTerms`
3641
+ # @return [Array<String>]
3642
+ attr_accessor :query_terms
3643
+
3644
+ # Will be [deprecated = true] post migration;
3645
+ # Corresponds to the JSON property `terms`
3646
+ # @return [Array<String>]
3647
+ attr_accessor :terms
3648
+
3649
+ def initialize(**args)
3650
+ update!(**args)
3651
+ end
3652
+
3653
+ # Update properties of this object
3654
+ def update!(**args)
3655
+ @do_not_associate_terms = args[:do_not_associate_terms] if args.key?(:do_not_associate_terms)
3656
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3657
+ @terms = args[:terms] if args.key?(:terms)
3658
+ end
3659
+ end
3660
+
3661
+ # * Rule Condition: - No Condition provided is a global match. - 1 or more
3662
+ # Condition provided is combined with OR operator. * Action Input: The request
3663
+ # query and filter that will be applied to the retrieved products, in addition
3664
+ # to any filters already provided with the SearchRequest. The AND operator is
3665
+ # used to combine the query's existing filters with the filter rule(s). NOTE:
3666
+ # May result in 0 results when filters conflict. * Action Result: Filters the
3667
+ # returned objects to be ONLY those that passed the filter.
3668
+ class GoogleCloudRetailV2betaRuleFilterAction
3669
+ include Google::Apis::Core::Hashable
3670
+
3671
+ # A filter to apply on the matching condition results. Supported features: *
3672
+ # filter must be set. * Filter syntax is identical to SearchRequest.filter. See
3673
+ # more details at the Retail Search [user guide](/retail/search/docs/filter-and-
3674
+ # order#filter). * To filter products with product ID "product_1" or "product_2",
3675
+ # and color "Red" or "Blue": *(id: ANY("product_1", "product_2")) * *AND * *(
3676
+ # colorFamilies: ANY("Red", "Blue")) *
3677
+ # Corresponds to the JSON property `filter`
3678
+ # @return [String]
3679
+ attr_accessor :filter
3680
+
3681
+ def initialize(**args)
3682
+ update!(**args)
3683
+ end
3684
+
3685
+ # Update properties of this object
3686
+ def update!(**args)
3687
+ @filter = args[:filter] if args.key?(:filter)
3688
+ end
3689
+ end
3690
+
3691
+ # Prevents a term in the query from being used in search. Example: Don't search
3692
+ # for "shoddy".
3693
+ class GoogleCloudRetailV2betaRuleIgnoreAction
3694
+ include Google::Apis::Core::Hashable
3695
+
3696
+ # Terms to ignore in the search query.
3697
+ # Corresponds to the JSON property `ignoreTerms`
3698
+ # @return [Array<String>]
3699
+ attr_accessor :ignore_terms
3700
+
3701
+ def initialize(**args)
3702
+ update!(**args)
3703
+ end
3704
+
3705
+ # Update properties of this object
3706
+ def update!(**args)
3707
+ @ignore_terms = args[:ignore_terms] if args.key?(:ignore_terms)
3708
+ end
3709
+ end
3710
+
3711
+ # Maps a set of terms to a set of synonyms. Set of synonyms will be treated as
3712
+ # synonyms of each query term only. `query_terms` will not be treated as
3713
+ # synonyms of each other. Example: "sneakers" will use a synonym of "shoes". "
3714
+ # shoes" will not use a synonym of "sneakers".
3715
+ class GoogleCloudRetailV2betaRuleOnewaySynonymsAction
3716
+ include Google::Apis::Core::Hashable
3717
+
3718
+ # Will be [deprecated = true] post migration;
3719
+ # Corresponds to the JSON property `onewayTerms`
3720
+ # @return [Array<String>]
3721
+ attr_accessor :oneway_terms
3722
+
3723
+ # Terms from the search query. Will treat synonyms as their synonyms. Not
3724
+ # themselves synonyms of the synonyms. Can specify up to 100 terms.
3725
+ # Corresponds to the JSON property `queryTerms`
3726
+ # @return [Array<String>]
3727
+ attr_accessor :query_terms
3728
+
3729
+ # Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100
3730
+ # synonyms.
3731
+ # Corresponds to the JSON property `synonyms`
3732
+ # @return [Array<String>]
3733
+ attr_accessor :synonyms
3734
+
3735
+ def initialize(**args)
3736
+ update!(**args)
3737
+ end
3738
+
3739
+ # Update properties of this object
3740
+ def update!(**args)
3741
+ @oneway_terms = args[:oneway_terms] if args.key?(:oneway_terms)
3742
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3743
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3744
+ end
3745
+ end
3746
+
3747
+ # Redirects a shopper to a specific page. * Rule Condition: - Must specify
3748
+ # Condition. * Action Input: Request Query * Action Result: Redirects shopper to
3749
+ # provided uri.
3750
+ class GoogleCloudRetailV2betaRuleRedirectAction
3751
+ include Google::Apis::Core::Hashable
3752
+
3753
+ # URL must have length equal or less than 2000 characters.
3754
+ # Corresponds to the JSON property `redirectUri`
3755
+ # @return [String]
3756
+ attr_accessor :redirect_uri
3757
+
3758
+ def initialize(**args)
3759
+ update!(**args)
3760
+ end
3761
+
3762
+ # Update properties of this object
3763
+ def update!(**args)
3764
+ @redirect_uri = args[:redirect_uri] if args.key?(:redirect_uri)
3765
+ end
3766
+ end
3767
+
3768
+ # Replaces a term in the query. Multiple replacement candidates can be specified.
3769
+ # All `query_terms` will be replaced with the replacement term. Example:
3770
+ # Replace "gShoe" with "google shoe".
3771
+ class GoogleCloudRetailV2betaRuleReplacementAction
3772
+ include Google::Apis::Core::Hashable
3773
+
3774
+ # Terms from the search query. Will be replaced by replacement term. Can specify
3775
+ # up to 100 terms.
3776
+ # Corresponds to the JSON property `queryTerms`
3777
+ # @return [Array<String>]
3778
+ attr_accessor :query_terms
3779
+
3780
+ # Term that will be used for replacement.
3781
+ # Corresponds to the JSON property `replacementTerm`
3782
+ # @return [String]
3783
+ attr_accessor :replacement_term
3784
+
3785
+ # Will be [deprecated = true] post migration;
3786
+ # Corresponds to the JSON property `term`
3787
+ # @return [String]
3788
+ attr_accessor :term
3789
+
3790
+ def initialize(**args)
3791
+ update!(**args)
3792
+ end
3793
+
3794
+ # Update properties of this object
3795
+ def update!(**args)
3796
+ @query_terms = args[:query_terms] if args.key?(:query_terms)
3797
+ @replacement_term = args[:replacement_term] if args.key?(:replacement_term)
3798
+ @term = args[:term] if args.key?(:term)
3799
+ end
3800
+ end
3801
+
3802
+ # Creates a set of terms that will be treated as synonyms of each other. Example:
3803
+ # synonyms of "sneakers" and "shoes". * "sneakers" will use a synonym of "shoes"
3804
+ # . * "shoes" will use a synonym of "sneakers".
3805
+ class GoogleCloudRetailV2betaRuleTwowaySynonymsAction
3806
+ include Google::Apis::Core::Hashable
3807
+
3808
+ # Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at
3809
+ # least 2 synonyms.
3810
+ # Corresponds to the JSON property `synonyms`
3811
+ # @return [Array<String>]
3812
+ attr_accessor :synonyms
3813
+
3814
+ def initialize(**args)
3815
+ update!(**args)
3816
+ end
3817
+
3818
+ # Update properties of this object
3819
+ def update!(**args)
3820
+ @synonyms = args[:synonyms] if args.key?(:synonyms)
3821
+ end
3822
+ end
3823
+
3283
3824
  # Request message for SearchService.Search method.
3284
3825
  class GoogleCloudRetailV2betaSearchRequest
3285
3826
  include Google::Apis::Core::Hashable
@@ -3371,6 +3912,11 @@ module Google
3371
3912
  # @return [String]
3372
3913
  attr_accessor :page_token
3373
3914
 
3915
+ # The specification for personalization.
3916
+ # Corresponds to the JSON property `personalizationSpec`
3917
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaSearchRequestPersonalizationSpec]
3918
+ attr_accessor :personalization_spec
3919
+
3374
3920
  # Raw search query.
3375
3921
  # Corresponds to the JSON property `query`
3376
3922
  # @return [String]
@@ -3425,9 +3971,9 @@ module Google
3425
3971
  # Required. A unique identifier for tracking visitors. For example, this could
3426
3972
  # be implemented with an HTTP cookie, which should be able to uniquely identify
3427
3973
  # a visitor on a single device. This unique identifier should not change if the
3428
- # visitor logs in or out of the website. The field must be a UTF-8 encoded
3429
- # string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT
3430
- # error is returned.
3974
+ # visitor logs in or out of the website. This should be the same identifier as
3975
+ # UserEvent.visitor_id. The field must be a UTF-8 encoded string with a length
3976
+ # limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
3431
3977
  # Corresponds to the JSON property `visitorId`
3432
3978
  # @return [String]
3433
3979
  attr_accessor :visitor_id
@@ -3449,6 +3995,7 @@ module Google
3449
3995
  @page_categories = args[:page_categories] if args.key?(:page_categories)
3450
3996
  @page_size = args[:page_size] if args.key?(:page_size)
3451
3997
  @page_token = args[:page_token] if args.key?(:page_token)
3998
+ @personalization_spec = args[:personalization_spec] if args.key?(:personalization_spec)
3452
3999
  @query = args[:query] if args.key?(:query)
3453
4000
  @query_expansion_spec = args[:query_expansion_spec] if args.key?(:query_expansion_spec)
3454
4001
  @search_mode = args[:search_mode] if args.key?(:search_mode)
@@ -3698,6 +4245,25 @@ module Google
3698
4245
  end
3699
4246
  end
3700
4247
 
4248
+ # The specification for personalization.
4249
+ class GoogleCloudRetailV2betaSearchRequestPersonalizationSpec
4250
+ include Google::Apis::Core::Hashable
4251
+
4252
+ # Defaults to Mode.AUTO.
4253
+ # Corresponds to the JSON property `mode`
4254
+ # @return [String]
4255
+ attr_accessor :mode
4256
+
4257
+ def initialize(**args)
4258
+ update!(**args)
4259
+ end
4260
+
4261
+ # Update properties of this object
4262
+ def update!(**args)
4263
+ @mode = args[:mode] if args.key?(:mode)
4264
+ end
4265
+ end
4266
+
3701
4267
  # Specification to determine under which conditions query expansion should occur.
3702
4268
  class GoogleCloudRetailV2betaSearchRequestQueryExpansionSpec
3703
4269
  include Google::Apis::Core::Hashable
@@ -3954,6 +4520,183 @@ module Google
3954
4520
  end
3955
4521
  end
3956
4522
 
4523
+ # Configures metadata that is used to generate serving time results (e.g. search
4524
+ # results or recommendation predictions). The ServingConfig is passed in the
4525
+ # search and predict request and together with the Catalog.default_branch,
4526
+ # generates results.
4527
+ class GoogleCloudRetailV2betaServingConfig
4528
+ include Google::Apis::Core::Hashable
4529
+
4530
+ # Condition boost specifications. If a product matches multiple conditions in
4531
+ # the specifications, boost scores from these specifications are all applied and
4532
+ # combined in a non-linear way. Maximum number of specifications is 10. Notice
4533
+ # that if both ServingConfig.boost_control_ids and [SearchRequest.boost_spec]
4534
+ # are set, the boost conditions from both places are evaluated. If a search
4535
+ # request matches multiple boost conditions, the final boost score is equal to
4536
+ # the sum of the boost scores from all matched boost conditions. Can only be set
4537
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4538
+ # Corresponds to the JSON property `boostControlIds`
4539
+ # @return [Array<String>]
4540
+ attr_accessor :boost_control_ids
4541
+
4542
+ # Required. The human readable serving config display name. Used in Retail UI.
4543
+ # This field must be a UTF-8 encoded string with a length limit of 128
4544
+ # characters. Otherwise, an INVALID_ARGUMENT error is returned.
4545
+ # Corresponds to the JSON property `displayName`
4546
+ # @return [String]
4547
+ attr_accessor :display_name
4548
+
4549
+ # How much diversity to use in recommendation model results e.g. 'medium-
4550
+ # diversity' or 'high-diversity'. Currently supported values: * 'no-diversity' *
4551
+ # 'low-diversity' * 'medium-diversity' * 'high-diversity' * 'auto-diversity' If
4552
+ # not specified, we choose default based on recommendation model type. Default
4553
+ # value: 'no-diversity'. Can only be set if solution_types is
4554
+ # SOLUTION_TYPE_RECOMMENDATION.
4555
+ # Corresponds to the JSON property `diversityLevel`
4556
+ # @return [String]
4557
+ attr_accessor :diversity_level
4558
+
4559
+ # Condition do not associate specifications. If multiple do not associate
4560
+ # conditions match, all matching do not associate controls in the list will
4561
+ # execute. - Order does not matter. - Maximum number of specifications is 100.
4562
+ # Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4563
+ # Corresponds to the JSON property `doNotAssociateControlIds`
4564
+ # @return [Array<String>]
4565
+ attr_accessor :do_not_associate_control_ids
4566
+
4567
+ # The specifications of dynamically generated facets.
4568
+ # Corresponds to the JSON property `dynamicFacetSpec`
4569
+ # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaSearchRequestDynamicFacetSpec]
4570
+ attr_accessor :dynamic_facet_spec
4571
+
4572
+ # Whether to add additional category filters on the 'similar-items' model. If
4573
+ # not specified, we enable it by default. Allowed values are: * 'no-category-
4574
+ # match': No additional filtering of original results from the model and the
4575
+ # customer's filters. * 'relaxed-category-match': Only keep results with
4576
+ # categories that match at least one item categories in the PredictRequests's
4577
+ # context item. * If customer also sends filters in the PredictRequest, then the
4578
+ # results will satisfy both conditions (user given and category match). Can only
4579
+ # be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.
4580
+ # Corresponds to the JSON property `enableCategoryFilterLevel`
4581
+ # @return [String]
4582
+ attr_accessor :enable_category_filter_level
4583
+
4584
+ # Facet specifications for faceted search. If empty, no facets are returned. The
4585
+ # ids refer to the ids of Control resources with only the Facet control set.
4586
+ # These controls are assumed to be in the same Catalog as the ServingConfig. A
4587
+ # maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is
4588
+ # returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.
4589
+ # Corresponds to the JSON property `facetControlIds`
4590
+ # @return [Array<String>]
4591
+ attr_accessor :facet_control_ids
4592
+
4593
+ # Condition filter specifications. If a product matches multiple conditions in
4594
+ # the specifications, filters from these specifications are all applied and
4595
+ # combined via the AND operator. Maximum number of specifications is 100. Can
4596
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4597
+ # Corresponds to the JSON property `filterControlIds`
4598
+ # @return [Array<String>]
4599
+ attr_accessor :filter_control_ids
4600
+
4601
+ # Condition ignore specifications. If multiple ignore conditions match, all
4602
+ # matching ignore controls in the list will execute. - Order does not matter. -
4603
+ # Maximum number of specifications is 100. Can only be set if solution_types is
4604
+ # SOLUTION_TYPE_SEARCH.
4605
+ # Corresponds to the JSON property `ignoreControlIds`
4606
+ # @return [Array<String>]
4607
+ attr_accessor :ignore_control_ids
4608
+
4609
+ # The id of the model to use at serving time. Currently only
4610
+ # RecommendationModels are supported: https://cloud.google.com/retail/
4611
+ # recommendations-ai/docs/create-models Can be changed but only to a compatible
4612
+ # model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when
4613
+ # solution_types is SOLUTION_TYPE_RECOMMENDATION.
4614
+ # Corresponds to the JSON property `modelId`
4615
+ # @return [String]
4616
+ attr_accessor :model_id
4617
+
4618
+ # Immutable. Fully qualified name projects/*/locations/global/catalogs/*/
4619
+ # servingConfig/*
4620
+ # Corresponds to the JSON property `name`
4621
+ # @return [String]
4622
+ attr_accessor :name
4623
+
4624
+ # Condition oneway synonyms specifications. If multiple oneway synonyms
4625
+ # conditions match, all matching oneway synonyms controls in the list will
4626
+ # execute. Order of controls in the list will not matter. Maximum number of
4627
+ # specifications is 100. Can only be set if solution_types is
4628
+ # SOLUTION_TYPE_SEARCH.
4629
+ # Corresponds to the JSON property `onewaySynonymsControlIds`
4630
+ # @return [Array<String>]
4631
+ attr_accessor :oneway_synonyms_control_ids
4632
+
4633
+ # How much price ranking we want in serving results. Price reranking causes
4634
+ # product items with a similar recommendation probability to be ordered by price,
4635
+ # with the highest-priced items first. This setting could result in a decrease
4636
+ # in click-through and conversion rates. Allowed values are: * 'no-price-
4637
+ # reranking' * 'low-price-raranking' * 'medium-price-reranking' * 'high-price-
4638
+ # reranking' If not specified, we choose default based on model type. Default
4639
+ # value: 'no-price-reranking'. Can only be set if solution_types is
4640
+ # SOLUTION_TYPE_RECOMMENDATION.
4641
+ # Corresponds to the JSON property `priceRerankingLevel`
4642
+ # @return [String]
4643
+ attr_accessor :price_reranking_level
4644
+
4645
+ # Condition redirect specifications. Only the first triggered redirect action is
4646
+ # applied, even if multiple apply. Maximum number of specifications is 100. Can
4647
+ # only be set if solution_types is SOLUTION_TYPE_SEARCH.
4648
+ # Corresponds to the JSON property `redirectControlIds`
4649
+ # @return [Array<String>]
4650
+ attr_accessor :redirect_control_ids
4651
+
4652
+ # Condition replacement specifications. - Applied according to the order in the
4653
+ # list. - A previously replaced term can not be re-replaced. - Maximum number of
4654
+ # specifications is 100. Can only be set if solution_types is
4655
+ # SOLUTION_TYPE_SEARCH.
4656
+ # Corresponds to the JSON property `replacementControlIds`
4657
+ # @return [Array<String>]
4658
+ attr_accessor :replacement_control_ids
4659
+
4660
+ # Required. Immutable. Specifies the solution types that a serving config can be
4661
+ # associated with. Currently we support setting only one type of solution.
4662
+ # Corresponds to the JSON property `solutionTypes`
4663
+ # @return [Array<String>]
4664
+ attr_accessor :solution_types
4665
+
4666
+ # Condition synonyms specifications. If multiple syonyms conditions match, all
4667
+ # matching synonyms control in the list will execute. Order of controls in the
4668
+ # list will not matter. Maximum number of specifications is 100. Can only be set
4669
+ # if solution_types is SOLUTION_TYPE_SEARCH.
4670
+ # Corresponds to the JSON property `twowaySynonymsControlIds`
4671
+ # @return [Array<String>]
4672
+ attr_accessor :twoway_synonyms_control_ids
4673
+
4674
+ def initialize(**args)
4675
+ update!(**args)
4676
+ end
4677
+
4678
+ # Update properties of this object
4679
+ def update!(**args)
4680
+ @boost_control_ids = args[:boost_control_ids] if args.key?(:boost_control_ids)
4681
+ @display_name = args[:display_name] if args.key?(:display_name)
4682
+ @diversity_level = args[:diversity_level] if args.key?(:diversity_level)
4683
+ @do_not_associate_control_ids = args[:do_not_associate_control_ids] if args.key?(:do_not_associate_control_ids)
4684
+ @dynamic_facet_spec = args[:dynamic_facet_spec] if args.key?(:dynamic_facet_spec)
4685
+ @enable_category_filter_level = args[:enable_category_filter_level] if args.key?(:enable_category_filter_level)
4686
+ @facet_control_ids = args[:facet_control_ids] if args.key?(:facet_control_ids)
4687
+ @filter_control_ids = args[:filter_control_ids] if args.key?(:filter_control_ids)
4688
+ @ignore_control_ids = args[:ignore_control_ids] if args.key?(:ignore_control_ids)
4689
+ @model_id = args[:model_id] if args.key?(:model_id)
4690
+ @name = args[:name] if args.key?(:name)
4691
+ @oneway_synonyms_control_ids = args[:oneway_synonyms_control_ids] if args.key?(:oneway_synonyms_control_ids)
4692
+ @price_reranking_level = args[:price_reranking_level] if args.key?(:price_reranking_level)
4693
+ @redirect_control_ids = args[:redirect_control_ids] if args.key?(:redirect_control_ids)
4694
+ @replacement_control_ids = args[:replacement_control_ids] if args.key?(:replacement_control_ids)
4695
+ @solution_types = args[:solution_types] if args.key?(:solution_types)
4696
+ @twoway_synonyms_control_ids = args[:twoway_synonyms_control_ids] if args.key?(:twoway_synonyms_control_ids)
4697
+ end
4698
+ end
4699
+
3957
4700
  # Request message to set a specified branch as new default_branch.
3958
4701
  class GoogleCloudRetailV2betaSetDefaultBranchRequest
3959
4702
  include Google::Apis::Core::Hashable
@@ -4017,10 +4760,9 @@ module Google
4017
4760
  # @return [Google::Apis::RetailV2beta::GoogleCloudRetailV2betaProduct]
4018
4761
  attr_accessor :inventory
4019
4762
 
4020
- # Indicates which inventory fields in the provided Product to update. If not set
4021
- # or set with empty paths, all inventory fields will be updated. If an
4022
- # unsupported or unknown field is provided, an INVALID_ARGUMENT error is
4023
- # returned and the entire update will be ignored.
4763
+ # Indicates which inventory fields in the provided Product to update. At least
4764
+ # one field must be provided. If an unsupported or unknown field is provided, an
4765
+ # INVALID_ARGUMENT error is returned and the entire update will be ignored.
4024
4766
  # Corresponds to the JSON property `setMask`
4025
4767
  # @return [String]
4026
4768
  attr_accessor :set_mask
@@ -4185,12 +4927,12 @@ module Google
4185
4927
 
4186
4928
  # The main product details related to the event. This field is required for the
4187
4929
  # following event types: * `add-to-cart` * `detail-page-view` * `purchase-
4188
- # complete` In a `search` event, this field represents the products returned to
4189
- # the end user on the current page (the end user may have not finished browsing
4190
- # the whole page yet). When a new page is returned to the end user, after
4191
- # pagination/filtering/ordering even for the same query, a new `search` event
4192
- # with different product_details is desired. The end user may have not finished
4193
- # browsing the whole page yet.
4930
+ # complete` * `search` In a `search` event, this field represents the products
4931
+ # returned to the end user on the current page (the end user may have not
4932
+ # finished browsing the whole page yet). When a new page is returned to the end
4933
+ # user, after pagination/filtering/ordering even for the same query, a new `
4934
+ # search` event with different product_details is desired. The end user may have
4935
+ # not finished browsing the whole page yet.
4194
4936
  # Corresponds to the JSON property `productDetails`
4195
4937
  # @return [Array<Google::Apis::RetailV2beta::GoogleCloudRetailV2betaProductDetail>]
4196
4938
  attr_accessor :product_details