{-# 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.SageMaker.DescribeFlowDefinition
-- 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 information about the specified flow definition.
module Amazonka.SageMaker.DescribeFlowDefinition
  ( -- * Creating a Request
    DescribeFlowDefinition (..),
    newDescribeFlowDefinition,

    -- * Request Lenses
    describeFlowDefinition_flowDefinitionName,

    -- * Destructuring the Response
    DescribeFlowDefinitionResponse (..),
    newDescribeFlowDefinitionResponse,

    -- * Response Lenses
    describeFlowDefinitionResponse_failureReason,
    describeFlowDefinitionResponse_humanLoopActivationConfig,
    describeFlowDefinitionResponse_humanLoopRequestSource,
    describeFlowDefinitionResponse_httpStatus,
    describeFlowDefinitionResponse_flowDefinitionArn,
    describeFlowDefinitionResponse_flowDefinitionName,
    describeFlowDefinitionResponse_flowDefinitionStatus,
    describeFlowDefinitionResponse_creationTime,
    describeFlowDefinitionResponse_humanLoopConfig,
    describeFlowDefinitionResponse_outputConfig,
    describeFlowDefinitionResponse_roleArn,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SageMaker.Types

-- | /See:/ 'newDescribeFlowDefinition' smart constructor.
data DescribeFlowDefinition = DescribeFlowDefinition'
  { -- | The name of the flow definition.
    DescribeFlowDefinition -> Text
flowDefinitionName :: Prelude.Text
  }
  deriving (DescribeFlowDefinition -> DescribeFlowDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFlowDefinition -> DescribeFlowDefinition -> Bool
$c/= :: DescribeFlowDefinition -> DescribeFlowDefinition -> Bool
== :: DescribeFlowDefinition -> DescribeFlowDefinition -> Bool
$c== :: DescribeFlowDefinition -> DescribeFlowDefinition -> Bool
Prelude.Eq, ReadPrec [DescribeFlowDefinition]
ReadPrec DescribeFlowDefinition
Int -> ReadS DescribeFlowDefinition
ReadS [DescribeFlowDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFlowDefinition]
$creadListPrec :: ReadPrec [DescribeFlowDefinition]
readPrec :: ReadPrec DescribeFlowDefinition
$creadPrec :: ReadPrec DescribeFlowDefinition
readList :: ReadS [DescribeFlowDefinition]
$creadList :: ReadS [DescribeFlowDefinition]
readsPrec :: Int -> ReadS DescribeFlowDefinition
$creadsPrec :: Int -> ReadS DescribeFlowDefinition
Prelude.Read, Int -> DescribeFlowDefinition -> ShowS
[DescribeFlowDefinition] -> ShowS
DescribeFlowDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFlowDefinition] -> ShowS
$cshowList :: [DescribeFlowDefinition] -> ShowS
show :: DescribeFlowDefinition -> String
$cshow :: DescribeFlowDefinition -> String
showsPrec :: Int -> DescribeFlowDefinition -> ShowS
$cshowsPrec :: Int -> DescribeFlowDefinition -> ShowS
Prelude.Show, forall x. Rep DescribeFlowDefinition x -> DescribeFlowDefinition
forall x. DescribeFlowDefinition -> Rep DescribeFlowDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeFlowDefinition x -> DescribeFlowDefinition
$cfrom :: forall x. DescribeFlowDefinition -> Rep DescribeFlowDefinition x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFlowDefinition' 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:
--
-- 'flowDefinitionName', 'describeFlowDefinition_flowDefinitionName' - The name of the flow definition.
newDescribeFlowDefinition ::
  -- | 'flowDefinitionName'
  Prelude.Text ->
  DescribeFlowDefinition
newDescribeFlowDefinition :: Text -> DescribeFlowDefinition
newDescribeFlowDefinition Text
pFlowDefinitionName_ =
  DescribeFlowDefinition'
    { $sel:flowDefinitionName:DescribeFlowDefinition' :: Text
flowDefinitionName =
        Text
pFlowDefinitionName_
    }

-- | The name of the flow definition.
describeFlowDefinition_flowDefinitionName :: Lens.Lens' DescribeFlowDefinition Prelude.Text
describeFlowDefinition_flowDefinitionName :: Lens' DescribeFlowDefinition Text
describeFlowDefinition_flowDefinitionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinition' {Text
flowDefinitionName :: Text
$sel:flowDefinitionName:DescribeFlowDefinition' :: DescribeFlowDefinition -> Text
flowDefinitionName} -> Text
flowDefinitionName) (\s :: DescribeFlowDefinition
s@DescribeFlowDefinition' {} Text
a -> DescribeFlowDefinition
s {$sel:flowDefinitionName:DescribeFlowDefinition' :: Text
flowDefinitionName = Text
a} :: DescribeFlowDefinition)

