{-# 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.QuickSight.DescribeNamespace
-- 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 current namespace.
module Amazonka.QuickSight.DescribeNamespace
  ( -- * Creating a Request
    DescribeNamespace (..),
    newDescribeNamespace,

    -- * Request Lenses
    describeNamespace_awsAccountId,
    describeNamespace_namespace,

    -- * Destructuring the Response
    DescribeNamespaceResponse (..),
    newDescribeNamespaceResponse,

    -- * Response Lenses
    describeNamespaceResponse_namespace,
    describeNamespaceResponse_requestId,
    describeNamespaceResponse_status,
  )
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.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeNamespace' smart constructor.
data DescribeNamespace = DescribeNamespace'
  { -- | The ID for the Amazon Web Services account that contains the Amazon
    -- QuickSight namespace that you want to describe.
    DescribeNamespace -> Text
awsAccountId :: Prelude.Text,
    -- | The namespace that you want to describe.
    DescribeNamespace -> Text
namespace :: Prelude.Text
  }
  deriving (DescribeNamespace -> DescribeNamespace -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeNamespace -> DescribeNamespace -> Bool
$c/= :: DescribeNamespace -> DescribeNamespace -> Bool
== :: DescribeNamespace -> DescribeNamespace -> Bool
$c== :: DescribeNamespace -> DescribeNamespace -> Bool
Prelude.Eq, ReadPrec [DescribeNamespace]
ReadPrec DescribeNamespace
Int -> ReadS DescribeNamespace
ReadS [DescribeNamespace]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeNamespace]
$creadListPrec :: ReadPrec [DescribeNamespace]
readPrec :: ReadPrec DescribeNamespace
$creadPrec :: ReadPrec DescribeNamespace
readList :: ReadS [DescribeNamespace]
$creadList :: ReadS [DescribeNamespace]
readsPrec :: Int -> ReadS DescribeNamespace
$creadsPrec :: Int -> ReadS DescribeNamespace
Prelude.Read, Int -> DescribeNamespace -> ShowS
[DescribeNamespace] -> ShowS
DescribeNamespace -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeNamespace] -> ShowS
$cshowList :: [DescribeNamespace] -> ShowS
show :: DescribeNamespace -> String
$cshow :: DescribeNamespace -> String
showsPrec :: Int -> DescribeNamespace -> ShowS
$cshowsPrec :: Int -> DescribeNamespace -> ShowS
Prelude.Show, forall x. Rep DescribeNamespace x -> DescribeNamespace
forall x. DescribeNamespace -> Rep DescribeNamespace x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeNamespace x -> DescribeNamespace
$cfrom :: forall x. DescribeNamespace -> Rep DescribeNamespace x
Prelude.Generic)

-- |
-- Create a value of 'DescribeNamespace' 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:
--
-- 'awsAccountId', 'describeNamespace_awsAccountId' - The ID for the Amazon Web Services account that contains the Amazon
-- QuickSight namespace that you want to describe.
--
-- 'namespace', 'describeNamespace_namespace' - The namespace that you want to describe.
newDescribeNamespace ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'namespace'
  Prelude.Text ->
  DescribeNamespace
newDescribeNamespace :: Text -> Text -> DescribeNamespace
newDescribeNamespace Text
pAwsAccountId_ Text
pNamespace_ =
  DescribeNamespace'
    { $sel:awsAccountId:DescribeNamespace' :: Text
awsAccountId = Text
pAwsAccountId_,
      $sel:namespace:DescribeNamespace' :: Text
namespace = Text
pNamespace_
    }

-- | The ID for the Amazon Web Services account that contains the Amazon
-- QuickSight namespace that you want to describe.
describeNamespace_awsAccountId :: Lens.Lens' DescribeNamespace Prelude.Text
describeNamespace_awsAccountId :: Lens' DescribeNamespace Text
describeNamespace_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNamespace' {Text
awsAccountId :: Text
$sel:awsAccountId:DescribeNamespace' :: DescribeNamespace -> Text
awsAccountId} -> Text
awsAccountId) (\s :: DescribeNamespace
s@DescribeNamespace' {} Text
a -> DescribeNamespace
s {$sel:awsAccountId:DescribeNamespace' :: Text
awsAccountId = Text
a} :: DescribeNamespace)

