{-# 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.Connect.DescribeVocabulary
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the specified vocabulary.
module Amazonka.Connect.DescribeVocabulary
  ( -- * Creating a Request
    DescribeVocabulary (..),
    newDescribeVocabulary,

    -- * Request Lenses
    describeVocabulary_instanceId,
    describeVocabulary_vocabularyId,

    -- * Destructuring the Response
    DescribeVocabularyResponse (..),
    newDescribeVocabularyResponse,

    -- * Response Lenses
    describeVocabularyResponse_httpStatus,
    describeVocabularyResponse_vocabulary,
  )
where

import Amazonka.Connect.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:/ 'newDescribeVocabulary' smart constructor.
data DescribeVocabulary = DescribeVocabulary'
  { -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    DescribeVocabulary -> Text
instanceId :: Prelude.Text,
    -- | The identifier of the custom vocabulary.
    DescribeVocabulary -> Text
vocabularyId :: Prelude.Text
  }
  deriving (DescribeVocabulary -> DescribeVocabulary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeVocabulary -> DescribeVocabulary -> Bool
$c/= :: DescribeVocabulary -> DescribeVocabulary -> Bool
== :: DescribeVocabulary -> DescribeVocabulary -> Bool
$c== :: DescribeVocabulary -> DescribeVocabulary -> Bool
Prelude.Eq, ReadPrec [DescribeVocabulary]
ReadPrec DescribeVocabulary
Int -> ReadS DescribeVocabulary
ReadS [DescribeVocabulary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeVocabulary]
$creadListPrec :: ReadPrec [DescribeVocabulary]
readPrec :: ReadPrec DescribeVocabulary
$creadPrec :: ReadPrec DescribeVocabulary
readList :: ReadS [DescribeVocabulary]
$creadList :: ReadS [DescribeVocabulary]
readsPrec :: Int -> ReadS DescribeVocabulary
$creadsPrec :: Int -> ReadS DescribeVocabulary
Prelude.Read, Int -> DescribeVocabulary -> ShowS
[DescribeVocabulary] -> ShowS
DescribeVocabulary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeVocabulary] -> ShowS
$cshowList :: [DescribeVocabulary] -> ShowS
show :: DescribeVocabulary -> String
$cshow :: DescribeVocabulary -> String
showsPrec :: Int -> DescribeVocabulary -> ShowS
$cshowsPrec :: Int -> DescribeVocabulary -> ShowS
Prelude.Show, forall x. Rep DescribeVocabulary x -> DescribeVocabulary
forall x. DescribeVocabulary -> Rep DescribeVocabulary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeVocabulary x -> DescribeVocabulary
$cfrom :: forall x. DescribeVocabulary -> Rep DescribeVocabulary x
Prelude.Generic)

-- |
-- Create a value of 'DescribeVocabulary' 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:
--
-- 'instanceId', 'describeVocabulary_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
--
-- 'vocabularyId', 'describeVocabulary_vocabularyId' - The identifier of the custom vocabulary.
newDescribeVocabulary ::
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'vocabularyId'
  Prelude.Text ->
  DescribeVocabulary
newDescribeVocabulary :: Text -> Text -> DescribeVocabulary
newDescribeVocabulary Text
pInstanceId_ Text
pVocabularyId_ =
  DescribeVocabulary'
    { $sel:instanceId:DescribeVocabulary' :: Text
instanceId = Text
pInstanceId_,
      $sel:vocabularyId:DescribeVocabulary' :: Text
vocabularyId = Text
pVocabularyId_
    }

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
describeVocabulary_instanceId :: Lens.Lens' DescribeVocabulary Prelude.Text
describeVocabulary_instanceId :: Lens' DescribeVocabulary Text
describeVocabulary_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeVocabulary' {Text
instanceId :: Text
$sel:instanceId:DescribeVocabulary' :: DescribeVocabulary -> Text
instanceId} -> Text
instanceId) (\s :: DescribeVocabulary
s@DescribeVocabulary' {} Text
a -> DescribeVocabulary
s {$sel:instanceId:DescribeVocabulary' :: Text
instanceId = Text
a} :: DescribeVocabulary)

-- | The identifier of the custom vocabulary.
describeVocabulary_vocabularyId :: Lens.Lens' DescribeVocabulary Prelude.Text
describeVocabulary_vocabularyId :: Lens' DescribeVocabulary Text
describeVocabulary_vocabularyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeVocabulary' {Text
vocabularyId :: Text
$sel:vocabularyId:DescribeVocabulary' :: DescribeVocabulary -> Text
vocabularyId} -> Text
vocabularyId) (\s :: DescribeVocabulary
s@DescribeVocabulary' {} Text
a -> DescribeVocabulary
s {$sel:vocabularyId:DescribeVocabulary' :: Text
vocabularyId = Text
a} :: DescribeVocabulary)

instance Core.AWSRequest DescribeVocabulary where
  type
    AWSResponse DescribeVocabulary =
      DescribeVocabularyResponse
  request :: (Service -> Service)
-> DescribeVocabulary -> Request DescribeVocabulary
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeVocabulary
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeVocabulary)))
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 ->
          Int -> Vocabulary -> DescribeVocabularyResponse
DescribeVocabularyResponse'
            forall (f :: * -> *) a b. Functor 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
"Vocabulary")
      )

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

instance Prelude.NFData DescribeVocabulary where
  rnf :: DescribeVocabulary -> ()
rnf DescribeVocabulary' {Text
vocabularyId :: Text
instanceId :: Text
$sel:vocabularyId:DescribeVocabulary' :: DescribeVocabulary -> Text
$sel:instanceId:DescribeVocabulary' :: DescribeVocabulary -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
vocabularyId

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