instance Core.AWSRequest DescribeFlowDefinition where
  type
    AWSResponse DescribeFlowDefinition =
      DescribeFlowDefinitionResponse
  request :: (Service -> Service)
-> DescribeFlowDefinition -> Request DescribeFlowDefinition
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 DescribeFlowDefinition
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeFlowDefinition)))
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 HumanLoopActivationConfig
-> Maybe HumanLoopRequestSource
-> Int
-> Text
-> Text
-> FlowDefinitionStatus
-> POSIX
-> HumanLoopConfig
-> FlowDefinitionOutputConfig
-> Text
-> DescribeFlowDefinitionResponse
DescribeFlowDefinitionResponse'
            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
"FailureReason")
            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
"HumanLoopActivationConfig")
            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
"HumanLoopRequestSource")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"FlowDefinitionArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"FlowDefinitionName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"FlowDefinitionStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"CreationTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"HumanLoopConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"OutputConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"RoleArn")
      )

instance Prelude.Hashable DescribeFlowDefinition where
  hashWithSalt :: Int -> DescribeFlowDefinition -> Int
hashWithSalt Int
_salt DescribeFlowDefinition' {Text
flowDefinitionName :: Text
$sel:flowDefinitionName:DescribeFlowDefinition' :: DescribeFlowDefinition -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
flowDefinitionName

instance Prelude.NFData DescribeFlowDefinition where
  rnf :: DescribeFlowDefinition -> ()
rnf DescribeFlowDefinition' {Text
flowDefinitionName :: Text
$sel:flowDefinitionName:DescribeFlowDefinition' :: DescribeFlowDefinition -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
flowDefinitionName

instance Data.ToHeaders DescribeFlowDefinition where
  toHeaders :: DescribeFlowDefinition -> 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
"SageMaker.DescribeFlowDefinition" ::
                          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 DescribeFlowDefinition where
  toJSON :: DescribeFlowDefinition -> Value
toJSON DescribeFlowDefinition' {Text
flowDefinitionName :: Text
$sel:flowDefinitionName:DescribeFlowDefinition' :: DescribeFlowDefinition -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"FlowDefinitionName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
flowDefinitionName)
          ]
      )

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

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