-- | The namespace that you want to describe.
describeNamespace_namespace :: Lens.Lens' DescribeNamespace Prelude.Text
describeNamespace_namespace :: Lens' DescribeNamespace Text
describeNamespace_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNamespace' {Text
namespace :: Text
$sel:namespace:DescribeNamespace' :: DescribeNamespace -> Text
namespace} -> Text
namespace) (\s :: DescribeNamespace
s@DescribeNamespace' {} Text
a -> DescribeNamespace
s {$sel:namespace:DescribeNamespace' :: Text
namespace = Text
a} :: DescribeNamespace)

instance Core.AWSRequest DescribeNamespace where
  type
    AWSResponse DescribeNamespace =
      DescribeNamespaceResponse
  request :: (Service -> Service)
-> DescribeNamespace -> Request DescribeNamespace
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 DescribeNamespace
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeNamespace)))
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 NamespaceInfoV2
-> Maybe Text -> Int -> DescribeNamespaceResponse
DescribeNamespaceResponse'
            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
"Namespace")
            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
"RequestId")
            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 DescribeNamespace where
  hashWithSalt :: Int -> DescribeNamespace -> Int
hashWithSalt Int
_salt DescribeNamespace' {Text
namespace :: Text
awsAccountId :: Text
$sel:namespace:DescribeNamespace' :: DescribeNamespace -> Text
$sel:awsAccountId:DescribeNamespace' :: DescribeNamespace -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
namespace

instance Prelude.NFData DescribeNamespace where
  rnf :: DescribeNamespace -> ()
rnf DescribeNamespace' {Text
namespace :: Text
awsAccountId :: Text
$sel:namespace:DescribeNamespace' :: DescribeNamespace -> Text
$sel:awsAccountId:DescribeNamespace' :: DescribeNamespace -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
namespace

instance Data.ToHeaders DescribeNamespace where
  toHeaders :: DescribeNamespace -> 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.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DescribeNamespace where
  toPath :: DescribeNamespace -> ByteString
toPath DescribeNamespace' {Text
namespace :: Text
awsAccountId :: Text
$sel:namespace:DescribeNamespace' :: DescribeNamespace -> Text
$sel:awsAccountId:DescribeNamespace' :: DescribeNamespace -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/namespaces/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
namespace
      ]

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

-- | /See:/ 'newDescribeNamespaceResponse' smart constructor.
data DescribeNamespaceResponse = DescribeNamespaceResponse'
  { -- | The information about the namespace that you\'re describing. The
    -- response includes the namespace ARN, name, Amazon Web Services Region,
    -- creation status, and identity store. @DescribeNamespace@ also works for
    -- namespaces that are in the process of being created. For incomplete
    -- namespaces, this API operation lists the namespace error types and
    -- messages associated with the creation process.
    DescribeNamespaceResponse -> Maybe NamespaceInfoV2
namespace :: Prelude.Maybe NamespaceInfoV2,
    -- | The Amazon Web Services request ID for this operation.
    DescribeNamespaceResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | The HTTP status of the request.
    DescribeNamespaceResponse -> Int
status :: Prelude.Int
  }
  deriving (DescribeNamespaceResponse -> DescribeNamespaceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeNamespaceResponse -> DescribeNamespaceResponse -> Bool
$c/= :: DescribeNamespaceResponse -> DescribeNamespaceResponse -> Bool
== :: DescribeNamespaceResponse -> DescribeNamespaceResponse -> Bool
$c== :: DescribeNamespaceResponse -> DescribeNamespaceResponse -> Bool
Prelude.Eq, ReadPrec [DescribeNamespaceResponse]
ReadPrec DescribeNamespaceResponse
Int -> ReadS DescribeNamespaceResponse
ReadS [DescribeNamespaceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeNamespaceResponse]
$creadListPrec :: ReadPrec [DescribeNamespaceResponse]
readPrec :: ReadPrec DescribeNamespaceResponse
$creadPrec :: ReadPrec DescribeNamespaceResponse
readList :: ReadS [DescribeNamespaceResponse]
$creadList :: ReadS [DescribeNamespaceResponse]
readsPrec :: Int -> ReadS DescribeNamespaceResponse
$creadsPrec :: Int -> ReadS DescribeNamespaceResponse
Prelude.Read, Int -> DescribeNamespaceResponse -> ShowS
[DescribeNamespaceResponse] -> ShowS
DescribeNamespaceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeNamespaceResponse] -> ShowS
$cshowList :: [DescribeNamespaceResponse] -> ShowS
show :: DescribeNamespaceResponse -> String
$cshow :: DescribeNamespaceResponse -> String
showsPrec :: Int -> DescribeNamespaceResponse -> ShowS
$cshowsPrec :: Int -> DescribeNamespaceResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeNamespaceResponse x -> DescribeNamespaceResponse
forall x.
DescribeNamespaceResponse -> Rep DescribeNamespaceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeNamespaceResponse x -> DescribeNamespaceResponse
$cfrom :: forall x.
DescribeNamespaceResponse -> Rep DescribeNamespaceResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeNamespaceResponse' 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:
--
-- 'namespace', 'describeNamespaceResponse_namespace' - The information about the namespace that you\'re describing. The
-- response includes the namespace ARN, name, Amazon Web Services Region,
-- creation status, and identity store. @DescribeNamespace@ also works for
-- namespaces that are in the process of being created. For incomplete
-- namespaces, this API operation lists the namespace error types and
-- messages associated with the creation process.
--
-- 'requestId', 'describeNamespaceResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'status', 'describeNamespaceResponse_status' - The HTTP status of the request.
newDescribeNamespaceResponse ::
  -- | 'status'
  Prelude.Int ->
  DescribeNamespaceResponse
