{-# 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.Rekognition.ListDatasetEntries
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the entries (images) within a dataset. An entry is a JSON Line
-- that contains the information for a single image, including the image
-- location, assigned labels, and object location bounding boxes. For more
-- information, see
-- <https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/md-manifest-files.html Creating a manifest file>.
--
-- JSON Lines in the response include information about non-terminal errors
-- found in the dataset. Non terminal errors are reported in @errors@ lists
-- within each JSON Line. The same information is reported in the training
-- and testing validation result manifests that Amazon Rekognition Custom
-- Labels creates during model training.
--
-- You can filter the response in variety of ways, such as choosing which
-- labels to return and returning JSON Lines created after a specific date.
--
-- This operation requires permissions to perform the
-- @rekognition:ListDatasetEntries@ action.
--
-- This operation returns paginated results.
module Amazonka.Rekognition.ListDatasetEntries
  ( -- * Creating a Request
    ListDatasetEntries (..),
    newListDatasetEntries,

    -- * Request Lenses
    listDatasetEntries_containsLabels,
    listDatasetEntries_hasErrors,
    listDatasetEntries_labeled,
    listDatasetEntries_maxResults,
    listDatasetEntries_nextToken,
    listDatasetEntries_sourceRefContains,
    listDatasetEntries_datasetArn,

    -- * Destructuring the Response
    ListDatasetEntriesResponse (..),
    newListDatasetEntriesResponse,

    -- * Response Lenses
    listDatasetEntriesResponse_datasetEntries,
    listDatasetEntriesResponse_nextToken,
    listDatasetEntriesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Rekognition.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newListDatasetEntries' smart constructor.
data ListDatasetEntries = ListDatasetEntries'
  { -- | Specifies a label filter for the response. The response includes an
    -- entry only if one or more of the labels in @ContainsLabels@ exist in the
    -- entry.
    ListDatasetEntries -> Maybe (NonEmpty Text)
containsLabels :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Specifies an error filter for the response. Specify @True@ to only
    -- include entries that have errors.
    ListDatasetEntries -> Maybe Bool
hasErrors :: Prelude.Maybe Prelude.Bool,
    -- | Specify @true@ to get only the JSON Lines where the image is labeled.
    -- Specify @false@ to get only the JSON Lines where the image isn\'t
    -- labeled. If you don\'t specify @Labeled@, @ListDatasetEntries@ returns
    -- JSON Lines for labeled and unlabeled images.
    ListDatasetEntries -> Maybe Bool
labeled :: Prelude.Maybe Prelude.Bool,
    -- | The maximum number of results to return per paginated call. The largest
    -- value you can specify is 100. If you specify a value greater than 100, a
    -- ValidationException error occurs. The default value is 100.
    ListDatasetEntries -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | If the previous response was incomplete (because there is more results
    -- to retrieve), Amazon Rekognition Custom Labels returns a pagination
    -- token in the response. You can use this pagination token to retrieve the
    -- next set of results.
    ListDatasetEntries -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | If specified, @ListDatasetEntries@ only returns JSON Lines where the
    -- value of @SourceRefContains@ is part of the @source-ref@ field. The
    -- @source-ref@ field contains the Amazon S3 location of the image. You can
    -- use @SouceRefContains@ for tasks such as getting the JSON Line for a
    -- single image, or gettting JSON Lines for all images within a specific
    -- folder.
    ListDatasetEntries -> Maybe Text
sourceRefContains :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) for the dataset that you want to use.
    ListDatasetEntries -> Text
datasetArn :: Prelude.Text
  }
  deriving (ListDatasetEntries -> ListDatasetEntries -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDatasetEntries -> ListDatasetEntries -> Bool
$c/= :: ListDatasetEntries -> ListDatasetEntries -> Bool
== :: ListDatasetEntries -> ListDatasetEntries -> Bool
$c== :: ListDatasetEntries -> ListDatasetEntries -> Bool
Prelude.Eq, ReadPrec [ListDatasetEntries]
ReadPrec ListDatasetEntries
Int -> ReadS ListDatasetEntries
ReadS [ListDatasetEntries]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDatasetEntries]
$creadListPrec :: ReadPrec [ListDatasetEntries]
readPrec :: ReadPrec ListDatasetEntries
$creadPrec :: ReadPrec ListDatasetEntries
readList :: ReadS [ListDatasetEntries]
$creadList :: ReadS [ListDatasetEntries]
readsPrec :: Int -> ReadS ListDatasetEntries
$creadsPrec :: Int -> ReadS ListDatasetEntries
Prelude.Read, Int -> ListDatasetEntries -> ShowS
[ListDatasetEntries] -> ShowS
ListDatasetEntries -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDatasetEntries] -> ShowS
$cshowList :: [ListDatasetEntries] -> ShowS
show :: ListDatasetEntries -> String
$cshow :: ListDatasetEntries -> String
showsPrec :: Int -> ListDatasetEntries -> ShowS
$cshowsPrec :: Int -> ListDatasetEntries -> ShowS
Prelude.Show, forall x. Rep ListDatasetEntries x -> ListDatasetEntries
forall x. ListDatasetEntries -> Rep ListDatasetEntries x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListDatasetEntries x -> ListDatasetEntries
$cfrom :: forall x. ListDatasetEntries -> Rep ListDatasetEntries x
Prelude.Generic)