-- | /See:/ 'newDescribeFlowDefinitionResponse' smart constructor.
data DescribeFlowDefinitionResponse = DescribeFlowDefinitionResponse'
  { -- | The reason your flow definition failed.
    DescribeFlowDefinitionResponse -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | An object containing information about what triggers a human review
    -- workflow.
    DescribeFlowDefinitionResponse -> Maybe HumanLoopActivationConfig
humanLoopActivationConfig :: Prelude.Maybe HumanLoopActivationConfig,
    -- | Container for configuring the source of human task requests. Used to
    -- specify if Amazon Rekognition or Amazon Textract is used as an
    -- integration source.
    DescribeFlowDefinitionResponse -> Maybe HumanLoopRequestSource
humanLoopRequestSource :: Prelude.Maybe HumanLoopRequestSource,
    -- | The response's http status code.
    DescribeFlowDefinitionResponse -> Int
httpStatus :: Prelude.Int,
    -- | The Amazon Resource Name (ARN) of the flow defintion.
    DescribeFlowDefinitionResponse -> Text
flowDefinitionArn :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the flow definition.
    DescribeFlowDefinitionResponse -> Text
flowDefinitionName :: Prelude.Text,
    -- | The status of the flow definition. Valid values are listed below.
    DescribeFlowDefinitionResponse -> FlowDefinitionStatus
flowDefinitionStatus :: FlowDefinitionStatus,
    -- | The timestamp when the flow definition was created.
    DescribeFlowDefinitionResponse -> POSIX
creationTime :: Data.POSIX,
    -- | An object containing information about who works on the task, the
    -- workforce task price, and other task details.
    DescribeFlowDefinitionResponse -> HumanLoopConfig
humanLoopConfig :: HumanLoopConfig,
    -- | An object containing information about the output file.
    DescribeFlowDefinitionResponse -> FlowDefinitionOutputConfig
outputConfig :: FlowDefinitionOutputConfig,
    -- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
    -- Access Management (IAM) execution role for the flow definition.
    DescribeFlowDefinitionResponse -> Text
roleArn :: Prelude.Text
  }
  deriving (DescribeFlowDefinitionResponse
-> DescribeFlowDefinitionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFlowDefinitionResponse
-> DescribeFlowDefinitionResponse -> Bool
$c/= :: DescribeFlowDefinitionResponse
-> DescribeFlowDefinitionResponse -> Bool
== :: DescribeFlowDefinitionResponse
-> DescribeFlowDefinitionResponse -> Bool
$c== :: DescribeFlowDefinitionResponse
-> DescribeFlowDefinitionResponse -> Bool
Prelude.Eq, ReadPrec [DescribeFlowDefinitionResponse]
ReadPrec DescribeFlowDefinitionResponse
Int -> ReadS DescribeFlowDefinitionResponse
ReadS [DescribeFlowDefinitionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFlowDefinitionResponse]
$creadListPrec :: ReadPrec [DescribeFlowDefinitionResponse]
readPrec :: ReadPrec DescribeFlowDefinitionResponse
$creadPrec :: ReadPrec DescribeFlowDefinitionResponse
readList :: ReadS [DescribeFlowDefinitionResponse]
$creadList :: ReadS [DescribeFlowDefinitionResponse]
readsPrec :: Int -> ReadS DescribeFlowDefinitionResponse
$creadsPrec :: Int -> ReadS DescribeFlowDefinitionResponse
Prelude.Read, Int -> DescribeFlowDefinitionResponse -> ShowS
[DescribeFlowDefinitionResponse] -> ShowS
DescribeFlowDefinitionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFlowDefinitionResponse] -> ShowS
$cshowList :: [DescribeFlowDefinitionResponse] -> ShowS
show :: DescribeFlowDefinitionResponse -> String
$cshow :: DescribeFlowDefinitionResponse -> String
showsPrec :: Int -> DescribeFlowDefinitionResponse -> ShowS
$cshowsPrec :: Int -> DescribeFlowDefinitionResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeFlowDefinitionResponse x
-> DescribeFlowDefinitionResponse
forall x.
DescribeFlowDefinitionResponse
-> Rep DescribeFlowDefinitionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeFlowDefinitionResponse x
-> DescribeFlowDefinitionResponse
$cfrom :: forall x.
DescribeFlowDefinitionResponse
-> Rep DescribeFlowDefinitionResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFlowDefinitionResponse' 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:
--
-- 'failureReason', 'describeFlowDefinitionResponse_failureReason' - The reason your flow definition failed.
--
-- 'humanLoopActivationConfig', 'describeFlowDefinitionResponse_humanLoopActivationConfig' - An object containing information about what triggers a human review
-- workflow.
--
-- 'humanLoopRequestSource', 'describeFlowDefinitionResponse_humanLoopRequestSource' - Container for configuring the source of human task requests. Used to
-- specify if Amazon Rekognition or Amazon Textract is used as an
-- integration source.
--
-- 'httpStatus', 'describeFlowDefinitionResponse_httpStatus' - The response's http status code.
--
-- 'flowDefinitionArn', 'describeFlowDefinitionResponse_flowDefinitionArn' - The Amazon Resource Name (ARN) of the flow defintion.
--
-- 'flowDefinitionName', 'describeFlowDefinitionResponse_flowDefinitionName' - The Amazon Resource Name (ARN) of the flow definition.
--
-- 'flowDefinitionStatus', 'describeFlowDefinitionResponse_flowDefinitionStatus' - The status of the flow definition. Valid values are listed below.
--
-- 'creationTime', 'describeFlowDefinitionResponse_creationTime' - The timestamp when the flow definition was created.
--
-- 'humanLoopConfig', 'describeFlowDefinitionResponse_humanLoopConfig' - An object containing information about who works on the task, the
-- workforce task price, and other task details.
--
-- 'outputConfig', 'describeFlowDefinitionResponse_outputConfig' - An object containing information about the output file.
--
-- 'roleArn', 'describeFlowDefinitionResponse_roleArn' - The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
-- Access Management (IAM) execution role for the flow definition.
newDescribeFlowDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'flowDefinitionArn'
  Prelude.Text ->
  -- | 'flowDefinitionName'
  Prelude.Text ->
  -- | 'flowDefinitionStatus'
  FlowDefinitionStatus ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'humanLoopConfig'
  HumanLoopConfig ->
  -- | 'outputConfig'
  FlowDefinitionOutputConfig ->
  -- | 'roleArn'
  Prelude.Text ->
  DescribeFlowDefinitionResponse
newDescribeFlowDefinitionResponse :: Int
-> Text
-> Text
-> FlowDefinitionStatus
-> UTCTime
-> HumanLoopConfig
-> FlowDefinitionOutputConfig
-> Text
-> DescribeFlowDefinitionResponse
newDescribeFlowDefinitionResponse
  Int
pHttpStatus_
  Text
pFlowDefinitionArn_
  Text
pFlowDefinitionName_
  FlowDefinitionStatus
pFlowDefinitionStatus_
  UTCTime
pCreationTime_
  HumanLoopConfig
pHumanLoopConfig_
  FlowDefinitionOutputConfig
pOutputConfig_
  Text
pRoleArn_ =
    DescribeFlowDefinitionResponse'
      { $sel:failureReason:DescribeFlowDefinitionResponse' :: Maybe Text
failureReason =
          forall a. Maybe a
Prelude.Nothing,
        $sel:humanLoopActivationConfig:DescribeFlowDefinitionResponse' :: Maybe HumanLoopActivationConfig
humanLoopActivationConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:humanLoopRequestSource:DescribeFlowDefinitionResponse' :: Maybe HumanLoopRequestSource
humanLoopRequestSource = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeFlowDefinitionResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:flowDefinitionArn:DescribeFlowDefinitionResponse' :: Text
flowDefinitionArn = Text
pFlowDefinitionArn_,
        $sel:flowDefinitionName:DescribeFlowDefinitionResponse' :: Text
flowDefinitionName = Text
pFlowDefinitionName_,
        $sel:flowDefinitionStatus:DescribeFlowDefinitionResponse' :: FlowDefinitionStatus
flowDefinitionStatus =
          FlowDefinitionStatus
pFlowDefinitionStatus_,
        $sel:creationTime:DescribeFlowDefinitionResponse' :: POSIX
creationTime =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreationTime_,
        $sel:humanLoopConfig:DescribeFlowDefinitionResponse' :: HumanLoopConfig
humanLoopConfig = HumanLoopConfig
pHumanLoopConfig_,
        $sel:outputConfig:DescribeFlowDefinitionResponse' :: FlowDefinitionOutputConfig
outputConfig = FlowDefinitionOutputConfig
pOutputConfig_,
        $sel:roleArn:DescribeFlowDefinitionResponse' :: Text
roleArn = Text
pRoleArn_
      }

-- | The reason your flow definition failed.
describeFlowDefinitionResponse_failureReason :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe Prelude.Text)
describeFlowDefinitionResponse_failureReason :: Lens' DescribeFlowDefinitionResponse (Maybe Text)
describeFlowDefinitionResponse_failureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Maybe Text
a -> DescribeFlowDefinitionResponse
s {$sel:failureReason:DescribeFlowDefinitionResponse' :: Maybe Text
failureReason = Maybe Text
a} :: DescribeFlowDefinitionResponse)

-- | An object containing information about what triggers a human review
-- workflow.
describeFlowDefinitionResponse_humanLoopActivationConfig :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe HumanLoopActivationConfig)
describeFlowDefinitionResponse_humanLoopActivationConfig :: Lens'
  DescribeFlowDefinitionResponse (Maybe HumanLoopActivationConfig)
describeFlowDefinitionResponse_humanLoopActivationConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Maybe HumanLoopActivationConfig
humanLoopActivationConfig :: Maybe HumanLoopActivationConfig
$sel:humanLoopActivationConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe HumanLoopActivationConfig
humanLoopActivationConfig} -> Maybe HumanLoopActivationConfig
humanLoopActivationConfig) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Maybe HumanLoopActivationConfig
a -> DescribeFlowDefinitionResponse
s {$sel:humanLoopActivationConfig:DescribeFlowDefinitionResponse' :: Maybe HumanLoopActivationConfig
humanLoopActivationConfig = Maybe HumanLoopActivationConfig
a} :: DescribeFlowDefinitionResponse)