instance Data.ToPath DescribeVocabulary where
  toPath :: DescribeVocabulary -> ByteString
toPath DescribeVocabulary' {Text
vocabularyId :: Text
instanceId :: Text
$sel:vocabularyId:DescribeVocabulary' :: DescribeVocabulary -> Text
$sel:instanceId:DescribeVocabulary' :: DescribeVocabulary -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/vocabulary/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
instanceId,
        ByteString
"/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
vocabularyId
      ]

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

-- | /See:/ 'newDescribeVocabularyResponse' smart constructor.
data DescribeVocabularyResponse = DescribeVocabularyResponse'
  { -- | The response's http status code.
    DescribeVocabularyResponse -> Int
httpStatus :: Prelude.Int,
    -- | A list of specific words that you want Contact Lens for Amazon Connect
    -- to recognize in your audio input. They are generally domain-specific
    -- words and phrases, words that Contact Lens is not recognizing, or proper
    -- nouns.
    DescribeVocabularyResponse -> Vocabulary
vocabulary :: Vocabulary
  }
  deriving (DescribeVocabularyResponse -> DescribeVocabularyResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeVocabularyResponse -> DescribeVocabularyResponse -> Bool
$c/= :: DescribeVocabularyResponse -> DescribeVocabularyResponse -> Bool
== :: DescribeVocabularyResponse -> DescribeVocabularyResponse -> Bool
$c== :: DescribeVocabularyResponse -> DescribeVocabularyResponse -> Bool
Prelude.Eq, ReadPrec [DescribeVocabularyResponse]
ReadPrec DescribeVocabularyResponse
Int -> ReadS DescribeVocabularyResponse
ReadS [DescribeVocabularyResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeVocabularyResponse]
$creadListPrec :: ReadPrec [DescribeVocabularyResponse]
readPrec :: ReadPrec DescribeVocabularyResponse
$creadPrec :: ReadPrec DescribeVocabularyResponse
readList :: ReadS [DescribeVocabularyResponse]
$creadList :: ReadS [DescribeVocabularyResponse]
readsPrec :: Int -> ReadS DescribeVocabularyResponse
$creadsPrec :: Int -> ReadS DescribeVocabularyResponse
Prelude.Read, Int -> DescribeVocabularyResponse -> ShowS
[DescribeVocabularyResponse] -> ShowS
DescribeVocabularyResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeVocabularyResponse] -> ShowS
$cshowList :: [DescribeVocabularyResponse] -> ShowS
show :: DescribeVocabularyResponse -> String
$cshow :: DescribeVocabularyResponse -> String
showsPrec :: Int -> DescribeVocabularyResponse -> ShowS
$cshowsPrec :: Int -> DescribeVocabularyResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeVocabularyResponse x -> DescribeVocabularyResponse
forall x.
DescribeVocabularyResponse -> Rep DescribeVocabularyResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeVocabularyResponse x -> DescribeVocabularyResponse
$cfrom :: forall x.
DescribeVocabularyResponse -> Rep DescribeVocabularyResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeVocabularyResponse' 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:
--
-- 'httpStatus', 'describeVocabularyResponse_httpStatus' - The response's http status code.
--
-- 'vocabulary', 'describeVocabularyResponse_vocabulary' - A list of specific words that you want Contact Lens for Amazon Connect
-- to recognize in your audio input. They are generally domain-specific
-- words and phrases, words that Contact Lens is not recognizing, or proper
-- nouns.
newDescribeVocabularyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'vocabulary'
  Vocabulary ->
  DescribeVocabularyResponse
newDescribeVocabularyResponse :: Int -> Vocabulary -> DescribeVocabularyResponse
newDescribeVocabularyResponse
  Int
pHttpStatus_
  Vocabulary
pVocabulary_ =
    DescribeVocabularyResponse'
      { $sel:httpStatus:DescribeVocabularyResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:vocabulary:DescribeVocabularyResponse' :: Vocabulary
vocabulary = Vocabulary
pVocabulary_
      }

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

-- | A list of specific words that you want Contact Lens for Amazon Connect
-- to recognize in your audio input. They are generally domain-specific
-- words and phrases, words that Contact Lens is not recognizing, or proper
-- nouns.
describeVocabularyResponse_vocabulary :: Lens.Lens' DescribeVocabularyResponse Vocabulary
describeVocabularyResponse_vocabulary :: Lens' DescribeVocabularyResponse Vocabulary
describeVocabularyResponse_vocabulary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeVocabularyResponse' {Vocabulary
vocabulary :: Vocabulary
$sel:vocabulary:DescribeVocabularyResponse' :: DescribeVocabularyResponse -> Vocabulary
vocabulary} -> Vocabulary
vocabulary) (\s :: DescribeVocabularyResponse
s@DescribeVocabularyResponse' {} Vocabulary
a -> DescribeVocabularyResponse
s {$sel:vocabulary:DescribeVocabularyResponse' :: Vocabulary
vocabulary = Vocabulary
a} :: DescribeVocabularyResponse)

instance Prelude.NFData DescribeVocabularyResponse where
  rnf :: DescribeVocabularyResponse -> ()
rnf DescribeVocabularyResponse' {Int
Vocabulary
vocabulary :: Vocabulary
httpStatus :: Int
$sel:vocabulary:DescribeVocabularyResponse' :: DescribeVocabularyResponse -> Vocabulary
$sel:httpStatus:DescribeVocabularyResponse' :: DescribeVocabularyResponse -> Int
..} =
    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 Vocabulary
vocabulary