-- |
-- Create a value of 'ListDatasetEntries' 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:
--
-- 'containsLabels', 'listDatasetEntries_containsLabels' - Specifies a label filter for the response. The response includes an
-- entry only if one or more of the labels in @ContainsLabels@ exist in the
-- entry.
--
-- 'hasErrors', 'listDatasetEntries_hasErrors' - Specifies an error filter for the response. Specify @True@ to only
-- include entries that have errors.
--
-- 'labeled', 'listDatasetEntries_labeled' - Specify @true@ to get only the JSON Lines where the image is labeled.
-- Specify @false@ to get only the JSON Lines where the image isn\'t
-- labeled. If you don\'t specify @Labeled@, @ListDatasetEntries@ returns
-- JSON Lines for labeled and unlabeled images.
--
-- 'maxResults', 'listDatasetEntries_maxResults' - The maximum number of results to return per paginated call. The largest
-- value you can specify is 100. If you specify a value greater than 100, a
-- ValidationException error occurs. The default value is 100.
--
-- 'nextToken', 'listDatasetEntries_nextToken' - If the previous response was incomplete (because there is more results
-- to retrieve), Amazon Rekognition Custom Labels returns a pagination
-- token in the response. You can use this pagination token to retrieve the
-- next set of results.
--
-- 'sourceRefContains', 'listDatasetEntries_sourceRefContains' - If specified, @ListDatasetEntries@ only returns JSON Lines where the
-- value of @SourceRefContains@ is part of the @source-ref@ field. The
-- @source-ref@ field contains the Amazon S3 location of the image. You can
-- use @SouceRefContains@ for tasks such as getting the JSON Line for a
-- single image, or gettting JSON Lines for all images within a specific
-- folder.
--
-- 'datasetArn', 'listDatasetEntries_datasetArn' - The Amazon Resource Name (ARN) for the dataset that you want to use.
newListDatasetEntries ::
  -- | 'datasetArn'
  Prelude.Text ->
  ListDatasetEntries
newListDatasetEntries :: Text -> ListDatasetEntries
newListDatasetEntries Text
pDatasetArn_ =
  ListDatasetEntries'
    { $sel:containsLabels:ListDatasetEntries' :: Maybe (NonEmpty Text)
containsLabels =
        forall a. Maybe a
Prelude.Nothing,
      $sel:hasErrors:ListDatasetEntries' :: Maybe Bool
hasErrors = forall a. Maybe a
Prelude.Nothing,
      $sel:labeled:ListDatasetEntries' :: Maybe Bool
labeled = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListDatasetEntries' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListDatasetEntries' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceRefContains:ListDatasetEntries' :: Maybe Text
sourceRefContains = forall a. Maybe a
Prelude.Nothing,
      $sel:datasetArn:ListDatasetEntries' :: Text
datasetArn = Text
pDatasetArn_
    }