newDescribeNamespaceResponse :: Int -> DescribeNamespaceResponse
newDescribeNamespaceResponse Int
pStatus_ =
  DescribeNamespaceResponse'
    { $sel:namespace:DescribeNamespaceResponse' :: Maybe NamespaceInfoV2
namespace =
        forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:DescribeNamespaceResponse' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeNamespaceResponse' :: Int
status = Int
pStatus_
    }

-- | The information about the namespace that you\'re describing. The
-- response includes the namespace ARN, name, Amazon Web Services Region,
-- creation status, and identity store. @DescribeNamespace@ also works for
-- namespaces that are in the process of being created. For incomplete
-- namespaces, this API operation lists the namespace error types and
-- messages associated with the creation process.
describeNamespaceResponse_namespace :: Lens.Lens' DescribeNamespaceResponse (Prelude.Maybe NamespaceInfoV2)
describeNamespaceResponse_namespace :: Lens' DescribeNamespaceResponse (Maybe NamespaceInfoV2)
describeNamespaceResponse_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNamespaceResponse' {Maybe NamespaceInfoV2
namespace :: Maybe NamespaceInfoV2
$sel:namespace:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Maybe NamespaceInfoV2
namespace} -> Maybe NamespaceInfoV2
namespace) (\s :: DescribeNamespaceResponse
s@DescribeNamespaceResponse' {} Maybe NamespaceInfoV2
a -> DescribeNamespaceResponse
s {$sel:namespace:DescribeNamespaceResponse' :: Maybe NamespaceInfoV2
namespace = Maybe NamespaceInfoV2
a} :: DescribeNamespaceResponse)

-- | The Amazon Web Services request ID for this operation.
describeNamespaceResponse_requestId :: Lens.Lens' DescribeNamespaceResponse (Prelude.Maybe Prelude.Text)
describeNamespaceResponse_requestId :: Lens' DescribeNamespaceResponse (Maybe Text)
describeNamespaceResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNamespaceResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: DescribeNamespaceResponse
s@DescribeNamespaceResponse' {} Maybe Text
a -> DescribeNamespaceResponse
s {$sel:requestId:DescribeNamespaceResponse' :: Maybe Text
requestId = Maybe Text
a} :: DescribeNamespaceResponse)

-- | The HTTP status of the request.
describeNamespaceResponse_status :: Lens.Lens' DescribeNamespaceResponse Prelude.Int
describeNamespaceResponse_status :: Lens' DescribeNamespaceResponse Int
describeNamespaceResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNamespaceResponse' {Int
status :: Int
$sel:status:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Int
status} -> Int
status) (\s :: DescribeNamespaceResponse
s@DescribeNamespaceResponse' {} Int
a -> DescribeNamespaceResponse
s {$sel:status:DescribeNamespaceResponse' :: Int
status = Int
a} :: DescribeNamespaceResponse)

instance Prelude.NFData DescribeNamespaceResponse where
  rnf :: DescribeNamespaceResponse -> ()
rnf DescribeNamespaceResponse' {Int
Maybe Text
Maybe NamespaceInfoV2
status :: Int
requestId :: Maybe Text
namespace :: Maybe NamespaceInfoV2
$sel:status:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Int
$sel:requestId:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Maybe Text
$sel:namespace:DescribeNamespaceResponse' :: DescribeNamespaceResponse -> Maybe NamespaceInfoV2
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe NamespaceInfoV2
namespace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
status