recombee-api-client 6.0.0__tar.gz → 6.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/PKG-INFO +1 -1
  2. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_client.py +1 -1
  3. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/__init__.py +3 -0
  4. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/composite_recommendation.py +8 -1
  5. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_item.py +67 -0
  6. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_item_segment.py +67 -0
  7. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_user.py +67 -0
  8. recombee_api_client-6.2.0/recombee_api_client/api_requests/recommend_next_item_segments.py +64 -0
  9. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/search_item_segments.py +67 -0
  10. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/PKG-INFO +1 -1
  11. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/SOURCES.txt +1 -0
  12. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/setup.py +1 -1
  13. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/tests/test.py +9 -0
  14. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/LICENSE +0 -0
  15. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/README.rst +0 -0
  16. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/__init__.py +0 -0
  17. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_bookmark.py +0 -0
  18. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_cart_addition.py +0 -0
  19. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_detail_view.py +0 -0
  20. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_item.py +0 -0
  21. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_item_property.py +0 -0
  22. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_manual_reql_segment.py +0 -0
  23. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_purchase.py +0 -0
  24. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_rating.py +0 -0
  25. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_search_synonym.py +0 -0
  26. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_series.py +0 -0
  27. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_user.py +0 -0
  28. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_user_property.py +0 -0
  29. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/batch.py +0 -0
  30. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_auto_reql_segmentation.py +0 -0
  31. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_manual_reql_segmentation.py +0 -0
  32. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_property_based_segmentation.py +0 -0
  33. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_all_search_synonyms.py +0 -0
  34. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_bookmark.py +0 -0
  35. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_cart_addition.py +0 -0
  36. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_detail_view.py +0 -0
  37. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_item.py +0 -0
  38. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_item_property.py +0 -0
  39. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_manual_reql_segment.py +0 -0
  40. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_more_items.py +0 -0
  41. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_purchase.py +0 -0
  42. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_rating.py +0 -0
  43. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_search_synonym.py +0 -0
  44. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_segmentation.py +0 -0
  45. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_series.py +0 -0
  46. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_user.py +0 -0
  47. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_user_property.py +0 -0
  48. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_view_portion.py +0 -0
  49. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_item_property_info.py +0 -0
  50. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_item_values.py +0 -0
  51. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_segmentation.py +0 -0
  52. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_user_property_info.py +0 -0
  53. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_user_values.py +0 -0
  54. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/insert_to_series.py +0 -0
  55. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_bookmarks.py +0 -0
  56. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_cart_additions.py +0 -0
  57. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_detail_views.py +0 -0
  58. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_properties.py +0 -0
  59. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_purchases.py +0 -0
  60. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_ratings.py +0 -0
  61. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_view_portions.py +0 -0
  62. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_items.py +0 -0
  63. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_scenarios.py +0 -0
  64. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_search_synonyms.py +0 -0
  65. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_segmentations.py +0 -0
  66. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_series.py +0 -0
  67. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_series_items.py +0 -0
  68. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_bookmarks.py +0 -0
  69. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_cart_additions.py +0 -0
  70. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_detail_views.py +0 -0
  71. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_properties.py +0 -0
  72. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_purchases.py +0 -0
  73. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_ratings.py +0 -0
  74. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_view_portions.py +0 -0
  75. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_users.py +0 -0
  76. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/merge_users.py +0 -0
  77. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_item.py +0 -0
  78. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_item_segment.py +0 -0
  79. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_user.py +0 -0
  80. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_next_items.py +0 -0
  81. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_users_to_item.py +0 -0
  82. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_users_to_user.py +0 -0
  83. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/remove_from_series.py +0 -0
  84. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/request.py +0 -0
  85. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/reset_database.py +0 -0
  86. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/search_items.py +0 -0
  87. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_item_values.py +0 -0
  88. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_user_values.py +0 -0
  89. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_values.py +0 -0
  90. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_view_portion.py +0 -0
  91. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_auto_reql_segmentation.py +0 -0
  92. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_manual_reql_segment.py +0 -0
  93. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_manual_reql_segmentation.py +0 -0
  94. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_more_items.py +0 -0
  95. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_property_based_segmentation.py +0 -0
  96. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/exceptions.py +0 -0
  97. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/__init__.py +0 -0
  98. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/composite_recommendation_stage_parameters.py +0 -0
  99. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/input.py +0 -0
  100. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/logic.py +0 -0
  101. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/utils/__init__.py +0 -0
  102. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/utils/serialize_to_json.py +0 -0
  103. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/dependency_links.txt +0 -0
  104. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/requires.txt +0 -0
  105. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/top_level.txt +0 -0
  106. {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recombee-api-client
3
- Version: 6.0.0
3
+ Version: 6.2.0
4
4
  Summary: Client for Recombee recommendation API
5
5
  Home-page: https://github.com/Recombee/python-api-client
6
6
  Author: Recombee
@@ -105,7 +105,7 @@ class RecombeeClient:
105
105
 
106
106
  @staticmethod
107
107
  def __get_http_headers(additional_headers: dict = None) -> dict:
108
- headers = {"User-Agent": "recombee-python-api-client/6.0.0"}
108
+ headers = {"User-Agent": "recombee-python-api-client/6.2.0"}
109
109
  if additional_headers:
110
110
  headers.update(additional_headers)
111
111
  return headers
@@ -82,6 +82,9 @@ from recombee_api_client.api_requests.recommend_item_segments_to_item import (
82
82
  from recombee_api_client.api_requests.recommend_item_segments_to_item_segment import (
83
83
  RecommendItemSegmentsToItemSegment,
84
84
  )
85
+ from recombee_api_client.api_requests.recommend_next_item_segments import (
86
+ RecommendNextItemSegments,
87
+ )
85
88
  from recombee_api_client.api_requests.composite_recommendation import (
86
89
  CompositeRecommendation,
87
90
  )
@@ -13,7 +13,7 @@ DEFAULT = uuid.uuid4()
13
13
 
14
14
  class CompositeRecommendation(Request):
15
15
  """
16
- Composite Recommendation returns both a *source entity* (e.g., an Item or [Item Segment](https://docs.recombee.com/segmentations.html)) and a list of related recommendations in a single response.
16
+ Composite Recommendation returns both a *source entity* (e.g., an Item or [Item Segment](https://docs.recombee.com/segmentations)) and a list of related recommendations in a single response.
17
17
 
18
18
  It is ideal for use cases such as personalized homepage sections (*Articles from <category>*), *Because You Watched <movie>*, or *Artists Related to Your Favorite Artist <artist>*.
19
19
 
@@ -79,6 +79,9 @@ class CompositeRecommendation(Request):
79
79
  :param segment_id: ID of the segment from `contextSegmentationId` for which the recommendations are to be generated.
80
80
 
81
81
 
82
+ :param search_query: Search query provided by the user. It is used for the full-text search. Only applicable if the *scenario* corresponds to a search scenario.
83
+
84
+
82
85
  :param cascade_create: If the entity for the source recommendation does not exist in the database, returns a list of non-personalized recommendations and creates the user in the database. This allows, for example, rotations in the following recommendations for that entity, as the entity will be already known to the system.
83
86
 
84
87
 
@@ -101,6 +104,7 @@ class CompositeRecommendation(Request):
101
104
  user_id: str = DEFAULT,
102
105
  logic: Logic = DEFAULT,
103
106
  segment_id: str = DEFAULT,
107
+ search_query: str = DEFAULT,
104
108
  cascade_create: bool = DEFAULT,
105
109
  source_settings: CompositeRecommendationStageParameters = DEFAULT,
106
110
  result_settings: CompositeRecommendationStageParameters = DEFAULT,
@@ -115,6 +119,7 @@ class CompositeRecommendation(Request):
115
119
  self.user_id = user_id
116
120
  self.logic = logic
117
121
  self.segment_id = segment_id
122
+ self.search_query = search_query
118
123
  self.cascade_create = cascade_create
119
124
  self.source_settings = source_settings
120
125
  self.result_settings = result_settings
@@ -135,6 +140,8 @@ class CompositeRecommendation(Request):
135
140
  p["logic"] = serialize_to_json(self.logic)
136
141
  if self.segment_id is not DEFAULT:
137
142
  p["segmentId"] = serialize_to_json(self.segment_id)
143
+ if self.search_query is not DEFAULT:
144
+ p["searchQuery"] = serialize_to_json(self.search_query)
138
145
  if self.cascade_create is not DEFAULT:
139
146
  p["cascadeCreate"] = serialize_to_json(self.cascade_create)
140
147
  if self.source_settings is not DEFAULT:
@@ -101,6 +101,69 @@ class RecommendItemSegmentsToItem(Request):
101
101
  :param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
102
102
 
103
103
 
104
+ :param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
105
+
106
+ This can be used to compute additional properties of the recommended Item Segments.
107
+
108
+
109
+ The keys are the names of the expressions, and the values are the actual ReQL expressions.
110
+
111
+
112
+ Example request:
113
+
114
+ ```json
115
+
116
+ E{lb}
117
+
118
+ "reqlExpressions": E{lb}
119
+
120
+ "countItems": "size(segment_items(\"categories\", 'segmentId'))"
121
+ E{rb}
122
+ E{rb}
123
+
124
+ ```
125
+
126
+
127
+ Example response:
128
+
129
+ ```json
130
+
131
+ E{lb}
132
+
133
+ "recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
134
+
135
+ "recomms":
136
+
137
+ [
138
+
139
+ E{lb}
140
+
141
+ "id": "category-fantasy-books",
142
+
143
+ "reqlEvaluations": E{lb}
144
+
145
+ "countItems": 486
146
+ E{rb}
147
+ E{rb},
148
+
149
+ E{lb}
150
+
151
+ "id": "category-sci-fi-costumes",
152
+
153
+ "reqlEvaluations": E{lb}
154
+
155
+ "countItems": 19
156
+ E{rb}
157
+ E{rb}
158
+
159
+ ],
160
+
161
+ "numberNextRecommsCalls": 0
162
+ E{rb}
163
+
164
+ ```
165
+
166
+
104
167
  """
105
168
 
106
169
  def __init__(
@@ -115,6 +178,7 @@ class RecommendItemSegmentsToItem(Request):
115
178
  logic: Logic = DEFAULT,
116
179
  expert_settings: dict = DEFAULT,
117
180
  return_ab_group: bool = DEFAULT,
181
+ reql_expressions: dict = DEFAULT,
118
182
  ):
119
183
  super().__init__(
120
184
  path="/recomms/items/%s/item-segments/" % (item_id),
@@ -132,6 +196,7 @@ class RecommendItemSegmentsToItem(Request):
132
196
  self.logic = logic
133
197
  self.expert_settings = expert_settings
134
198
  self.return_ab_group = return_ab_group
199
+ self.reql_expressions = reql_expressions
135
200
 
136
201
  def get_body_parameters(self) -> dict:
137
202
  """
@@ -154,6 +219,8 @@ class RecommendItemSegmentsToItem(Request):
154
219
  p["expertSettings"] = serialize_to_json(self.expert_settings)
155
220
  if self.return_ab_group is not DEFAULT:
156
221
  p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
222
+ if self.reql_expressions is not DEFAULT:
223
+ p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
157
224
 
158
225
  return p
159
226
 
@@ -100,6 +100,69 @@ class RecommendItemSegmentsToItemSegment(Request):
100
100
  :param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
101
101
 
102
102
 
103
+ :param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
104
+
105
+ This can be used to compute additional properties of the recommended Item Segments.
106
+
107
+
108
+ The keys are the names of the expressions, and the values are the actual ReQL expressions.
109
+
110
+
111
+ Example request:
112
+
113
+ ```json
114
+
115
+ E{lb}
116
+
117
+ "reqlExpressions": E{lb}
118
+
119
+ "countItems": "size(segment_items(\"categories\", 'segmentId'))"
120
+ E{rb}
121
+ E{rb}
122
+
123
+ ```
124
+
125
+
126
+ Example response:
127
+
128
+ ```json
129
+
130
+ E{lb}
131
+
132
+ "recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
133
+
134
+ "recomms":
135
+
136
+ [
137
+
138
+ E{lb}
139
+
140
+ "id": "category-fantasy-books",
141
+
142
+ "reqlEvaluations": E{lb}
143
+
144
+ "countItems": 486
145
+ E{rb}
146
+ E{rb},
147
+
148
+ E{lb}
149
+
150
+ "id": "category-sci-fi-costumes",
151
+
152
+ "reqlEvaluations": E{lb}
153
+
154
+ "countItems": 19
155
+ E{rb}
156
+ E{rb}
157
+
158
+ ],
159
+
160
+ "numberNextRecommsCalls": 0
161
+ E{rb}
162
+
163
+ ```
164
+
165
+
103
166
  """
104
167
 
105
168
  def __init__(
@@ -114,6 +177,7 @@ class RecommendItemSegmentsToItemSegment(Request):
114
177
  logic: Logic = DEFAULT,
115
178
  expert_settings: dict = DEFAULT,
116
179
  return_ab_group: bool = DEFAULT,
180
+ reql_expressions: dict = DEFAULT,
117
181
  ):
118
182
  super().__init__(
119
183
  path="/recomms/item-segments/item-segments/",
@@ -131,6 +195,7 @@ class RecommendItemSegmentsToItemSegment(Request):
131
195
  self.logic = logic
132
196
  self.expert_settings = expert_settings
133
197
  self.return_ab_group = return_ab_group
198
+ self.reql_expressions = reql_expressions
134
199
 
135
200
  def get_body_parameters(self) -> dict:
136
201
  """
@@ -154,6 +219,8 @@ class RecommendItemSegmentsToItemSegment(Request):
154
219
  p["expertSettings"] = serialize_to_json(self.expert_settings)
155
220
  if self.return_ab_group is not DEFAULT:
156
221
  p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
222
+ if self.reql_expressions is not DEFAULT:
223
+ p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
157
224
 
158
225
  return p
159
226
 
@@ -70,6 +70,69 @@ class RecommendItemSegmentsToUser(Request):
70
70
  :param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
71
71
 
72
72
 
73
+ :param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
74
+
75
+ This can be used to compute additional properties of the recommended Item Segments.
76
+
77
+
78
+ The keys are the names of the expressions, and the values are the actual ReQL expressions.
79
+
80
+
81
+ Example request:
82
+
83
+ ```json
84
+
85
+ E{lb}
86
+
87
+ "reqlExpressions": E{lb}
88
+
89
+ "countItems": "size(segment_items(\"categories\", 'segmentId'))"
90
+ E{rb}
91
+ E{rb}
92
+
93
+ ```
94
+
95
+
96
+ Example response:
97
+
98
+ ```json
99
+
100
+ E{lb}
101
+
102
+ "recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
103
+
104
+ "recomms":
105
+
106
+ [
107
+
108
+ E{lb}
109
+
110
+ "id": "category-fantasy-books",
111
+
112
+ "reqlEvaluations": E{lb}
113
+
114
+ "countItems": 486
115
+ E{rb}
116
+ E{rb},
117
+
118
+ E{lb}
119
+
120
+ "id": "category-sci-fi-costumes",
121
+
122
+ "reqlEvaluations": E{lb}
123
+
124
+ "countItems": 19
125
+ E{rb}
126
+ E{rb}
127
+
128
+ ],
129
+
130
+ "numberNextRecommsCalls": 0
131
+ E{rb}
132
+
133
+ ```
134
+
135
+
73
136
  """
74
137
 
75
138
  def __init__(
@@ -83,6 +146,7 @@ class RecommendItemSegmentsToUser(Request):
83
146
  logic: Logic = DEFAULT,
84
147
  expert_settings: dict = DEFAULT,
85
148
  return_ab_group: bool = DEFAULT,
149
+ reql_expressions: dict = DEFAULT,
86
150
  ):
87
151
  super().__init__(
88
152
  path="/recomms/users/%s/item-segments/" % (user_id),
@@ -99,6 +163,7 @@ class RecommendItemSegmentsToUser(Request):
99
163
  self.logic = logic
100
164
  self.expert_settings = expert_settings
101
165
  self.return_ab_group = return_ab_group
166
+ self.reql_expressions = reql_expressions
102
167
 
103
168
  def get_body_parameters(self) -> dict:
104
169
  """
@@ -120,6 +185,8 @@ class RecommendItemSegmentsToUser(Request):
120
185
  p["expertSettings"] = serialize_to_json(self.expert_settings)
121
186
  if self.return_ab_group is not DEFAULT:
122
187
  p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
188
+ if self.reql_expressions is not DEFAULT:
189
+ p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
123
190
 
124
191
  return p
125
192
 
@@ -0,0 +1,64 @@
1
+ from recombee_api_client.api_requests.request import Request
2
+ from recombee_api_client.utils.serialize_to_json import serialize_to_json
3
+ from typing import Union, List
4
+ from datetime import datetime
5
+ import uuid
6
+
7
+ DEFAULT = uuid.uuid4()
8
+
9
+
10
+ class RecommendNextItemSegments(Request):
11
+ """
12
+ Returns Item segments that shall be shown to a user as next recommendations when the user e.g. scrolls the page down (*infinite scroll*) or goes to the next page.
13
+
14
+ It accepts `recommId` of a base recommendation request (e.g., request from the first page) and the number of segments that shall be returned (`count`).
15
+ The base request can be one of:
16
+ - [Recommend Item Segments to Item](https://docs.recombee.com/api#recommend-item-segments-to-item)
17
+ - [Recommend Item Segments to User](https://docs.recombee.com/api#recommend-item-segments-to-user)
18
+ - [Recommend Item Segments to Item Segment](https://docs.recombee.com/api#recommend-item-segments-to-item-segment)
19
+ - [Search Item Segments](https://docs.recombee.com/api#search-item-segments)
20
+
21
+ All the other parameters are inherited from the base request.
22
+
23
+ *Recommend next Item segments* can be called many times for a single `recommId` and each call returns different (previously not recommended) segments.
24
+ The number of *Recommend next Item segments* calls performed so far is returned in the `numberNextRecommsCalls` field.
25
+
26
+ *Recommend next Item segments* can be requested up to 30 minutes after the base request or a previous *Recommend next Item segments* call.
27
+
28
+ For billing purposes, each call to *Recommend next Item segments* is counted as a separate recommendation request.
29
+
30
+ Required parameters:
31
+
32
+ :param recomm_id: ID of the base recommendation request for which next recommendations should be returned
33
+
34
+ :param count: Number of item segments to be recommended
35
+
36
+
37
+ """
38
+
39
+ def __init__(self, recomm_id: str, count: int):
40
+ super().__init__(
41
+ path="/recomms/next/item-segments/%s" % (recomm_id),
42
+ method="post",
43
+ timeout=3000,
44
+ ensure_https=False,
45
+ )
46
+ self.recomm_id = recomm_id
47
+ self.count = count
48
+
49
+ def get_body_parameters(self) -> dict:
50
+ """
51
+ Values of body parameters as a dictionary (name of parameter: value of the parameter).
52
+ """
53
+ p = dict()
54
+ p["count"] = serialize_to_json(self.count)
55
+
56
+ return p
57
+
58
+ def get_query_parameters(self) -> dict:
59
+ """
60
+ Values of query parameters as a dictionary (name of parameter: value of the parameter).
61
+ """
62
+ params = dict()
63
+
64
+ return params
@@ -71,6 +71,69 @@ class SearchItemSegments(Request):
71
71
  :param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
72
72
 
73
73
 
74
+ :param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
75
+
76
+ This can be used to compute additional properties of the recommended Item Segments.
77
+
78
+
79
+ The keys are the names of the expressions, and the values are the actual ReQL expressions.
80
+
81
+
82
+ Example request:
83
+
84
+ ```json
85
+
86
+ E{lb}
87
+
88
+ "reqlExpressions": E{lb}
89
+
90
+ "countItems": "size(segment_items(\"categories\", 'segmentId'))"
91
+ E{rb}
92
+ E{rb}
93
+
94
+ ```
95
+
96
+
97
+ Example response:
98
+
99
+ ```json
100
+
101
+ E{lb}
102
+
103
+ "recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
104
+
105
+ "recomms":
106
+
107
+ [
108
+
109
+ E{lb}
110
+
111
+ "id": "category-fantasy-books",
112
+
113
+ "reqlEvaluations": E{lb}
114
+
115
+ "countItems": 486
116
+ E{rb}
117
+ E{rb},
118
+
119
+ E{lb}
120
+
121
+ "id": "category-sci-fi-costumes",
122
+
123
+ "reqlEvaluations": E{lb}
124
+
125
+ "countItems": 19
126
+ E{rb}
127
+ E{rb}
128
+
129
+ ],
130
+
131
+ "numberNextRecommsCalls": 0
132
+ E{rb}
133
+
134
+ ```
135
+
136
+
74
137
  """
75
138
 
76
139
  def __init__(
@@ -85,6 +148,7 @@ class SearchItemSegments(Request):
85
148
  logic: Logic = DEFAULT,
86
149
  expert_settings: dict = DEFAULT,
87
150
  return_ab_group: bool = DEFAULT,
151
+ reql_expressions: dict = DEFAULT,
88
152
  ):
89
153
  super().__init__(
90
154
  path="/search/users/%s/item-segments/" % (user_id),
@@ -102,6 +166,7 @@ class SearchItemSegments(Request):
102
166
  self.logic = logic
103
167
  self.expert_settings = expert_settings
104
168
  self.return_ab_group = return_ab_group
169
+ self.reql_expressions = reql_expressions
105
170
 
106
171
  def get_body_parameters(self) -> dict:
107
172
  """
@@ -124,6 +189,8 @@ class SearchItemSegments(Request):
124
189
  p["expertSettings"] = serialize_to_json(self.expert_settings)
125
190
  if self.return_ab_group is not DEFAULT:
126
191
  p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
192
+ if self.reql_expressions is not DEFAULT:
193
+ p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
127
194
 
128
195
  return p
129
196
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recombee-api-client
3
- Version: 6.0.0
3
+ Version: 6.2.0
4
4
  Summary: Client for Recombee recommendation API
5
5
  Home-page: https://github.com/Recombee/python-api-client
6
6
  Author: Recombee
@@ -78,6 +78,7 @@ recombee_api_client/api_requests/recommend_item_segments_to_user.py
78
78
  recombee_api_client/api_requests/recommend_items_to_item.py
79
79
  recombee_api_client/api_requests/recommend_items_to_item_segment.py
80
80
  recombee_api_client/api_requests/recommend_items_to_user.py
81
+ recombee_api_client/api_requests/recommend_next_item_segments.py
81
82
  recombee_api_client/api_requests/recommend_next_items.py
82
83
  recombee_api_client/api_requests/recommend_users_to_item.py
83
84
  recombee_api_client/api_requests/recommend_users_to_user.py
@@ -10,7 +10,7 @@ with open(path.join(here, "README.rst"), encoding="utf-8") as f:
10
10
 
11
11
  setup(
12
12
  name="recombee-api-client",
13
- version="6.0.0",
13
+ version="6.2.0",
14
14
  description="Client for Recombee recommendation API",
15
15
  long_description=long_description,
16
16
  url="https://github.com/Recombee/python-api-client",
@@ -326,6 +326,15 @@ if __name__ == "__main__":
326
326
  RecommendItemSegmentsToItemSegmentTestCase
327
327
  )
328
328
  )
329
+ from tests.test_cases.test_recommend_next_item_segments import (
330
+ RecommendNextItemSegmentsTestCase,
331
+ )
332
+
333
+ suite.addTests(
334
+ unittest.defaultTestLoader.loadTestsFromTestCase(
335
+ RecommendNextItemSegmentsTestCase
336
+ )
337
+ )
329
338
  from tests.test_cases.test_composite_recommendation import (
330
339
  CompositeRecommendationTestCase,
331
340
  )