packages feed

amazonka-personalize-2.0: gen/Amazonka/Personalize/ListRecommenders.hs

{-# 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.ListRecommenders
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list of recommenders in a given Domain dataset group. When a
-- Domain dataset group is not specified, all the recommenders associated
-- with the account are listed. The response provides the properties for
-- each recommender, including the Amazon Resource Name (ARN). For more
-- information on recommenders, see
-- <https://docs.aws.amazon.com/personalize/latest/dg/API_CreateRecommender.html CreateRecommender>.
--
-- This operation returns paginated results.
module Amazonka.Personalize.ListRecommenders
  ( -- * Creating a Request
    ListRecommenders (..),
    newListRecommenders,

    -- * Request Lenses
    listRecommenders_datasetGroupArn,
    listRecommenders_maxResults,
    listRecommenders_nextToken,

    -- * Destructuring the Response
    ListRecommendersResponse (..),
    newListRecommendersResponse,

    -- * Response Lenses
    listRecommendersResponse_nextToken,
    listRecommendersResponse_recommenders,
    listRecommendersResponse_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:/ 'newListRecommenders' smart constructor.
data ListRecommenders = ListRecommenders'
  { -- | The Amazon Resource Name (ARN) of the Domain dataset group to list the
    -- recommenders for. When a Domain dataset group is not specified, all the
    -- recommenders associated with the account are listed.
    datasetGroupArn :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of recommenders to return.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A token returned from the previous call to @ListRecommenders@ for
    -- getting the next set of recommenders (if they exist).
    nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListRecommenders' 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:
--
-- 'datasetGroupArn', 'listRecommenders_datasetGroupArn' - The Amazon Resource Name (ARN) of the Domain dataset group to list the
-- recommenders for. When a Domain dataset group is not specified, all the
-- recommenders associated with the account are listed.
--
-- 'maxResults', 'listRecommenders_maxResults' - The maximum number of recommenders to return.
--
-- 'nextToken', 'listRecommenders_nextToken' - A token returned from the previous call to @ListRecommenders@ for
-- getting the next set of recommenders (if they exist).
newListRecommenders ::
  ListRecommenders
newListRecommenders =
  ListRecommenders'
    { datasetGroupArn =
        Prelude.Nothing,
      maxResults = Prelude.Nothing,
      nextToken = Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the Domain dataset group to list the
-- recommenders for. When a Domain dataset group is not specified, all the
-- recommenders associated with the account are listed.
listRecommenders_datasetGroupArn :: Lens.Lens' ListRecommenders (Prelude.Maybe Prelude.Text)
listRecommenders_datasetGroupArn = Lens.lens (\ListRecommenders' {datasetGroupArn} -> datasetGroupArn) (\s@ListRecommenders' {} a -> s {datasetGroupArn = a} :: ListRecommenders)

-- | The maximum number of recommenders to return.
listRecommenders_maxResults :: Lens.Lens' ListRecommenders (Prelude.Maybe Prelude.Natural)
listRecommenders_maxResults = Lens.lens (\ListRecommenders' {maxResults} -> maxResults) (\s@ListRecommenders' {} a -> s {maxResults = a} :: ListRecommenders)

-- | A token returned from the previous call to @ListRecommenders@ for
-- getting the next set of recommenders (if they exist).
listRecommenders_nextToken :: Lens.Lens' ListRecommenders (Prelude.Maybe Prelude.Text)
listRecommenders_nextToken = Lens.lens (\ListRecommenders' {nextToken} -> nextToken) (\s@ListRecommenders' {} a -> s {nextToken = a} :: ListRecommenders)

instance Core.AWSPager ListRecommenders where
  page rq rs
    | Core.stop
        ( rs
            Lens.^? listRecommendersResponse_nextToken
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Core.stop
        ( rs
            Lens.^? listRecommendersResponse_recommenders
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& listRecommenders_nextToken
          Lens..~ rs
          Lens.^? listRecommendersResponse_nextToken
          Prelude.. Lens._Just

instance Core.AWSRequest ListRecommenders where
  type
    AWSResponse ListRecommenders =
      ListRecommendersResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          ListRecommendersResponse'
            Prelude.<$> (x Data..?> "nextToken")
            Prelude.<*> (x Data..?> "recommenders" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable ListRecommenders where
  hashWithSalt _salt ListRecommenders' {..} =
    _salt
      `Prelude.hashWithSalt` datasetGroupArn
      `Prelude.hashWithSalt` maxResults
      `Prelude.hashWithSalt` nextToken

instance Prelude.NFData ListRecommenders where
  rnf ListRecommenders' {..} =
    Prelude.rnf datasetGroupArn
      `Prelude.seq` Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken

instance Data.ToHeaders ListRecommenders where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AmazonPersonalize.ListRecommenders" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON ListRecommenders where
  toJSON ListRecommenders' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("datasetGroupArn" Data..=)
              Prelude.<$> datasetGroupArn,
            ("maxResults" Data..=) Prelude.<$> maxResults,
            ("nextToken" Data..=) Prelude.<$> nextToken
          ]
      )

instance Data.ToPath ListRecommenders where
  toPath = Prelude.const "/"

instance Data.ToQuery ListRecommenders where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newListRecommendersResponse' smart constructor.
data ListRecommendersResponse = ListRecommendersResponse'
  { -- | A token for getting the next set of recommenders (if they exist).
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of the recommenders.
    recommenders :: Prelude.Maybe [RecommenderSummary],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListRecommendersResponse' 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:
--
-- 'nextToken', 'listRecommendersResponse_nextToken' - A token for getting the next set of recommenders (if they exist).
--
-- 'recommenders', 'listRecommendersResponse_recommenders' - A list of the recommenders.
--
-- 'httpStatus', 'listRecommendersResponse_httpStatus' - The response's http status code.
newListRecommendersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListRecommendersResponse
newListRecommendersResponse pHttpStatus_ =
  ListRecommendersResponse'
    { nextToken =
        Prelude.Nothing,
      recommenders = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | A token for getting the next set of recommenders (if they exist).
listRecommendersResponse_nextToken :: Lens.Lens' ListRecommendersResponse (Prelude.Maybe Prelude.Text)
listRecommendersResponse_nextToken = Lens.lens (\ListRecommendersResponse' {nextToken} -> nextToken) (\s@ListRecommendersResponse' {} a -> s {nextToken = a} :: ListRecommendersResponse)

-- | A list of the recommenders.
listRecommendersResponse_recommenders :: Lens.Lens' ListRecommendersResponse (Prelude.Maybe [RecommenderSummary])
listRecommendersResponse_recommenders = Lens.lens (\ListRecommendersResponse' {recommenders} -> recommenders) (\s@ListRecommendersResponse' {} a -> s {recommenders = a} :: ListRecommendersResponse) Prelude.. Lens.mapping Lens.coerced

-- | The response's http status code.
listRecommendersResponse_httpStatus :: Lens.Lens' ListRecommendersResponse Prelude.Int
listRecommendersResponse_httpStatus = Lens.lens (\ListRecommendersResponse' {httpStatus} -> httpStatus) (\s@ListRecommendersResponse' {} a -> s {httpStatus = a} :: ListRecommendersResponse)

instance Prelude.NFData ListRecommendersResponse where
  rnf ListRecommendersResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf recommenders
      `Prelude.seq` Prelude.rnf httpStatus