{-# 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
-- <https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html GetRecommendations>
-- 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
-- <https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeRecommender.html DescribeRecommender>.
--
-- Wait until the @status@ of the recommender is @ACTIVE@ before asking the
-- recommender for recommendations.
--
-- __Related APIs__
--
-- -   <https://docs.aws.amazon.com/personalize/latest/dg/API_ListRecommenders.html ListRecommenders>
--
-- -   <https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeRecommender.html DescribeRecommender>
--
-- -   <https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateRecommender.html UpdateRecommender>
--
-- -   <https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteRecommender.html DeleteRecommender>
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.
    CreateRecommender -> Maybe RecommenderConfig
recommenderConfig :: Prelude.Maybe RecommenderConfig,
    -- | A list of
    -- <https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html tags>
    -- to apply to the recommender.
    CreateRecommender -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the recommender.
    CreateRecommender -> Text
name :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the destination domain dataset group
    -- for the recommender.
    CreateRecommender -> Text
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
    -- <https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html Choosing recommender use cases>.
    CreateRecommender -> Text
recipeArn :: Prelude.Text
  }
  deriving (CreateRecommender -> CreateRecommender -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRecommender -> CreateRecommender -> Bool
$c/= :: CreateRecommender -> CreateRecommender -> Bool
== :: CreateRecommender -> CreateRecommender -> Bool
$c== :: CreateRecommender -> CreateRecommender -> Bool
Prelude.Eq, ReadPrec [CreateRecommender]
ReadPrec CreateRecommender
Int -> ReadS CreateRecommender
ReadS [CreateRecommender]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRecommender]
$creadListPrec :: ReadPrec [CreateRecommender]
readPrec :: ReadPrec CreateRecommender
$creadPrec :: ReadPrec CreateRecommender
readList :: ReadS [CreateRecommender]
$creadList :: ReadS [CreateRecommender]
readsPrec :: Int -> ReadS CreateRecommender
$creadsPrec :: Int -> ReadS CreateRecommender
Prelude.Read, Int -> CreateRecommender -> ShowS
[CreateRecommender] -> ShowS
CreateRecommender -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRecommender] -> ShowS
$cshowList :: [CreateRecommender] -> ShowS
show :: CreateRecommender -> String
$cshow :: CreateRecommender -> String
showsPrec :: Int -> CreateRecommender -> ShowS
$cshowsPrec :: Int -> CreateRecommender -> ShowS
Prelude.Show, forall x. Rep CreateRecommender x -> CreateRecommender
forall x. CreateRecommender -> Rep CreateRecommender x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateRecommender x -> CreateRecommender
$cfrom :: forall x. CreateRecommender -> Rep CreateRecommender x
Prelude.Generic)

-- |
-- Create a value of 'CreateRecommender' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> 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
-- <https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html tags>
-- 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
-- <https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html Choosing recommender use cases>.
newCreateRecommender ::
  -- | 'name'
  Prelude.Text ->
  -- | 'datasetGroupArn'
  Prelude.Text ->
  -- | 'recipeArn'
  Prelude.Text ->
  CreateRecommender
newCreateRecommender :: Text -> Text -> Text -> CreateRecommender
newCreateRecommender
  Text
pName_
  Text
pDatasetGroupArn_
  Text
pRecipeArn_ =
    CreateRecommender'
      { $sel:recommenderConfig:CreateRecommender' :: Maybe RecommenderConfig
recommenderConfig =
          forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateRecommender' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:name:CreateRecommender' :: Text
name = Text
pName_,
        $sel:datasetGroupArn:CreateRecommender' :: Text
datasetGroupArn = Text
pDatasetGroupArn_,
        $sel:recipeArn:CreateRecommender' :: Text
recipeArn = Text
pRecipeArn_
      }

-- | The configuration details of the recommender.
createRecommender_recommenderConfig :: Lens.Lens' CreateRecommender (Prelude.Maybe RecommenderConfig)
createRecommender_recommenderConfig :: Lens' CreateRecommender (Maybe RecommenderConfig)
createRecommender_recommenderConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommender' {Maybe RecommenderConfig
recommenderConfig :: Maybe RecommenderConfig
$sel:recommenderConfig:CreateRecommender' :: CreateRecommender -> Maybe RecommenderConfig
recommenderConfig} -> Maybe RecommenderConfig
recommenderConfig) (\s :: CreateRecommender
s@CreateRecommender' {} Maybe RecommenderConfig
a -> CreateRecommender
s {$sel:recommenderConfig:CreateRecommender' :: Maybe RecommenderConfig
recommenderConfig = Maybe RecommenderConfig
a} :: CreateRecommender)