-- | Container for configuring the source of human task requests. Used to
-- specify if Amazon Rekognition or Amazon Textract is used as an
-- integration source.
describeFlowDefinitionResponse_humanLoopRequestSource :: Lens.Lens' DescribeFlowDefinitionResponse (Prelude.Maybe HumanLoopRequestSource)
describeFlowDefinitionResponse_humanLoopRequestSource :: Lens' DescribeFlowDefinitionResponse (Maybe HumanLoopRequestSource)
describeFlowDefinitionResponse_humanLoopRequestSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Maybe HumanLoopRequestSource
humanLoopRequestSource :: Maybe HumanLoopRequestSource
$sel:humanLoopRequestSource:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe HumanLoopRequestSource
humanLoopRequestSource} -> Maybe HumanLoopRequestSource
humanLoopRequestSource) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Maybe HumanLoopRequestSource
a -> DescribeFlowDefinitionResponse
s {$sel:humanLoopRequestSource:DescribeFlowDefinitionResponse' :: Maybe HumanLoopRequestSource
humanLoopRequestSource = Maybe HumanLoopRequestSource
a} :: DescribeFlowDefinitionResponse)

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

-- | The Amazon Resource Name (ARN) of the flow defintion.
describeFlowDefinitionResponse_flowDefinitionArn :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
describeFlowDefinitionResponse_flowDefinitionArn :: Lens' DescribeFlowDefinitionResponse Text
describeFlowDefinitionResponse_flowDefinitionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Text
flowDefinitionArn :: Text
$sel:flowDefinitionArn:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
flowDefinitionArn} -> Text
flowDefinitionArn) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Text
a -> DescribeFlowDefinitionResponse
s {$sel:flowDefinitionArn:DescribeFlowDefinitionResponse' :: Text
flowDefinitionArn = Text
a} :: DescribeFlowDefinitionResponse)

-- | The Amazon Resource Name (ARN) of the flow definition.
describeFlowDefinitionResponse_flowDefinitionName :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
describeFlowDefinitionResponse_flowDefinitionName :: Lens' DescribeFlowDefinitionResponse Text
describeFlowDefinitionResponse_flowDefinitionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Text
flowDefinitionName :: Text
$sel:flowDefinitionName:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
flowDefinitionName} -> Text
flowDefinitionName) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Text
a -> DescribeFlowDefinitionResponse
s {$sel:flowDefinitionName:DescribeFlowDefinitionResponse' :: Text
flowDefinitionName = Text
a} :: DescribeFlowDefinitionResponse)

-- | The status of the flow definition. Valid values are listed below.
describeFlowDefinitionResponse_flowDefinitionStatus :: Lens.Lens' DescribeFlowDefinitionResponse FlowDefinitionStatus
describeFlowDefinitionResponse_flowDefinitionStatus :: Lens' DescribeFlowDefinitionResponse FlowDefinitionStatus
describeFlowDefinitionResponse_flowDefinitionStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {FlowDefinitionStatus
flowDefinitionStatus :: FlowDefinitionStatus
$sel:flowDefinitionStatus:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> FlowDefinitionStatus
flowDefinitionStatus} -> FlowDefinitionStatus
flowDefinitionStatus) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} FlowDefinitionStatus
a -> DescribeFlowDefinitionResponse
s {$sel:flowDefinitionStatus:DescribeFlowDefinitionResponse' :: FlowDefinitionStatus
flowDefinitionStatus = FlowDefinitionStatus
a} :: DescribeFlowDefinitionResponse)

-- | The timestamp when the flow definition was created.
describeFlowDefinitionResponse_creationTime :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.UTCTime
describeFlowDefinitionResponse_creationTime :: Lens' DescribeFlowDefinitionResponse UTCTime
describeFlowDefinitionResponse_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {POSIX
creationTime :: POSIX
$sel:creationTime:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> POSIX
creationTime} -> POSIX
creationTime) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} POSIX
a -> DescribeFlowDefinitionResponse
s {$sel:creationTime:DescribeFlowDefinitionResponse' :: POSIX
creationTime = POSIX
a} :: DescribeFlowDefinitionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | An object containing information about who works on the task, the
-- workforce task price, and other task details.
describeFlowDefinitionResponse_humanLoopConfig :: Lens.Lens' DescribeFlowDefinitionResponse HumanLoopConfig
describeFlowDefinitionResponse_humanLoopConfig :: Lens' DescribeFlowDefinitionResponse HumanLoopConfig
describeFlowDefinitionResponse_humanLoopConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {HumanLoopConfig
humanLoopConfig :: HumanLoopConfig
$sel:humanLoopConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> HumanLoopConfig
humanLoopConfig} -> HumanLoopConfig
humanLoopConfig) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} HumanLoopConfig
a -> DescribeFlowDefinitionResponse
s {$sel:humanLoopConfig:DescribeFlowDefinitionResponse' :: HumanLoopConfig
humanLoopConfig = HumanLoopConfig
a} :: DescribeFlowDefinitionResponse)

