{-# 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.Comprehend.DescribePiiEntitiesDetectionJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the properties associated with a PII entities detection job. For
-- example, you can use this operation to get the job status.
module Amazonka.Comprehend.DescribePiiEntitiesDetectionJob
  ( -- * Creating a Request
    DescribePiiEntitiesDetectionJob (..),
    newDescribePiiEntitiesDetectionJob,

    -- * Request Lenses
    describePiiEntitiesDetectionJob_jobId,

    -- * Destructuring the Response
    DescribePiiEntitiesDetectionJobResponse (..),
    newDescribePiiEntitiesDetectionJobResponse,

    -- * Response Lenses
    describePiiEntitiesDetectionJobResponse_piiEntitiesDetectionJobProperties,
    describePiiEntitiesDetectionJobResponse_httpStatus,
  )
where

import Amazonka.Comprehend.Types
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

-- | /See:/ 'newDescribePiiEntitiesDetectionJob' smart constructor.
data DescribePiiEntitiesDetectionJob = DescribePiiEntitiesDetectionJob'
  { -- | The identifier that Amazon Comprehend generated for the job. The
    -- operation returns this identifier in its response.
    DescribePiiEntitiesDetectionJob -> Text
jobId :: Prelude.Text
  }
  deriving (DescribePiiEntitiesDetectionJob
-> DescribePiiEntitiesDetectionJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribePiiEntitiesDetectionJob
-> DescribePiiEntitiesDetectionJob -> Bool
$c/= :: DescribePiiEntitiesDetectionJob
-> DescribePiiEntitiesDetectionJob -> Bool
== :: DescribePiiEntitiesDetectionJob
-> DescribePiiEntitiesDetectionJob -> Bool
$c== :: DescribePiiEntitiesDetectionJob
-> DescribePiiEntitiesDetectionJob -> Bool
Prelude.Eq, ReadPrec [DescribePiiEntitiesDetectionJob]
ReadPrec DescribePiiEntitiesDetectionJob
Int -> ReadS DescribePiiEntitiesDetectionJob
ReadS [DescribePiiEntitiesDetectionJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribePiiEntitiesDetectionJob]
$creadListPrec :: ReadPrec [DescribePiiEntitiesDetectionJob]
readPrec :: ReadPrec DescribePiiEntitiesDetectionJob
$creadPrec :: ReadPrec DescribePiiEntitiesDetectionJob
readList :: ReadS [DescribePiiEntitiesDetectionJob]
$creadList :: ReadS [DescribePiiEntitiesDetectionJob]
readsPrec :: Int -> ReadS DescribePiiEntitiesDetectionJob
$creadsPrec :: Int -> ReadS DescribePiiEntitiesDetectionJob
Prelude.Read, Int -> DescribePiiEntitiesDetectionJob -> ShowS
[DescribePiiEntitiesDetectionJob] -> ShowS
DescribePiiEntitiesDetectionJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribePiiEntitiesDetectionJob] -> ShowS
$cshowList :: [DescribePiiEntitiesDetectionJob] -> ShowS
show :: DescribePiiEntitiesDetectionJob -> String
$cshow :: DescribePiiEntitiesDetectionJob -> String
showsPrec :: Int -> DescribePiiEntitiesDetectionJob -> ShowS
$cshowsPrec :: Int -> DescribePiiEntitiesDetectionJob -> ShowS
Prelude.Show, forall x.
Rep DescribePiiEntitiesDetectionJob x
-> DescribePiiEntitiesDetectionJob
forall x.
DescribePiiEntitiesDetectionJob
-> Rep DescribePiiEntitiesDetectionJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribePiiEntitiesDetectionJob x
-> DescribePiiEntitiesDetectionJob
$cfrom :: forall x.
DescribePiiEntitiesDetectionJob
-> Rep DescribePiiEntitiesDetectionJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribePiiEntitiesDetectionJob' 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:
--
-- 'jobId', 'describePiiEntitiesDetectionJob_jobId' - The identifier that Amazon Comprehend generated for the job. The
-- operation returns this identifier in its response.
newDescribePiiEntitiesDetectionJob ::
  -- | 'jobId'
  Prelude.Text ->
  DescribePiiEntitiesDetectionJob
newDescribePiiEntitiesDetectionJob :: Text -> DescribePiiEntitiesDetectionJob
newDescribePiiEntitiesDetectionJob Text
pJobId_ =
  DescribePiiEntitiesDetectionJob' {$sel:jobId:DescribePiiEntitiesDetectionJob' :: Text
jobId = Text
pJobId_}