-- | A list of
-- <https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html tags>
-- to apply to the recommender.
createRecommender_tags :: Lens.Lens' CreateRecommender (Prelude.Maybe [Tag])
createRecommender_tags :: Lens' CreateRecommender (Maybe [Tag])
createRecommender_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommender' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateRecommender' :: CreateRecommender -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateRecommender
s@CreateRecommender' {} Maybe [Tag]
a -> CreateRecommender
s {$sel:tags:CreateRecommender' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateRecommender) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the recommender.
createRecommender_name :: Lens.Lens' CreateRecommender Prelude.Text
createRecommender_name :: Lens' CreateRecommender Text
createRecommender_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommender' {Text
name :: Text
$sel:name:CreateRecommender' :: CreateRecommender -> Text
name} -> Text
name) (\s :: CreateRecommender
s@CreateRecommender' {} Text
a -> CreateRecommender
s {$sel:name:CreateRecommender' :: Text
name = Text
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' CreateRecommender Text
createRecommender_datasetGroupArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommender' {Text
datasetGroupArn :: Text
$sel:datasetGroupArn:CreateRecommender' :: CreateRecommender -> Text
datasetGroupArn} -> Text
datasetGroupArn) (\s :: CreateRecommender
s@CreateRecommender' {} Text
a -> CreateRecommender
s {$sel:datasetGroupArn:CreateRecommender' :: Text
datasetGroupArn = Text
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
-- <https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html Choosing recommender use cases>.
createRecommender_recipeArn :: Lens.Lens' CreateRecommender Prelude.Text
createRecommender_recipeArn :: Lens' CreateRecommender Text
createRecommender_recipeArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommender' {Text
recipeArn :: Text
$sel:recipeArn:CreateRecommender' :: CreateRecommender -> Text
recipeArn} -> Text
recipeArn) (\s :: CreateRecommender
s@CreateRecommender' {} Text
a -> CreateRecommender
s {$sel:recipeArn:CreateRecommender' :: Text
recipeArn = Text
a} :: CreateRecommender)

instance Core.AWSRequest CreateRecommender where
  type
    AWSResponse CreateRecommender =
      CreateRecommenderResponse
  request :: (Service -> Service)
-> CreateRecommender -> Request CreateRecommender
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateRecommender
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateRecommender)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> CreateRecommenderResponse
CreateRecommenderResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"recommenderArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateRecommender where
  hashWithSalt :: Int -> CreateRecommender -> Int
hashWithSalt Int
_salt CreateRecommender' {Maybe [Tag]
Maybe RecommenderConfig
Text
recipeArn :: Text
datasetGroupArn :: Text
name :: Text
tags :: Maybe [Tag]
recommenderConfig :: Maybe RecommenderConfig
$sel:recipeArn:CreateRecommender' :: CreateRecommender -> Text
$sel:datasetGroupArn:CreateRecommender' :: CreateRecommender -> Text
$sel:name:CreateRecommender' :: CreateRecommender -> Text
$sel:tags:CreateRecommender' :: CreateRecommender -> Maybe [Tag]
$sel:recommenderConfig:CreateRecommender' :: CreateRecommender -> Maybe RecommenderConfig
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RecommenderConfig
recommenderConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
datasetGroupArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
recipeArn

instance Prelude.NFData CreateRecommender where
  rnf :: CreateRecommender -> ()
rnf CreateRecommender' {Maybe [Tag]
Maybe RecommenderConfig
Text
recipeArn :: Text
datasetGroupArn :: Text
name :: Text
tags :: Maybe [Tag]
recommenderConfig :: Maybe RecommenderConfig
$sel:recipeArn:CreateRecommender' :: CreateRecommender -> Text
$sel:datasetGroupArn:CreateRecommender' :: CreateRecommender -> Text
$sel:name:CreateRecommender' :: CreateRecommender -> Text
$sel:tags:CreateRecommender' :: CreateRecommender -> Maybe [Tag]
$sel:recommenderConfig:CreateRecommender' :: CreateRecommender -> Maybe RecommenderConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe RecommenderConfig
recommenderConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
datasetGroupArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
recipeArn

instance Data.ToHeaders CreateRecommender where
  toHeaders :: CreateRecommender -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonPersonalize.CreateRecommender" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateRecommender where
  toJSON :: CreateRecommender -> Value
toJSON CreateRecommender' {Maybe [Tag]
Maybe RecommenderConfig
Text
recipeArn :: Text
datasetGroupArn :: Text
name :: Text
tags :: Maybe [Tag]
recommenderConfig :: Maybe RecommenderConfig
$sel:recipeArn:CreateRecommender' :: CreateRecommender -> Text
$sel:datasetGroupArn:CreateRecommender' :: CreateRecommender -> Text
$sel:name:CreateRecommender' :: CreateRecommender -> Text
$sel:tags:CreateRecommender' :: CreateRecommender -> Maybe [Tag]
$sel:recommenderConfig:CreateRecommender' :: CreateRecommender -> Maybe RecommenderConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"recommenderConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RecommenderConfig
recommenderConfig,
            (Key
"tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"datasetGroupArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
datasetGroupArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"recipeArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
recipeArn)
          ]
      )