-- | Specifies a label filter for the response. The response includes an
-- entry only if one or more of the labels in @ContainsLabels@ exist in the
-- entry.
listDatasetEntries_containsLabels :: Lens.Lens' ListDatasetEntries (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
listDatasetEntries_containsLabels :: Lens' ListDatasetEntries (Maybe (NonEmpty Text))
listDatasetEntries_containsLabels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe (NonEmpty Text)
containsLabels :: Maybe (NonEmpty Text)
$sel:containsLabels:ListDatasetEntries' :: ListDatasetEntries -> Maybe (NonEmpty Text)
containsLabels} -> Maybe (NonEmpty Text)
containsLabels) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe (NonEmpty Text)
a -> ListDatasetEntries
s {$sel:containsLabels:ListDatasetEntries' :: Maybe (NonEmpty Text)
containsLabels = Maybe (NonEmpty Text)
a} :: ListDatasetEntries) 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

-- | Specifies an error filter for the response. Specify @True@ to only
-- include entries that have errors.
listDatasetEntries_hasErrors :: Lens.Lens' ListDatasetEntries (Prelude.Maybe Prelude.Bool)
listDatasetEntries_hasErrors :: Lens' ListDatasetEntries (Maybe Bool)
listDatasetEntries_hasErrors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe Bool
hasErrors :: Maybe Bool
$sel:hasErrors:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
hasErrors} -> Maybe Bool
hasErrors) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe Bool
a -> ListDatasetEntries
s {$sel:hasErrors:ListDatasetEntries' :: Maybe Bool
hasErrors = Maybe Bool
a} :: ListDatasetEntries)

-- | Specify @true@ to get only the JSON Lines where the image is labeled.
-- Specify @false@ to get only the JSON Lines where the image isn\'t
-- labeled. If you don\'t specify @Labeled@, @ListDatasetEntries@ returns
-- JSON Lines for labeled and unlabeled images.
listDatasetEntries_labeled :: Lens.Lens' ListDatasetEntries (Prelude.Maybe Prelude.Bool)
listDatasetEntries_labeled :: Lens' ListDatasetEntries (Maybe Bool)
listDatasetEntries_labeled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe Bool
labeled :: Maybe Bool
$sel:labeled:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
labeled} -> Maybe Bool
labeled) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe Bool
a -> ListDatasetEntries
s {$sel:labeled:ListDatasetEntries' :: Maybe Bool
labeled = Maybe Bool
a} :: ListDatasetEntries)

-- | The maximum number of results to return per paginated call. The largest
-- value you can specify is 100. If you specify a value greater than 100, a
-- ValidationException error occurs. The default value is 100.
listDatasetEntries_maxResults :: Lens.Lens' ListDatasetEntries (Prelude.Maybe Prelude.Natural)
listDatasetEntries_maxResults :: Lens' ListDatasetEntries (Maybe Natural)
listDatasetEntries_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListDatasetEntries' :: ListDatasetEntries -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe Natural
a -> ListDatasetEntries
s {$sel:maxResults:ListDatasetEntries' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListDatasetEntries)

-- | If the previous response was incomplete (because there is more results
-- to retrieve), Amazon Rekognition Custom Labels returns a pagination
-- token in the response. You can use this pagination token to retrieve the
-- next set of results.
listDatasetEntries_nextToken :: Lens.Lens' ListDatasetEntries (Prelude.Maybe Prelude.Text)
listDatasetEntries_nextToken :: Lens' ListDatasetEntries (Maybe Text)
listDatasetEntries_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe Text
a -> ListDatasetEntries
s {$sel:nextToken:ListDatasetEntries' :: Maybe Text
nextToken = Maybe Text
a} :: ListDatasetEntries)

