Skip to content

Commit 1e105e2

Browse files
committed
additionalData for interactions, returnAbGroup for recommendation endpoints
1 parent 727bd11 commit 1e105e2

16 files changed

+69
-27
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Or install it yourself as:
2929
require 'recombee_api_client'
3030
include RecombeeApiClient
3131

32-
client = RecombeeClient('--my-database-id--', '--my-secret-token--')
32+
client = RecombeeClient('--my-database-id--', '--db-private-token--')
3333

3434
# Generate some random purchases of items by users
3535
NUM = 100
@@ -71,7 +71,7 @@ include RecombeeApiClient
7171
NUM = 100
7272
PROBABILITY_PURCHASED = 0.1
7373

74-
client = RecombeeClient('--my-database-id--', '--my-secret-token--')
74+
client = RecombeeClient('--my-database-id--', '--db-private-token--')
7575
client.send(ResetDatabase.new) # Clear everything from the database
7676

7777
# We will use computers as items in this example

lib/recombee_api_client.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class RecombeeClient
1818
include HTTParty
1919

2020
BATCH_MAX_SIZE = 10000
21-
USER_AGENT = {'User-Agent' => 'recombee-ruby-api-client/2.2.0'}
21+
USER_AGENT = {'User-Agent' => 'recombee-ruby-api-client/2.3.0'}
2222

2323
##
2424
# - +account+ -> Name of your account at Recombee

lib/recombee_api_client/api/add_bookmark.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module RecombeeApiClient
1010
#Adds a bookmark of a given item made by a given user.
1111
#
1212
class AddBookmark < ApiRequest
13-
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :recomm_id
13+
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :recomm_id, :additional_data
1414
attr_accessor :timeout
1515
attr_accessor :ensure_https
1616

@@ -23,6 +23,7 @@ class AddBookmark < ApiRequest
2323
# - +timestamp+ -> UTC timestamp of the bookmark as ISO8601-1 pattern or UTC epoch time. The default value is the current time.
2424
# - +cascadeCreate+ -> Sets whether the given user/item should be created if not present in the database.
2525
# - +recommId+ -> If this bookmark is based on a recommendation request, `recommId` is the id of the clicked recommendation.
26+
# - +additionalData+ -> A dictionary of additional data for the interaction.
2627
#
2728
def initialize(user_id, item_id, optional = {})
2829
@user_id = user_id
@@ -31,11 +32,12 @@ def initialize(user_id, item_id, optional = {})
3132
@timestamp = optional['timestamp']
3233
@cascade_create = optional['cascadeCreate']
3334
@recomm_id = optional['recommId']
35+
@additional_data = optional['additionalData']
3436
@optional = optional
3537
@timeout = 1000
3638
@ensure_https = false
3739
@optional.each do |par, _|
38-
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","recommId"].include? par
40+
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","recommId","additionalData"].include? par
3941
end
4042
end
4143

@@ -52,6 +54,7 @@ def body_parameters
5254
p['timestamp'] = @optional['timestamp'] if @optional.include? 'timestamp'
5355
p['cascadeCreate'] = @optional['cascadeCreate'] if @optional.include? 'cascadeCreate'
5456
p['recommId'] = @optional['recommId'] if @optional.include? 'recommId'
57+
p['additionalData'] = @optional['additionalData'] if @optional.include? 'additionalData'
5558
p
5659
end
5760

lib/recombee_api_client/api/add_cart_addition.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module RecombeeApiClient
1010
#Adds a cart addition of a given item made by a given user.
1111
#
1212
class AddCartAddition < ApiRequest
13-
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :amount, :price, :recomm_id
13+
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :amount, :price, :recomm_id, :additional_data
1414
attr_accessor :timeout
1515
attr_accessor :ensure_https
1616

@@ -25,6 +25,7 @@ class AddCartAddition < ApiRequest
2525
# - +amount+ -> Amount (number) added to cart. The default is 1. For example if `user-x` adds two `item-y` during a single order (session...), the `amount` should equal to 2.
2626
# - +price+ -> Price of the added item. If `amount` is greater than 1, sum of prices of all the items should be given.
2727
# - +recommId+ -> If this cart addition is based on a recommendation request, `recommId` is the id of the clicked recommendation.
28+
# - +additionalData+ -> A dictionary of additional data for the interaction.
2829
#
2930
def initialize(user_id, item_id, optional = {})
3031
@user_id = user_id
@@ -35,11 +36,12 @@ def initialize(user_id, item_id, optional = {})
3536
@amount = optional['amount']
3637
@price = optional['price']
3738
@recomm_id = optional['recommId']
39+
@additional_data = optional['additionalData']
3840
@optional = optional
3941
@timeout = 1000
4042
@ensure_https = false
4143
@optional.each do |par, _|
42-
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","amount","price","recommId"].include? par
44+
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","amount","price","recommId","additionalData"].include? par
4345
end
4446
end
4547

@@ -58,6 +60,7 @@ def body_parameters
5860
p['amount'] = @optional['amount'] if @optional.include? 'amount'
5961
p['price'] = @optional['price'] if @optional.include? 'price'
6062
p['recommId'] = @optional['recommId'] if @optional.include? 'recommId'
63+
p['additionalData'] = @optional['additionalData'] if @optional.include? 'additionalData'
6164
p
6265
end
6366

lib/recombee_api_client/api/add_detail_view.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module RecombeeApiClient
1010
#Adds a detail view of a given item made by a given user.
1111
#
1212
class AddDetailView < ApiRequest
13-
attr_reader :user_id, :item_id, :timestamp, :duration, :cascade_create, :recomm_id
13+
attr_reader :user_id, :item_id, :timestamp, :duration, :cascade_create, :recomm_id, :additional_data
1414
attr_accessor :timeout
1515
attr_accessor :ensure_https
1616

@@ -24,6 +24,7 @@ class AddDetailView < ApiRequest
2424
# - +duration+ -> Duration of the view
2525
# - +cascadeCreate+ -> Sets whether the given user/item should be created if not present in the database.
2626
# - +recommId+ -> If this detail view is based on a recommendation request, `recommId` is the id of the clicked recommendation.
27+
# - +additionalData+ -> A dictionary of additional data for the interaction.
2728
#
2829
def initialize(user_id, item_id, optional = {})
2930
@user_id = user_id
@@ -33,11 +34,12 @@ def initialize(user_id, item_id, optional = {})
3334
@duration = optional['duration']
3435
@cascade_create = optional['cascadeCreate']
3536
@recomm_id = optional['recommId']
37+
@additional_data = optional['additionalData']
3638
@optional = optional
3739
@timeout = 1000
3840
@ensure_https = false
3941
@optional.each do |par, _|
40-
fail UnknownOptionalParameter.new(par) unless ["timestamp","duration","cascadeCreate","recommId"].include? par
42+
fail UnknownOptionalParameter.new(par) unless ["timestamp","duration","cascadeCreate","recommId","additionalData"].include? par
4143
end
4244
end
4345

@@ -55,6 +57,7 @@ def body_parameters
5557
p['duration'] = @optional['duration'] if @optional.include? 'duration'
5658
p['cascadeCreate'] = @optional['cascadeCreate'] if @optional.include? 'cascadeCreate'
5759
p['recommId'] = @optional['recommId'] if @optional.include? 'recommId'
60+
p['additionalData'] = @optional['additionalData'] if @optional.include? 'additionalData'
5861
p
5962
end
6063

lib/recombee_api_client/api/add_purchase.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module RecombeeApiClient
1010
#Adds a purchase of a given item made by a given user.
1111
#
1212
class AddPurchase < ApiRequest
13-
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :amount, :price, :profit, :recomm_id
13+
attr_reader :user_id, :item_id, :timestamp, :cascade_create, :amount, :price, :profit, :recomm_id, :additional_data
1414
attr_accessor :timeout
1515
attr_accessor :ensure_https
1616

@@ -26,6 +26,7 @@ class AddPurchase < ApiRequest
2626
# - +price+ -> Price paid by the user for the item. If `amount` is greater than 1, sum of prices of all the items should be given.
2727
# - +profit+ -> Your profit from the purchased item. The profit is natural in e-commerce domain (for example if `user-x` purchases `item-y` for $100 and the gross margin is 30 %, then the profit is $30), but is applicable also in other domains (for example at a news company it may be income from displayed advertisement on article page). If `amount` is greater than 1, sum of profit of all the items should be given.
2828
# - +recommId+ -> If this purchase is based on a recommendation request, `recommId` is the id of the clicked recommendation.
29+
# - +additionalData+ -> A dictionary of additional data for the interaction.
2930
#
3031
def initialize(user_id, item_id, optional = {})
3132
@user_id = user_id
@@ -37,11 +38,12 @@ def initialize(user_id, item_id, optional = {})
3738
@price = optional['price']
3839
@profit = optional['profit']
3940
@recomm_id = optional['recommId']
41+
@additional_data = optional['additionalData']
4042
@optional = optional
4143
@timeout = 1000
4244
@ensure_https = false
4345
@optional.each do |par, _|
44-
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","amount","price","profit","recommId"].include? par
46+
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","amount","price","profit","recommId","additionalData"].include? par
4547
end
4648
end
4749

@@ -61,6 +63,7 @@ def body_parameters
6163
p['price'] = @optional['price'] if @optional.include? 'price'
6264
p['profit'] = @optional['profit'] if @optional.include? 'profit'
6365
p['recommId'] = @optional['recommId'] if @optional.include? 'recommId'
66+
p['additionalData'] = @optional['additionalData'] if @optional.include? 'additionalData'
6467
p
6568
end
6669

lib/recombee_api_client/api/add_rating.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module RecombeeApiClient
1010
#Adds a rating of given item made by a given user.
1111
#
1212
class AddRating < ApiRequest
13-
attr_reader :user_id, :item_id, :timestamp, :rating, :cascade_create, :recomm_id
13+
attr_reader :user_id, :item_id, :timestamp, :rating, :cascade_create, :recomm_id, :additional_data
1414
attr_accessor :timeout
1515
attr_accessor :ensure_https
1616

@@ -24,6 +24,7 @@ class AddRating < ApiRequest
2424
# - +timestamp+ -> UTC timestamp of the rating as ISO8601-1 pattern or UTC epoch time. The default value is the current time.
2525
# - +cascadeCreate+ -> Sets whether the given user/item should be created if not present in the database.
2626
# - +recommId+ -> If this rating is based on a recommendation request, `recommId` is the id of the clicked recommendation.
27+
# - +additionalData+ -> A dictionary of additional data for the interaction.
2728
#
2829
def initialize(user_id, item_id, rating, optional = {})
2930
@user_id = user_id
@@ -33,11 +34,12 @@ def initialize(user_id, item_id, rating, optional = {})
3334
@timestamp = optional['timestamp']
3435
@cascade_create = optional['cascadeCreate']
3536
@recomm_id = optional['recommId']
37+
@additional_data = optional['additionalData']
3638
@optional = optional
3739
@timeout = 1000
3840
@ensure_https = false
3941
@optional.each do |par, _|
40-
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","recommId"].include? par
42+
fail UnknownOptionalParameter.new(par) unless ["timestamp","cascadeCreate","recommId","additionalData"].include? par
4143
end
4244
end
4345

@@ -55,6 +57,7 @@ def body_parameters
5557
p['timestamp'] = @optional['timestamp'] if @optional.include? 'timestamp'
5658
p['cascadeCreate'] = @optional['cascadeCreate'] if @optional.include? 'cascadeCreate'
5759
p['recommId'] = @optional['recommId'] if @optional.include? 'recommId'
60+
p['additionalData'] = @optional['additionalData'] if @optional.include? 'additionalData'
5861
p
5962
end
6063

lib/recombee_api_client/api/recommend_items_to_item.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ module RecombeeApiClient
1111
#
1212
#It is also possible to use POST HTTP method (for example in case of very long ReQL filter) - query parameters then become body parameters.
1313
#
14+
#The returned items are sorted by relevancy (first item being the most relevant).
15+
#
1416
class RecommendItemsToItem < ApiRequest
15-
attr_reader :item_id, :target_user_id, :count, :user_impact, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :min_relevance, :rotation_rate, :rotation_time, :expert_settings
17+
attr_reader :item_id, :target_user_id, :count, :user_impact, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :min_relevance, :rotation_rate, :rotation_time, :expert_settings, :return_ab_group
1618
attr_accessor :timeout
1719
attr_accessor :ensure_https
1820

@@ -112,6 +114,8 @@ class RecommendItemsToItem < ApiRequest
112114
#
113115
# - +expertSettings+ -> Dictionary of custom options.
114116
#
117+
# - +returnAbGroup+ -> If there is a custom AB-testing running, return name of group to which the request belongs.
118+
#
115119
#
116120
def initialize(item_id, target_user_id, count, optional = {})
117121
@item_id = item_id
@@ -130,11 +134,12 @@ def initialize(item_id, target_user_id, count, optional = {})
130134
@rotation_rate = optional['rotationRate']
131135
@rotation_time = optional['rotationTime']
132136
@expert_settings = optional['expertSettings']
137+
@return_ab_group = optional['returnAbGroup']
133138
@optional = optional
134139
@timeout = 3000
135140
@ensure_https = false
136141
@optional.each do |par, _|
137-
fail UnknownOptionalParameter.new(par) unless ["userImpact","filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","minRelevance","rotationRate","rotationTime","expertSettings"].include? par
142+
fail UnknownOptionalParameter.new(par) unless ["userImpact","filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","minRelevance","rotationRate","rotationTime","expertSettings","returnAbGroup"].include? par
138143
end
139144
end
140145

@@ -160,6 +165,7 @@ def body_parameters
160165
p['rotationRate'] = @optional['rotationRate'] if @optional.include? 'rotationRate'
161166
p['rotationTime'] = @optional['rotationTime'] if @optional.include? 'rotationTime'
162167
p['expertSettings'] = @optional['expertSettings'] if @optional.include? 'expertSettings'
168+
p['returnAbGroup'] = @optional['returnAbGroup'] if @optional.include? 'returnAbGroup'
163169
p
164170
end
165171

lib/recombee_api_client/api/recommend_items_to_user.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ module RecombeeApiClient
1111
#
1212
#It is also possible to use POST HTTP method (for example in case of very long ReQL filter) - query parameters then become body parameters.
1313
#
14+
#The returned items are sorted by relevancy (first item being the most relevant).
15+
#
1416
class RecommendItemsToUser < ApiRequest
15-
attr_reader :user_id, :count, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :min_relevance, :rotation_rate, :rotation_time, :expert_settings
17+
attr_reader :user_id, :count, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :min_relevance, :rotation_rate, :rotation_time, :expert_settings, :return_ab_group
1618
attr_accessor :timeout
1719
attr_accessor :ensure_https
1820

@@ -92,6 +94,8 @@ class RecommendItemsToUser < ApiRequest
9294
#
9395
# - +expertSettings+ -> Dictionary of custom options.
9496
#
97+
# - +returnAbGroup+ -> If there is a custom AB-testing running, return name of group to which the request belongs.
98+
#
9599
#
96100
def initialize(user_id, count, optional = {})
97101
@user_id = user_id
@@ -108,11 +112,12 @@ def initialize(user_id, count, optional = {})
108112
@rotation_rate = optional['rotationRate']
109113
@rotation_time = optional['rotationTime']
110114
@expert_settings = optional['expertSettings']
115+
@return_ab_group = optional['returnAbGroup']
111116
@optional = optional
112117
@timeout = 3000
113118
@ensure_https = false
114119
@optional.each do |par, _|
115-
fail UnknownOptionalParameter.new(par) unless ["filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","minRelevance","rotationRate","rotationTime","expertSettings"].include? par
120+
fail UnknownOptionalParameter.new(par) unless ["filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","minRelevance","rotationRate","rotationTime","expertSettings","returnAbGroup"].include? par
116121
end
117122
end
118123

@@ -136,6 +141,7 @@ def body_parameters
136141
p['rotationRate'] = @optional['rotationRate'] if @optional.include? 'rotationRate'
137142
p['rotationTime'] = @optional['rotationTime'] if @optional.include? 'rotationTime'
138143
p['expertSettings'] = @optional['expertSettings'] if @optional.include? 'expertSettings'
144+
p['returnAbGroup'] = @optional['returnAbGroup'] if @optional.include? 'returnAbGroup'
139145
p
140146
end
141147

lib/recombee_api_client/api/recommend_users_to_item.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ module RecombeeApiClient
1111
#
1212
#It is also possible to use POST HTTP method (for example in case of very long ReQL filter) - query parameters then become body parameters.
1313
#
14+
#The returned users are sorted by predicted interest in the item (first user being the most interested).
15+
#
1416
class RecommendUsersToItem < ApiRequest
15-
attr_reader :item_id, :count, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :expert_settings
17+
attr_reader :item_id, :count, :filter, :booster, :cascade_create, :scenario, :return_properties, :included_properties, :diversity, :expert_settings, :return_ab_group
1618
attr_accessor :timeout
1719
attr_accessor :ensure_https
1820

@@ -80,6 +82,8 @@ class RecommendUsersToItem < ApiRequest
8082
#
8183
# - +expertSettings+ -> Dictionary of custom options.
8284
#
85+
# - +returnAbGroup+ -> If there is a custom AB-testing running, return name of group to which the request belongs.
86+
#
8387
#
8488
def initialize(item_id, count, optional = {})
8589
@item_id = item_id
@@ -93,11 +97,12 @@ def initialize(item_id, count, optional = {})
9397
@included_properties = optional['includedProperties']
9498
@diversity = optional['diversity']
9599
@expert_settings = optional['expertSettings']
100+
@return_ab_group = optional['returnAbGroup']
96101
@optional = optional
97102
@timeout = 50000
98103
@ensure_https = false
99104
@optional.each do |par, _|
100-
fail UnknownOptionalParameter.new(par) unless ["filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","expertSettings"].include? par
105+
fail UnknownOptionalParameter.new(par) unless ["filter","booster","cascadeCreate","scenario","returnProperties","includedProperties","diversity","expertSettings","returnAbGroup"].include? par
101106
end
102107
end
103108

@@ -118,6 +123,7 @@ def body_parameters
118123
p['includedProperties'] = @optional['includedProperties'] if @optional.include? 'includedProperties'
119124
p['diversity'] = @optional['diversity'] if @optional.include? 'diversity'
120125
p['expertSettings'] = @optional['expertSettings'] if @optional.include? 'expertSettings'
126+
p['returnAbGroup'] = @optional['returnAbGroup'] if @optional.include? 'returnAbGroup'
121127
p
122128
end
123129

0 commit comments

Comments
 (0)