instance Data.ToPath CreateRecommender where
  toPath :: CreateRecommender -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CreateRecommender where
  toQuery :: CreateRecommender -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCreateRecommenderResponse' smart constructor.
data CreateRecommenderResponse = CreateRecommenderResponse'
  { -- | The Amazon Resource Name (ARN) of the recommender.
    CreateRecommenderResponse -> Maybe Text
recommenderArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateRecommenderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateRecommenderResponse -> CreateRecommenderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRecommenderResponse -> CreateRecommenderResponse -> Bool
$c/= :: CreateRecommenderResponse -> CreateRecommenderResponse -> Bool
== :: CreateRecommenderResponse -> CreateRecommenderResponse -> Bool
$c== :: CreateRecommenderResponse -> CreateRecommenderResponse -> Bool
Prelude.Eq, ReadPrec [CreateRecommenderResponse]
ReadPrec CreateRecommenderResponse
Int -> ReadS CreateRecommenderResponse
ReadS [CreateRecommenderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRecommenderResponse]
$creadListPrec :: ReadPrec [CreateRecommenderResponse]
readPrec :: ReadPrec CreateRecommenderResponse
$creadPrec :: ReadPrec CreateRecommenderResponse
readList :: ReadS [CreateRecommenderResponse]
$creadList :: ReadS [CreateRecommenderResponse]
readsPrec :: Int -> ReadS CreateRecommenderResponse
$creadsPrec :: Int -> ReadS CreateRecommenderResponse
Prelude.Read, Int -> CreateRecommenderResponse -> ShowS
[CreateRecommenderResponse] -> ShowS
CreateRecommenderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRecommenderResponse] -> ShowS
$cshowList :: [CreateRecommenderResponse] -> ShowS
show :: CreateRecommenderResponse -> String
$cshow :: CreateRecommenderResponse -> String
showsPrec :: Int -> CreateRecommenderResponse -> ShowS
$cshowsPrec :: Int -> CreateRecommenderResponse -> ShowS
Prelude.Show, forall x.
Rep CreateRecommenderResponse x -> CreateRecommenderResponse
forall x.
CreateRecommenderResponse -> Rep CreateRecommenderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateRecommenderResponse x -> CreateRecommenderResponse
$cfrom :: forall x.
CreateRecommenderResponse -> Rep CreateRecommenderResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateRecommenderResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> 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 :: Int -> CreateRecommenderResponse
newCreateRecommenderResponse Int
pHttpStatus_ =
  CreateRecommenderResponse'
    { $sel:recommenderArn:CreateRecommenderResponse' :: Maybe Text
recommenderArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateRecommenderResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the recommender.
createRecommenderResponse_recommenderArn :: Lens.Lens' CreateRecommenderResponse (Prelude.Maybe Prelude.Text)
createRecommenderResponse_recommenderArn :: Lens' CreateRecommenderResponse (Maybe Text)
createRecommenderResponse_recommenderArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommenderResponse' {Maybe Text
recommenderArn :: Maybe Text
$sel:recommenderArn:CreateRecommenderResponse' :: CreateRecommenderResponse -> Maybe Text
recommenderArn} -> Maybe Text
recommenderArn) (\s :: CreateRecommenderResponse
s@CreateRecommenderResponse' {} Maybe Text
a -> CreateRecommenderResponse
s {$sel:recommenderArn:CreateRecommenderResponse' :: Maybe Text
recommenderArn = Maybe Text
a} :: CreateRecommenderResponse)

-- | The response's http status code.
createRecommenderResponse_httpStatus :: Lens.Lens' CreateRecommenderResponse Prelude.Int
createRecommenderResponse_httpStatus :: Lens' CreateRecommenderResponse Int
createRecommenderResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRecommenderResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateRecommenderResponse' :: CreateRecommenderResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateRecommenderResponse
s@CreateRecommenderResponse' {} Int
a -> CreateRecommenderResponse
s {$sel:httpStatus:CreateRecommenderResponse' :: Int
httpStatus = Int
a} :: CreateRecommenderResponse)

instance Prelude.NFData CreateRecommenderResponse where
  rnf :: CreateRecommenderResponse -> ()
rnf CreateRecommenderResponse' {Int
Maybe Text
httpStatus :: Int
recommenderArn :: Maybe Text
$sel:httpStatus:CreateRecommenderResponse' :: CreateRecommenderResponse -> Int
$sel:recommenderArn:CreateRecommenderResponse' :: CreateRecommenderResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recommenderArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus