Skip to content

Commit

Permalink
feat(specs): add recommend batch rules endpoint (generated)
Browse files Browse the repository at this point in the history
algolia/api-clients-automation#3782

Co-authored-by: algolia-bot <accounts+algolia-api-client-bot@algolia.com>
Co-authored-by: Raed <raed.chammam@algolia.com>
Co-authored-by: Pierre Millot <pierre.millot@algolia.com>
Co-authored-by: Clément Vannicatte <vannicattec@gmail.com>
  • Loading branch information
4 people committed Sep 27, 2024
1 parent 0ef99a5 commit 86ae17c
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 1 deletion.
37 changes: 37 additions & 0 deletions src/main/scala/algoliasearch/api/RecommendClient.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import algoliasearch.recommend.GetRecommendationsParams
import algoliasearch.recommend.GetRecommendationsResponse
import algoliasearch.recommend.RecommendModels._
import algoliasearch.recommend.RecommendRule
import algoliasearch.recommend.RecommendUpdatedAtResponse
import algoliasearch.recommend.SearchRecommendRulesParams
import algoliasearch.recommend.SearchRecommendRulesResponse
import algoliasearch.recommend._
Expand Down Expand Up @@ -71,6 +72,42 @@ class RecommendClient(
options = clientOptions
) {

/** Create or update a batch of Recommend Rules Each Recommend Rule is created or updated, depending on whether a
* Recommend Rule with the same `objectID` already exists. You may also specify `true` for `clearExistingRules`, in
* which case the batch will atomically replace all the existing Recommend Rules. Recommend Rules are similar to
* Search Rules, except that the conditions and consequences apply to a [source
* item](/doc/guides/algolia-recommend/overview/#recommend-models) instead of a query. The main differences are the
* following: - Conditions `pattern` and `anchoring` are unavailable. - Condition `filters` triggers if the source
* item matches the specified filters. - Condition `filters` accepts numeric filters. - Consequence `params` only
* covers filtering parameters. - Consequence `automaticFacetFilters` doesn't require a facet value placeholder (it
* tries to match the data source item's attributes instead).
*
* Required API Key ACLs:
* - editSettings
*
* @param indexName
* Name of the index on which to perform the operation.
* @param model
* [Recommend model](https://www.algolia.com/doc/guides/algolia-recommend/overview/#recommend-models).
*/
def batchRecommendRules(
indexName: String,
model: RecommendModels,
recommendRule: Option[Seq[RecommendRule]] = None,
requestOptions: Option[RequestOptions] = None
)(implicit ec: ExecutionContext): Future[RecommendUpdatedAtResponse] = Future {
requireNotNull(indexName, "Parameter `indexName` is required when calling `batchRecommendRules`.")
requireNotNull(model, "Parameter `model` is required when calling `batchRecommendRules`.")

val request = HttpRequest
.builder()
.withMethod("POST")
.withPath(s"/1/indexes/${escape(indexName)}/${escape(model)}/recommend/rules/batch")
.withBody(recommendRule)
.build()
execute[RecommendUpdatedAtResponse](request, requestOptions)
}

/** This method allow you to send requests to the Algolia REST API.
*
* @param path
Expand Down
5 changes: 4 additions & 1 deletion src/main/scala/algoliasearch/recommend/RecommendRule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,15 @@ package algoliasearch.recommend
* Description of the rule's purpose. This can be helpful for display in the Algolia dashboard.
* @param enabled
* Indicates whether to enable the rule. If it isn't enabled, it isn't applied at query time.
* @param validity
* Time periods when the rule is active.
*/
case class RecommendRule(
metadata: Option[RuleMetadata] = scala.None,
objectID: Option[String] = scala.None,
condition: Option[Condition] = scala.None,
consequence: Option[Consequence] = scala.None,
description: Option[String] = scala.None,
enabled: Option[Boolean] = scala.None
enabled: Option[Boolean] = scala.None,
validity: Option[Seq[TimeRange]] = scala.None
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/** Recommend API The Recommend API lets you retrieve recommendations from one of Algolia's AI recommendation models
* that you previously trained on your data. ## Client libraries Use Algolia's API clients and libraries to reliably
* integrate Algolia's APIs with your apps. The official API clients are covered by Algolia's [Service Level
* Agreement](https://www.algolia.com/policies/sla/). See: [Algolia's
* ecosystem](https://www.algolia.com/doc/guides/getting-started/how-algolia-works/in-depth/ecosystem/) ## Base URLs
* The base URLs for requests to the Recommend API are: - `https://{APPLICATION_ID}.algolia.net` -
* `https://{APPLICATION_ID}-dsn.algolia.net`. If your subscription includes a [Distributed Search
* Network](https://dashboard.algolia.com/infra), this ensures that requests are sent to servers closest to users. Both
* URLs provide high availability by distributing requests with load balancing. **All requests must use HTTPS.** ##
* Retry strategy To guarantee a high availability, implement a retry strategy for all API requests using the URLs of
* your servers as fallbacks: - `https://{APPLICATION_ID}-1.algolianet.com` -
* `https://{APPLICATION_ID}-2.algolianet.com` - `https://{APPLICATION_ID}-3.algolianet.com` These URLs use a different
* DNS provider than the primary URLs. You should randomize this list to ensure an even load across the three servers.
* All Algolia API clients implement this retry strategy. ## Authentication To authenticate your API requests, add
* these headers: - `x-algolia-application-id`. Your Algolia application ID. - `x-algolia-api-key`. An API key with the
* necessary permissions to make the request. The required access control list (ACL) to make a request is listed in
* each endpoint's reference. You can find your application ID and API key in the [Algolia
* dashboard](https://dashboard.algolia.com/account). ## Request format Request bodies must be JSON objects. ##
* Response status and errors The Recommend API returns JSON responses. Since JSON doesn't guarantee any specific
* ordering, don't rely on the order of attributes in the API response. Successful responses return a `2xx` status.
* Client errors return a `4xx` status. Server errors are indicated by a `5xx` status. Error responses have a `message`
* property with more information. ## Version The current version of the Recommend API is version 1, as indicated by
* the `/1/` in each endpoint's URL.
*
* The version of the OpenAPI document: 1.0.0
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech Do not edit the class manually.
*/
package algoliasearch.recommend

/** Response, taskID, and update timestamp.
*
* @param taskID
* Unique identifier of a task. A successful API response means that a task was added to a queue. It might not run
* immediately. You can check the task's progress with the [`task` operation](#tag/Indices/operation/getTask) and
* this `taskID`.
* @param updatedAt
* Date and time when the object was updated, in RFC 3339 format.
*/
case class RecommendUpdatedAtResponse(
taskID: Long,
updatedAt: String
)
42 changes: 42 additions & 0 deletions src/main/scala/algoliasearch/recommend/TimeRange.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/** Recommend API The Recommend API lets you retrieve recommendations from one of Algolia's AI recommendation models
* that you previously trained on your data. ## Client libraries Use Algolia's API clients and libraries to reliably
* integrate Algolia's APIs with your apps. The official API clients are covered by Algolia's [Service Level
* Agreement](https://www.algolia.com/policies/sla/). See: [Algolia's
* ecosystem](https://www.algolia.com/doc/guides/getting-started/how-algolia-works/in-depth/ecosystem/) ## Base URLs
* The base URLs for requests to the Recommend API are: - `https://{APPLICATION_ID}.algolia.net` -
* `https://{APPLICATION_ID}-dsn.algolia.net`. If your subscription includes a [Distributed Search
* Network](https://dashboard.algolia.com/infra), this ensures that requests are sent to servers closest to users. Both
* URLs provide high availability by distributing requests with load balancing. **All requests must use HTTPS.** ##
* Retry strategy To guarantee a high availability, implement a retry strategy for all API requests using the URLs of
* your servers as fallbacks: - `https://{APPLICATION_ID}-1.algolianet.com` -
* `https://{APPLICATION_ID}-2.algolianet.com` - `https://{APPLICATION_ID}-3.algolianet.com` These URLs use a different
* DNS provider than the primary URLs. You should randomize this list to ensure an even load across the three servers.
* All Algolia API clients implement this retry strategy. ## Authentication To authenticate your API requests, add
* these headers: - `x-algolia-application-id`. Your Algolia application ID. - `x-algolia-api-key`. An API key with the
* necessary permissions to make the request. The required access control list (ACL) to make a request is listed in
* each endpoint's reference. You can find your application ID and API key in the [Algolia
* dashboard](https://dashboard.algolia.com/account). ## Request format Request bodies must be JSON objects. ##
* Response status and errors The Recommend API returns JSON responses. Since JSON doesn't guarantee any specific
* ordering, don't rely on the order of attributes in the API response. Successful responses return a `2xx` status.
* Client errors return a `4xx` status. Server errors are indicated by a `5xx` status. Error responses have a `message`
* property with more information. ## Version The current version of the Recommend API is version 1, as indicated by
* the `/1/` in each endpoint's URL.
*
* The version of the OpenAPI document: 1.0.0
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech Do not edit the class manually.
*/
package algoliasearch.recommend

/** TimeRange
*
* @param from
* When the rule should start to be active, in Unix epoch time.
* @param until
* When the rule should stop to be active, in Unix epoch time.
*/
case class TimeRange(
from: Int,
until: Int
)

0 comments on commit 86ae17c

Please sign in to comment.