{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Personalize.CreateRecommender -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a recommender with the recipe (a Domain dataset group use case) -- you specify. You create recommenders for a Domain dataset group and -- specify the recommender\'s Amazon Resource Name (ARN) when you make a -- -- request. -- -- __Minimum recommendation requests per second__ -- -- When you create a recommender, you can configure the recommender\'s -- minimum recommendation requests per second. The minimum recommendation -- requests per second (@minRecommendationRequestsPerSecond@) specifies the -- baseline recommendation request throughput provisioned by Amazon -- Personalize. The default minRecommendationRequestsPerSecond is @1@. A -- recommendation request is a single @GetRecommendations@ operation. -- Request throughput is measured in requests per second and Amazon -- Personalize uses your requests per second to derive your requests per -- hour and the price of your recommender usage. -- -- If your requests per second increases beyond -- @minRecommendationRequestsPerSecond@, Amazon Personalize auto-scales the -- provisioned capacity up and down, but never below -- @minRecommendationRequestsPerSecond@. There\'s a short time delay while -- the capacity is increased that might cause loss of requests. -- -- Your bill is the greater of either the minimum requests per hour (based -- on minRecommendationRequestsPerSecond) or the actual number of requests. -- The actual request throughput used is calculated as the average -- requests\/second within a one-hour window. We recommend starting with -- the default @minRecommendationRequestsPerSecond@, track your usage using -- Amazon CloudWatch metrics, and then increase the -- @minRecommendationRequestsPerSecond@ as necessary. -- -- __Status__ -- -- A recommender can be in one of the following states: -- -- - CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED -- -- - STOP PENDING > STOP IN_PROGRESS > INACTIVE > START PENDING > START -- IN_PROGRESS > ACTIVE -- -- - DELETE PENDING > DELETE IN_PROGRESS -- -- To get the recommender status, call -- . -- -- Wait until the @status@ of the recommender is @ACTIVE@ before asking the -- recommender for recommendations. -- -- __Related APIs__ -- -- - -- -- - -- -- - -- -- - module Amazonka.Personalize.CreateRecommender ( -- * Creating a Request CreateRecommender (..), newCreateRecommender, -- * Request Lenses createRecommender_recommenderConfig, createRecommender_tags, createRecommender_name, createRecommender_datasetGroupArn, createRecommender_recipeArn, -- * Destructuring the Response CreateRecommenderResponse (..), newCreateRecommenderResponse, -- * Response Lenses createRecommenderResponse_recommenderArn, createRecommenderResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Personalize.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newCreateRecommender' smart constructor. data CreateRecommender = CreateRecommender' { -- | The configuration details of the recommender. recommenderConfig :: Prelude.Maybe RecommenderConfig, -- | A list of -- -- to apply to the recommender. tags :: Prelude.Maybe [Tag], -- | The name of the recommender. name :: Prelude.Text, -- | The Amazon Resource Name (ARN) of the destination domain dataset group -- for the recommender. datasetGroupArn :: Prelude.Text, -- | The Amazon Resource Name (ARN) of the recipe that the recommender will -- use. For a recommender, a recipe is a Domain dataset group use case. -- Only Domain dataset group use cases can be used to create a recommender. -- For information about use cases see -- . recipeArn :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateRecommender' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'recommenderConfig', 'createRecommender_recommenderConfig' - The configuration details of the recommender. -- -- 'tags', 'createRecommender_tags' - A list of -- -- to apply to the recommender. -- -- 'name', 'createRecommender_name' - The name of the recommender. -- -- 'datasetGroupArn', 'createRecommender_datasetGroupArn' - The Amazon Resource Name (ARN) of the destination domain dataset group -- for the recommender. -- -- 'recipeArn', 'createRecommender_recipeArn' - The Amazon Resource Name (ARN) of the recipe that the recommender will -- use. For a recommender, a recipe is a Domain dataset group use case. -- Only Domain dataset group use cases can be used to create a recommender. -- For information about use cases see -- . newCreateRecommender :: -- | 'name' Prelude.Text -> -- | 'datasetGroupArn' Prelude.Text -> -- | 'recipeArn' Prelude.Text -> CreateRecommender newCreateRecommender pName_ pDatasetGroupArn_ pRecipeArn_ = CreateRecommender' { recommenderConfig = Prelude.Nothing, tags = Prelude.Nothing, name = pName_, datasetGroupArn = pDatasetGroupArn_, recipeArn = pRecipeArn_ } -- | The configuration details of the recommender. createRecommender_recommenderConfig :: Lens.Lens' CreateRecommender (Prelude.Maybe RecommenderConfig) createRecommender_recommenderConfig = Lens.lens (\CreateRecommender' {recommenderConfig} -> recommenderConfig) (\s@CreateRecommender' {} a -> s {recommenderConfig = a} :: CreateRecommender) -- | A list of -- -- to apply to the recommender. createRecommender_tags :: Lens.Lens' CreateRecommender (Prelude.Maybe [Tag]) createRecommender_tags = Lens.lens (\CreateRecommender' {tags} -> tags) (\s@CreateRecommender' {} a -> s {tags = a} :: CreateRecommender) Prelude.. Lens.mapping Lens.coerced -- | The name of the recommender. createRecommender_name :: Lens.Lens' CreateRecommender Prelude.Text createRecommender_name = Lens.lens (\CreateRecommender' {name} -> name) (\s@CreateRecommender' {} a -> s {name = a} :: CreateRecommender) -- | The Amazon Resource Name (ARN) of the destination domain dataset group -- for the recommender. createRecommender_datasetGroupArn :: Lens.Lens' CreateRecommender Prelude.Text createRecommender_datasetGroupArn = Lens.lens (\CreateRecommender' {datasetGroupArn} -> datasetGroupArn) (\s@CreateRecommender' {} a -> s {datasetGroupArn = a} :: CreateRecommender) -- | The Amazon Resource Name (ARN) of the recipe that the recommender will -- use. For a recommender, a recipe is a Domain dataset group use case. -- Only Domain dataset group use cases can be used to create a recommender. -- For information about use cases see -- . createRecommender_recipeArn :: Lens.Lens' CreateRecommender Prelude.Text createRecommender_recipeArn = Lens.lens (\CreateRecommender' {recipeArn} -> recipeArn) (\s@CreateRecommender' {} a -> s {recipeArn = a} :: CreateRecommender) instance Core.AWSRequest CreateRecommender where type AWSResponse CreateRecommender = CreateRecommenderResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateRecommenderResponse' Prelude.<$> (x Data..?> "recommenderArn") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateRecommender where hashWithSalt _salt CreateRecommender' {..} = _salt `Prelude.hashWithSalt` recommenderConfig `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` name `Prelude.hashWithSalt` datasetGroupArn `Prelude.hashWithSalt` recipeArn instance Prelude.NFData CreateRecommender where rnf CreateRecommender' {..} = Prelude.rnf recommenderConfig `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf name `Prelude.seq` Prelude.rnf datasetGroupArn `Prelude.seq` Prelude.rnf recipeArn instance Data.ToHeaders CreateRecommender where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "AmazonPersonalize.CreateRecommender" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateRecommender where toJSON CreateRecommender' {..} = Data.object ( Prelude.catMaybes [ ("recommenderConfig" Data..=) Prelude.<$> recommenderConfig, ("tags" Data..=) Prelude.<$> tags, Prelude.Just ("name" Data..= name), Prelude.Just ("datasetGroupArn" Data..= datasetGroupArn), Prelude.Just ("recipeArn" Data..= recipeArn) ] ) instance Data.ToPath CreateRecommender where toPath = Prelude.const "/" instance Data.ToQuery CreateRecommender where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateRecommenderResponse' smart constructor. data CreateRecommenderResponse = CreateRecommenderResponse' { -- | The Amazon Resource Name (ARN) of the recommender. recommenderArn :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateRecommenderResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'recommenderArn', 'createRecommenderResponse_recommenderArn' - The Amazon Resource Name (ARN) of the recommender. -- -- 'httpStatus', 'createRecommenderResponse_httpStatus' - The response's http status code. newCreateRecommenderResponse :: -- | 'httpStatus' Prelude.Int -> CreateRecommenderResponse newCreateRecommenderResponse pHttpStatus_ = CreateRecommenderResponse' { recommenderArn = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The Amazon Resource Name (ARN) of the recommender. createRecommenderResponse_recommenderArn :: Lens.Lens' CreateRecommenderResponse (Prelude.Maybe Prelude.Text) createRecommenderResponse_recommenderArn = Lens.lens (\CreateRecommenderResponse' {recommenderArn} -> recommenderArn) (\s@CreateRecommenderResponse' {} a -> s {recommenderArn = a} :: CreateRecommenderResponse) -- | The response's http status code. createRecommenderResponse_httpStatus :: Lens.Lens' CreateRecommenderResponse Prelude.Int createRecommenderResponse_httpStatus = Lens.lens (\CreateRecommenderResponse' {httpStatus} -> httpStatus) (\s@CreateRecommenderResponse' {} a -> s {httpStatus = a} :: CreateRecommenderResponse) instance Prelude.NFData CreateRecommenderResponse where rnf CreateRecommenderResponse' {..} = Prelude.rnf recommenderArn `Prelude.seq` Prelude.rnf httpStatus