-- | The identifier that Amazon Comprehend generated for the job. The
-- operation returns this identifier in its response.
describePiiEntitiesDetectionJob_jobId :: Lens.Lens' DescribePiiEntitiesDetectionJob Prelude.Text
describePiiEntitiesDetectionJob_jobId :: Lens' DescribePiiEntitiesDetectionJob Text
describePiiEntitiesDetectionJob_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePiiEntitiesDetectionJob' {Text
jobId :: Text
$sel:jobId:DescribePiiEntitiesDetectionJob' :: DescribePiiEntitiesDetectionJob -> Text
jobId} -> Text
jobId) (\s :: DescribePiiEntitiesDetectionJob
s@DescribePiiEntitiesDetectionJob' {} Text
a -> DescribePiiEntitiesDetectionJob
s {$sel:jobId:DescribePiiEntitiesDetectionJob' :: Text
jobId = Text
a} :: DescribePiiEntitiesDetectionJob)

instance
  Core.AWSRequest
    DescribePiiEntitiesDetectionJob
  where
  type
    AWSResponse DescribePiiEntitiesDetectionJob =
      DescribePiiEntitiesDetectionJobResponse
  request :: (Service -> Service)
-> DescribePiiEntitiesDetectionJob
-> Request DescribePiiEntitiesDetectionJob
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 DescribePiiEntitiesDetectionJob
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribePiiEntitiesDetectionJob)))
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 PiiEntitiesDetectionJobProperties
-> Int -> DescribePiiEntitiesDetectionJobResponse
DescribePiiEntitiesDetectionJobResponse'
            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
"PiiEntitiesDetectionJobProperties")
            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
    DescribePiiEntitiesDetectionJob
  where
  hashWithSalt :: Int -> DescribePiiEntitiesDetectionJob -> Int
hashWithSalt
    Int
_salt
    DescribePiiEntitiesDetectionJob' {Text
jobId :: Text
$sel:jobId:DescribePiiEntitiesDetectionJob' :: DescribePiiEntitiesDetectionJob -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobId

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

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

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

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

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

-- |
-- Create a value of 'DescribePiiEntitiesDetectionJobResponse' 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:
--
-- 'piiEntitiesDetectionJobProperties', 'describePiiEntitiesDetectionJobResponse_piiEntitiesDetectionJobProperties' - Undocumented member.
--
-- 'httpStatus', 'describePiiEntitiesDetectionJobResponse_httpStatus' - The response's http status code.
newDescribePiiEntitiesDetectionJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribePiiEntitiesDetectionJobResponse
newDescribePiiEntitiesDetectionJobResponse :: Int -> DescribePiiEntitiesDetectionJobResponse
newDescribePiiEntitiesDetectionJobResponse
  Int
pHttpStatus_ =
    DescribePiiEntitiesDetectionJobResponse'
      { $sel:piiEntitiesDetectionJobProperties:DescribePiiEntitiesDetectionJobResponse' :: Maybe PiiEntitiesDetectionJobProperties
piiEntitiesDetectionJobProperties =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribePiiEntitiesDetectionJobResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Undocumented member.
describePiiEntitiesDetectionJobResponse_piiEntitiesDetectionJobProperties :: Lens.Lens' DescribePiiEntitiesDetectionJobResponse (Prelude.Maybe PiiEntitiesDetectionJobProperties)
describePiiEntitiesDetectionJobResponse_piiEntitiesDetectionJobProperties :: Lens'
  DescribePiiEntitiesDetectionJobResponse
  (Maybe PiiEntitiesDetectionJobProperties)
describePiiEntitiesDetectionJobResponse_piiEntitiesDetectionJobProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePiiEntitiesDetectionJobResponse' {Maybe PiiEntitiesDetectionJobProperties
piiEntitiesDetectionJobProperties :: Maybe PiiEntitiesDetectionJobProperties
$sel:piiEntitiesDetectionJobProperties:DescribePiiEntitiesDetectionJobResponse' :: DescribePiiEntitiesDetectionJobResponse
-> Maybe PiiEntitiesDetectionJobProperties
piiEntitiesDetectionJobProperties} -> Maybe PiiEntitiesDetectionJobProperties
piiEntitiesDetectionJobProperties) (\s :: DescribePiiEntitiesDetectionJobResponse
s@DescribePiiEntitiesDetectionJobResponse' {} Maybe PiiEntitiesDetectionJobProperties
a -> DescribePiiEntitiesDetectionJobResponse
s {$sel:piiEntitiesDetectionJobProperties:DescribePiiEntitiesDetectionJobResponse' :: Maybe PiiEntitiesDetectionJobProperties
piiEntitiesDetectionJobProperties = Maybe PiiEntitiesDetectionJobProperties
a} :: DescribePiiEntitiesDetectionJobResponse)

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

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