recombee-api-client
Version:
Node.js client (SDK) for easy use of the Recombee recommendation API
219 lines (200 loc) • 8.75 kB
JavaScript
/*
This file is auto-generated, do not edit
*/
'use strict';
const rqs = require("./request");
/**
* Recommends users that are likely to be interested in the given item.
* It is also possible to use POST HTTP method (for example in the case of a very long ReQL filter) - query parameters then become body parameters.
* The returned users are sorted by predicted interest in the item (the first user being the most interested).
*/
class RecommendUsersToItem extends rqs.Request {
/**
* Construct the request
* @param {string} itemId - ID of the item for which the recommendations are to be generated.
* @param {number} count - Number of users to be recommended (N for the top-N recommendation).
* @param {Object} optional - Optional parameters given as an object with structure name of the parameter: value
* - Allowed parameters:
* - *scenario*
* - Type: string
* - Description: Scenario defines a particular application of recommendations. It can be, for example, "homepage", "cart", or "emailing".
* You can set various settings to the [scenario](https://docs.recombee.com/scenarios) in the [Admin UI](https://admin.recombee.com). You can also see the performance of each scenario in the Admin UI separately, so you can check how well each application performs.
* The AI that optimizes models to get the best results may optimize different scenarios separately or even use different models in each of the scenarios.
* - *cascadeCreate*
* - Type: boolean
* - Description: If an item of the given *itemId* doesn't exist in the database, it creates the missing item.
* - *returnProperties*
* - Type: boolean
* - Description: With `returnProperties=true`, property values of the recommended users are returned along with their IDs in a JSON dictionary. The acquired property values can be used to easily display the recommended users.
* Example response:
* ```json
* {
* "recommId": "039b71dc-b9cc-4645-a84f-62b841eecfce",
* "recomms":
* [
* {
* "id": "user-17",
* "values": {
* "country": "US",
* "sex": "F"
* }
* },
* {
* "id": "user-2",
* "values": {
* "country": "CAN",
* "sex": "M"
* }
* }
* ],
* "numberNextRecommsCalls": 0
* }
* ```
* - *includedProperties*
* - Type: string[]
* - Description: Allows specifying which properties should be returned when `returnProperties=true` is set. The properties are given as a comma-separated list.
* Example response for `includedProperties=country`:
* ```json
* {
* "recommId": "b2b355dd-972a-4728-9c6b-2dc229db0678",
* "recomms":
* [
* {
* "id": "user-17",
* "values": {
* "country": "US"
* }
* },
* {
* "id": "user-2",
* "values": {
* "country": "CAN"
* }
* }
* ],
* "numberNextRecommsCalls": 0
* }
* ```
* - *filter*
* - Type: string
* - Description: Boolean-returning [ReQL](https://docs.recombee.com/reql) expression, which allows you to filter recommended users based on the values of their attributes.
* Filters can also be assigned to a [scenario](https://docs.recombee.com/scenarios) in the [Admin UI](https://admin.recombee.com).
* - *booster*
* - Type: string
* - Description: Number-returning [ReQL](https://docs.recombee.com/reql) expression, which allows you to boost the recommendation rate of some users based on the values of their attributes.
* Boosters can also be assigned to a [scenario](https://docs.recombee.com/scenarios) in the [Admin UI](https://admin.recombee.com).
* - *logic*
* - Type: string | object
* - Description: Logic specifies the particular behavior of the recommendation models. You can pick tailored logic for your domain and use case.
* See [this section](https://docs.recombee.com/recommendation_logics) for a list of available logics and other details.
* The difference between `logic` and `scenario` is that `logic` specifies mainly behavior, while `scenario` specifies the place where recommendations are shown to the users.
* Logic can also be set to a [scenario](https://docs.recombee.com/scenarios) in the [Admin UI](https://admin.recombee.com).
* - *reqlExpressions*
* - Type: object
* - Description: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended user.
* This can be used to compute additional properties of the recommended users that are not stored in the database.
* The keys are the names of the expressions, and the values are the actual ReQL expressions.
* Example request:
* ```json
* {
* "reqlExpressions": {
* "isInUsersCity": "context_user[\"city\"] in 'cities'",
* "distanceToUser": "earth_distance('location', context_user[\"location\"])",
* "isFromSameCompany": "'company' == context_item[\"company\"]"
* }
* }
* ```
* Example response:
* ```json
* {
* "recommId": "ce52ada4-e4d9-4885-943c-407db2dee837",
* "recomms":
* [
* {
* "id": "restaurant-178",
* "reqlEvaluations": {
* "isInUsersCity": true,
* "distanceToUser": 5200.2,
* "isFromSameCompany": false
* }
* },
* {
* "id": "bar-42",
* "reqlEvaluations": {
* "isInUsersCity": false,
* "distanceToUser": 2516.0,
* "isFromSameCompany": true
* }
* }
* ],
* "numberNextRecommsCalls": 0
* }
* ```
* - *diversity*
* - Type: number
* - Description: **Expert option:** Real number from [0.0, 1.0], which determines how mutually dissimilar the recommended users should be. The default value is 0.0, i.e., no diversification. Value 1.0 means maximal diversification.
* - *expertSettings*
* - Type: object
* - Description: Dictionary of custom options.
* - *returnAbGroup*
* - Type: boolean
* - Description: If there is a custom AB-testing running, return the name of the group to which the request belongs.
*/
constructor(itemId, count, optional) {
super('POST', `/recomms/items/${itemId}/users/`, 50000, false);
this.itemId = itemId;
this.count = count;
optional = optional || {};
this.scenario = optional.scenario;
this.cascadeCreate = optional.cascadeCreate;
this.returnProperties = optional.returnProperties;
this.includedProperties = optional.includedProperties;
this.filter = optional.filter;
this.booster = optional.booster;
this.logic = optional.logic;
this.reqlExpressions = optional.reqlExpressions;
this.diversity = optional.diversity;
this.expertSettings = optional.expertSettings;
this.returnAbGroup = optional.returnAbGroup;
}
/**
* Get body parameters
* @return {Object} The values of body parameters (name of parameter: value of the parameter)
*/
bodyParameters() {
let params = {};
params.count = this.count;
if(this.scenario !== undefined)
params.scenario = this.scenario;
if(this.cascadeCreate !== undefined)
params.cascadeCreate = this.cascadeCreate;
if(this.returnProperties !== undefined)
params.returnProperties = this.returnProperties;
if(this.includedProperties !== undefined)
params.includedProperties = this.includedProperties;
if(this.filter !== undefined)
params.filter = this.filter;
if(this.booster !== undefined)
params.booster = this.booster;
if(this.logic !== undefined)
params.logic = this.logic;
if(this.reqlExpressions !== undefined)
params.reqlExpressions = this.reqlExpressions;
if(this.diversity !== undefined)
params.diversity = this.diversity;
if(this.expertSettings !== undefined)
params.expertSettings = this.expertSettings;
if(this.returnAbGroup !== undefined)
params.returnAbGroup = this.returnAbGroup;
return params;
}
/**
* Get query parameters
* @return {Object} The values of query parameters (name of parameter: value of the parameter)
*/
queryParameters() {
let params = {};
return params;
}
}
exports.RecommendUsersToItem = RecommendUsersToItem