-- | If specified, @ListDatasetEntries@ only returns JSON Lines where the
-- value of @SourceRefContains@ is part of the @source-ref@ field. The
-- @source-ref@ field contains the Amazon S3 location of the image. You can
-- use @SouceRefContains@ for tasks such as getting the JSON Line for a
-- single image, or gettting JSON Lines for all images within a specific
-- folder.
listDatasetEntries_sourceRefContains :: Lens.Lens' ListDatasetEntries (Prelude.Maybe Prelude.Text)
listDatasetEntries_sourceRefContains :: Lens' ListDatasetEntries (Maybe Text)
listDatasetEntries_sourceRefContains = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Maybe Text
sourceRefContains :: Maybe Text
$sel:sourceRefContains:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
sourceRefContains} -> Maybe Text
sourceRefContains) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Maybe Text
a -> ListDatasetEntries
s {$sel:sourceRefContains:ListDatasetEntries' :: Maybe Text
sourceRefContains = Maybe Text
a} :: ListDatasetEntries)

-- | The Amazon Resource Name (ARN) for the dataset that you want to use.
listDatasetEntries_datasetArn :: Lens.Lens' ListDatasetEntries Prelude.Text
listDatasetEntries_datasetArn :: Lens' ListDatasetEntries Text
listDatasetEntries_datasetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntries' {Text
datasetArn :: Text
$sel:datasetArn:ListDatasetEntries' :: ListDatasetEntries -> Text
datasetArn} -> Text
datasetArn) (\s :: ListDatasetEntries
s@ListDatasetEntries' {} Text
a -> ListDatasetEntries
s {$sel:datasetArn:ListDatasetEntries' :: Text
datasetArn = Text
a} :: ListDatasetEntries)

instance Core.AWSPager ListDatasetEntries where
  page :: ListDatasetEntries
-> AWSResponse ListDatasetEntries -> Maybe ListDatasetEntries
page ListDatasetEntries
rq AWSResponse ListDatasetEntries
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListDatasetEntries
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListDatasetEntriesResponse (Maybe Text)
listDatasetEntriesResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListDatasetEntries
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListDatasetEntriesResponse (Maybe [Text])
listDatasetEntriesResponse_datasetEntries
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListDatasetEntries
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListDatasetEntries (Maybe Text)
listDatasetEntries_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListDatasetEntries
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListDatasetEntriesResponse (Maybe Text)
listDatasetEntriesResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest ListDatasetEntries where
  type
    AWSResponse ListDatasetEntries =
      ListDatasetEntriesResponse
  request :: (Service -> Service)
-> ListDatasetEntries -> Request ListDatasetEntries
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 ListDatasetEntries
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListDatasetEntries)))
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] -> Maybe Text -> Int -> ListDatasetEntriesResponse
ListDatasetEntriesResponse'
            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
"DatasetEntries" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            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 ListDatasetEntries where
  hashWithSalt :: Int -> ListDatasetEntries -> Int
hashWithSalt Int
_salt ListDatasetEntries' {Maybe Bool
Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
Text
datasetArn :: Text
sourceRefContains :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
labeled :: Maybe Bool
hasErrors :: Maybe Bool
containsLabels :: Maybe (NonEmpty Text)
$sel:datasetArn:ListDatasetEntries' :: ListDatasetEntries -> Text
$sel:sourceRefContains:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:nextToken:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:maxResults:ListDatasetEntries' :: ListDatasetEntries -> Maybe Natural
$sel:labeled:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:hasErrors:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:containsLabels:ListDatasetEntries' :: ListDatasetEntries -> Maybe (NonEmpty Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
containsLabels
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
hasErrors
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
labeled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceRefContains
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
datasetArn

instance Prelude.NFData ListDatasetEntries where
  rnf :: ListDatasetEntries -> ()
rnf ListDatasetEntries' {Maybe Bool
Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
Text
datasetArn :: Text
sourceRefContains :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
labeled :: Maybe Bool
hasErrors :: Maybe Bool
containsLabels :: Maybe (NonEmpty Text)
$sel:datasetArn:ListDatasetEntries' :: ListDatasetEntries -> Text
$sel:sourceRefContains:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:nextToken:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:maxResults:ListDatasetEntries' :: ListDatasetEntries -> Maybe Natural
$sel:labeled:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:hasErrors:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:containsLabels:ListDatasetEntries' :: ListDatasetEntries -> Maybe (NonEmpty Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
containsLabels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
hasErrors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
labeled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceRefContains
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
datasetArn

instance Data.ToHeaders ListDatasetEntries where
  toHeaders :: ListDatasetEntries -> 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
"RekognitionService.ListDatasetEntries" ::
                          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 ListDatasetEntries where
  toJSON :: ListDatasetEntries -> Value
toJSON ListDatasetEntries' {Maybe Bool
Maybe Natural
Maybe (NonEmpty Text)
Maybe Text
Text
datasetArn :: Text
sourceRefContains :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
labeled :: Maybe Bool
hasErrors :: Maybe Bool
containsLabels :: Maybe (NonEmpty Text)
$sel:datasetArn:ListDatasetEntries' :: ListDatasetEntries -> Text
$sel:sourceRefContains:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:nextToken:ListDatasetEntries' :: ListDatasetEntries -> Maybe Text
$sel:maxResults:ListDatasetEntries' :: ListDatasetEntries -> Maybe Natural
$sel:labeled:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:hasErrors:ListDatasetEntries' :: ListDatasetEntries -> Maybe Bool
$sel:containsLabels:ListDatasetEntries' :: ListDatasetEntries -> Maybe (NonEmpty Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ContainsLabels" 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 (NonEmpty Text)
containsLabels,
            (Key
"HasErrors" 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 Bool
hasErrors,
            (Key
"Labeled" 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 Bool
labeled,
            (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"NextToken" 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 Text
nextToken,
            (Key
"SourceRefContains" 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 Text
sourceRefContains,
            forall a. a -> Maybe a
Prelude.Just (Key
"DatasetArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
datasetArn)
          ]
      )

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

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

-- | /See:/ 'newListDatasetEntriesResponse' smart constructor.
data ListDatasetEntriesResponse = ListDatasetEntriesResponse'
  { -- | A list of entries (images) in the dataset.
    ListDatasetEntriesResponse -> Maybe [Text]
datasetEntries :: Prelude.Maybe [Prelude.Text],
    -- | If the previous response was incomplete (because there is more results
    -- to retrieve), Amazon Rekognition Custom Labels returns a pagination
    -- token in the response. You can use this pagination token to retrieve the
    -- next set of results.
    ListDatasetEntriesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListDatasetEntriesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListDatasetEntriesResponse -> ListDatasetEntriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDatasetEntriesResponse -> ListDatasetEntriesResponse -> Bool
$c/= :: ListDatasetEntriesResponse -> ListDatasetEntriesResponse -> Bool
== :: ListDatasetEntriesResponse -> ListDatasetEntriesResponse -> Bool
$c== :: ListDatasetEntriesResponse -> ListDatasetEntriesResponse -> Bool
Prelude.Eq, ReadPrec [ListDatasetEntriesResponse]
ReadPrec ListDatasetEntriesResponse
Int -> ReadS ListDatasetEntriesResponse
ReadS [ListDatasetEntriesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDatasetEntriesResponse]
$creadListPrec :: ReadPrec [ListDatasetEntriesResponse]
readPrec :: ReadPrec ListDatasetEntriesResponse
$creadPrec :: ReadPrec ListDatasetEntriesResponse
readList :: ReadS [ListDatasetEntriesResponse]
$creadList :: ReadS [ListDatasetEntriesResponse]
readsPrec :: Int -> ReadS ListDatasetEntriesResponse
$creadsPrec :: Int -> ReadS ListDatasetEntriesResponse
Prelude.Read, Int -> ListDatasetEntriesResponse -> ShowS
[ListDatasetEntriesResponse] -> ShowS
ListDatasetEntriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDatasetEntriesResponse] -> ShowS
$cshowList :: [ListDatasetEntriesResponse] -> ShowS
show :: ListDatasetEntriesResponse -> String
$cshow :: ListDatasetEntriesResponse -> String
showsPrec :: Int -> ListDatasetEntriesResponse -> ShowS
$cshowsPrec :: Int -> ListDatasetEntriesResponse -> ShowS
Prelude.Show, forall x.
Rep ListDatasetEntriesResponse x -> ListDatasetEntriesResponse
forall x.
ListDatasetEntriesResponse -> Rep ListDatasetEntriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListDatasetEntriesResponse x -> ListDatasetEntriesResponse
$cfrom :: forall x.
ListDatasetEntriesResponse -> Rep ListDatasetEntriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListDatasetEntriesResponse' 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:
--
-- 'datasetEntries', 'listDatasetEntriesResponse_datasetEntries' - A list of entries (images) in the dataset.
--
-- 'nextToken', 'listDatasetEntriesResponse_nextToken' - If the previous response was incomplete (because there is more results
-- to retrieve), Amazon Rekognition Custom Labels returns a pagination
-- token in the response. You can use this pagination token to retrieve the
-- next set of results.
--
-- 'httpStatus', 'listDatasetEntriesResponse_httpStatus' - The response's http status code.
newListDatasetEntriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListDatasetEntriesResponse
newListDatasetEntriesResponse :: Int -> ListDatasetEntriesResponse
newListDatasetEntriesResponse Int
pHttpStatus_ =
  ListDatasetEntriesResponse'
    { $sel:datasetEntries:ListDatasetEntriesResponse' :: Maybe [Text]
datasetEntries =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListDatasetEntriesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListDatasetEntriesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A list of entries (images) in the dataset.
listDatasetEntriesResponse_datasetEntries :: Lens.Lens' ListDatasetEntriesResponse (Prelude.Maybe [Prelude.Text])
listDatasetEntriesResponse_datasetEntries :: Lens' ListDatasetEntriesResponse (Maybe [Text])
listDatasetEntriesResponse_datasetEntries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntriesResponse' {Maybe [Text]
datasetEntries :: Maybe [Text]
$sel:datasetEntries:ListDatasetEntriesResponse' :: ListDatasetEntriesResponse -> Maybe [Text]
datasetEntries} -> Maybe [Text]
datasetEntries) (\s :: ListDatasetEntriesResponse
s@ListDatasetEntriesResponse' {} Maybe [Text]
a -> ListDatasetEntriesResponse
s {$sel:datasetEntries:ListDatasetEntriesResponse' :: Maybe [Text]
datasetEntries = Maybe [Text]
a} :: ListDatasetEntriesResponse) 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

-- | If the previous response was incomplete (because there is more results
-- to retrieve), Amazon Rekognition Custom Labels returns a pagination
-- token in the response. You can use this pagination token to retrieve the
-- next set of results.
listDatasetEntriesResponse_nextToken :: Lens.Lens' ListDatasetEntriesResponse (Prelude.Maybe Prelude.Text)
listDatasetEntriesResponse_nextToken :: Lens' ListDatasetEntriesResponse (Maybe Text)
listDatasetEntriesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDatasetEntriesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDatasetEntriesResponse' :: ListDatasetEntriesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDatasetEntriesResponse
s@ListDatasetEntriesResponse' {} Maybe Text
a -> ListDatasetEntriesResponse
s {$sel:nextToken:ListDatasetEntriesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListDatasetEntriesResponse)

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

instance Prelude.NFData ListDatasetEntriesResponse where
  rnf :: ListDatasetEntriesResponse -> ()
rnf ListDatasetEntriesResponse' {Int
Maybe [Text]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
datasetEntries :: Maybe [Text]
$sel:httpStatus:ListDatasetEntriesResponse' :: ListDatasetEntriesResponse -> Int
$sel:nextToken:ListDatasetEntriesResponse' :: ListDatasetEntriesResponse -> Maybe Text
$sel:datasetEntries:ListDatasetEntriesResponse' :: ListDatasetEntriesResponse -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
datasetEntries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus