UNPKG

recombee-api-client

Version:

Node.js client (SDK) for easy use of the Recombee recommendation API

219 lines (200 loc) 8.75 kB
/* 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