-- | An object containing information about the output file.
describeFlowDefinitionResponse_outputConfig :: Lens.Lens' DescribeFlowDefinitionResponse FlowDefinitionOutputConfig
describeFlowDefinitionResponse_outputConfig :: Lens' DescribeFlowDefinitionResponse FlowDefinitionOutputConfig
describeFlowDefinitionResponse_outputConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {FlowDefinitionOutputConfig
outputConfig :: FlowDefinitionOutputConfig
$sel:outputConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> FlowDefinitionOutputConfig
outputConfig} -> FlowDefinitionOutputConfig
outputConfig) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} FlowDefinitionOutputConfig
a -> DescribeFlowDefinitionResponse
s {$sel:outputConfig:DescribeFlowDefinitionResponse' :: FlowDefinitionOutputConfig
outputConfig = FlowDefinitionOutputConfig
a} :: DescribeFlowDefinitionResponse)

-- | The Amazon Resource Name (ARN) of the Amazon Web Services Identity and
-- Access Management (IAM) execution role for the flow definition.
describeFlowDefinitionResponse_roleArn :: Lens.Lens' DescribeFlowDefinitionResponse Prelude.Text
describeFlowDefinitionResponse_roleArn :: Lens' DescribeFlowDefinitionResponse Text
describeFlowDefinitionResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFlowDefinitionResponse' {Text
roleArn :: Text
$sel:roleArn:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
roleArn} -> Text
roleArn) (\s :: DescribeFlowDefinitionResponse
s@DescribeFlowDefinitionResponse' {} Text
a -> DescribeFlowDefinitionResponse
s {$sel:roleArn:DescribeFlowDefinitionResponse' :: Text
roleArn = Text
a} :: DescribeFlowDefinitionResponse)

instance
  Prelude.NFData
    DescribeFlowDefinitionResponse
  where
  rnf :: DescribeFlowDefinitionResponse -> ()
rnf DescribeFlowDefinitionResponse' {Int
Maybe Text
Maybe HumanLoopActivationConfig
Maybe HumanLoopRequestSource
Text
POSIX
FlowDefinitionOutputConfig
FlowDefinitionStatus
HumanLoopConfig
roleArn :: Text
outputConfig :: FlowDefinitionOutputConfig
humanLoopConfig :: HumanLoopConfig
creationTime :: POSIX
flowDefinitionStatus :: FlowDefinitionStatus
flowDefinitionName :: Text
flowDefinitionArn :: Text
httpStatus :: Int
humanLoopRequestSource :: Maybe HumanLoopRequestSource
humanLoopActivationConfig :: Maybe HumanLoopActivationConfig
failureReason :: Maybe Text
$sel:roleArn:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
$sel:outputConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> FlowDefinitionOutputConfig
$sel:humanLoopConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> HumanLoopConfig
$sel:creationTime:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> POSIX
$sel:flowDefinitionStatus:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> FlowDefinitionStatus
$sel:flowDefinitionName:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
$sel:flowDefinitionArn:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Text
$sel:httpStatus:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Int
$sel:humanLoopRequestSource:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe HumanLoopRequestSource
$sel:humanLoopActivationConfig:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe HumanLoopActivationConfig
$sel:failureReason:DescribeFlowDefinitionResponse' :: DescribeFlowDefinitionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
failureReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HumanLoopActivationConfig
humanLoopActivationConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HumanLoopRequestSource
humanLoopRequestSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
flowDefinitionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
flowDefinitionName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FlowDefinitionStatus
flowDefinitionStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HumanLoopConfig
humanLoopConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FlowDefinitionOutputConfig
outputConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleArn