{-# 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.Chime.DescribeAppInstanceAdmin
-- 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 the full details of an @AppInstanceAdmin@.
module Amazonka.Chime.DescribeAppInstanceAdmin
  ( -- * Creating a Request
    DescribeAppInstanceAdmin (..),
    newDescribeAppInstanceAdmin,

    -- * Request Lenses
    describeAppInstanceAdmin_appInstanceAdminArn,
    describeAppInstanceAdmin_appInstanceArn,

    -- * Destructuring the Response
    DescribeAppInstanceAdminResponse (..),
    newDescribeAppInstanceAdminResponse,

    -- * Response Lenses
    describeAppInstanceAdminResponse_appInstanceAdmin,
    describeAppInstanceAdminResponse_httpStatus,
  )
where

import Amazonka.Chime.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:/ 'newDescribeAppInstanceAdmin' smart constructor.
data DescribeAppInstanceAdmin = DescribeAppInstanceAdmin'
  { -- | The ARN of the @AppInstanceAdmin@.
    DescribeAppInstanceAdmin -> Text
appInstanceAdminArn :: Prelude.Text,
    -- | The ARN of the @AppInstance@.
    DescribeAppInstanceAdmin -> Text
appInstanceArn :: Prelude.Text
  }
  deriving (DescribeAppInstanceAdmin -> DescribeAppInstanceAdmin -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAppInstanceAdmin -> DescribeAppInstanceAdmin -> Bool
$c/= :: DescribeAppInstanceAdmin -> DescribeAppInstanceAdmin -> Bool
== :: DescribeAppInstanceAdmin -> DescribeAppInstanceAdmin -> Bool
$c== :: DescribeAppInstanceAdmin -> DescribeAppInstanceAdmin -> Bool
Prelude.Eq, ReadPrec [DescribeAppInstanceAdmin]
ReadPrec DescribeAppInstanceAdmin
Int -> ReadS DescribeAppInstanceAdmin
ReadS [DescribeAppInstanceAdmin]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAppInstanceAdmin]
$creadListPrec :: ReadPrec [DescribeAppInstanceAdmin]
readPrec :: ReadPrec DescribeAppInstanceAdmin
$creadPrec :: ReadPrec DescribeAppInstanceAdmin
readList :: ReadS [DescribeAppInstanceAdmin]
$creadList :: ReadS [DescribeAppInstanceAdmin]
readsPrec :: Int -> ReadS DescribeAppInstanceAdmin
$creadsPrec :: Int -> ReadS DescribeAppInstanceAdmin
Prelude.Read, Int -> DescribeAppInstanceAdmin -> ShowS
[DescribeAppInstanceAdmin] -> ShowS
DescribeAppInstanceAdmin -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAppInstanceAdmin] -> ShowS
$cshowList :: [DescribeAppInstanceAdmin] -> ShowS
show :: DescribeAppInstanceAdmin -> String
$cshow :: DescribeAppInstanceAdmin -> String
showsPrec :: Int -> DescribeAppInstanceAdmin -> ShowS
$cshowsPrec :: Int -> DescribeAppInstanceAdmin -> ShowS
Prelude.Show, forall x.
Rep DescribeAppInstanceAdmin x -> DescribeAppInstanceAdmin
forall x.
DescribeAppInstanceAdmin -> Rep DescribeAppInstanceAdmin x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAppInstanceAdmin x -> DescribeAppInstanceAdmin
$cfrom :: forall x.
DescribeAppInstanceAdmin -> Rep DescribeAppInstanceAdmin x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAppInstanceAdmin' 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:
--
-- 'appInstanceAdminArn', 'describeAppInstanceAdmin_appInstanceAdminArn' - The ARN of the @AppInstanceAdmin@.
--
-- 'appInstanceArn', 'describeAppInstanceAdmin_appInstanceArn' - The ARN of the @AppInstance@.
newDescribeAppInstanceAdmin ::
  -- | 'appInstanceAdminArn'
  Prelude.Text ->
  -- | 'appInstanceArn'
  Prelude.Text ->
  DescribeAppInstanceAdmin
newDescribeAppInstanceAdmin :: Text -> Text -> DescribeAppInstanceAdmin
newDescribeAppInstanceAdmin
  Text
pAppInstanceAdminArn_
  Text
pAppInstanceArn_ =
    DescribeAppInstanceAdmin'
      { $sel:appInstanceAdminArn:DescribeAppInstanceAdmin' :: Text
appInstanceAdminArn =
          Text
pAppInstanceAdminArn_,
        $sel:appInstanceArn:DescribeAppInstanceAdmin' :: Text
appInstanceArn = Text
pAppInstanceArn_
      }

-- | The ARN of the @AppInstanceAdmin@.
describeAppInstanceAdmin_appInstanceAdminArn :: Lens.Lens' DescribeAppInstanceAdmin Prelude.Text
describeAppInstanceAdmin_appInstanceAdminArn :: Lens' DescribeAppInstanceAdmin Text
describeAppInstanceAdmin_appInstanceAdminArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAppInstanceAdmin' {Text
appInstanceAdminArn :: Text
$sel:appInstanceAdminArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
appInstanceAdminArn} -> Text
appInstanceAdminArn) (\s :: DescribeAppInstanceAdmin
s@DescribeAppInstanceAdmin' {} Text
a -> DescribeAppInstanceAdmin
s {$sel:appInstanceAdminArn:DescribeAppInstanceAdmin' :: Text
appInstanceAdminArn = Text
a} :: DescribeAppInstanceAdmin)

-- | The ARN of the @AppInstance@.
describeAppInstanceAdmin_appInstanceArn :: Lens.Lens' DescribeAppInstanceAdmin Prelude.Text
describeAppInstanceAdmin_appInstanceArn :: Lens' DescribeAppInstanceAdmin Text
describeAppInstanceAdmin_appInstanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAppInstanceAdmin' {Text
appInstanceArn :: Text
$sel:appInstanceArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
appInstanceArn} -> Text
appInstanceArn) (\s :: DescribeAppInstanceAdmin
s@DescribeAppInstanceAdmin' {} Text
a -> DescribeAppInstanceAdmin
s {$sel:appInstanceArn:DescribeAppInstanceAdmin' :: Text
appInstanceArn = Text
a} :: DescribeAppInstanceAdmin)

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

instance Prelude.NFData DescribeAppInstanceAdmin where
  rnf :: DescribeAppInstanceAdmin -> ()
rnf DescribeAppInstanceAdmin' {Text
appInstanceArn :: Text
appInstanceAdminArn :: Text
$sel:appInstanceArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
$sel:appInstanceAdminArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
appInstanceAdminArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
appInstanceArn

instance Data.ToHeaders DescribeAppInstanceAdmin where
  toHeaders :: DescribeAppInstanceAdmin -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeAppInstanceAdmin where
  toPath :: DescribeAppInstanceAdmin -> ByteString
toPath DescribeAppInstanceAdmin' {Text
appInstanceArn :: Text
appInstanceAdminArn :: Text
$sel:appInstanceArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
$sel:appInstanceAdminArn:DescribeAppInstanceAdmin' :: DescribeAppInstanceAdmin -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/app-instances/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appInstanceArn,
        ByteString
"/admins/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appInstanceAdminArn
      ]

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

-- | /See:/ 'newDescribeAppInstanceAdminResponse' smart constructor.
data DescribeAppInstanceAdminResponse = DescribeAppInstanceAdminResponse'
  { -- | The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
    -- and the created and last-updated timestamps. All timestamps use epoch
    -- milliseconds.
    DescribeAppInstanceAdminResponse -> Maybe AppInstanceAdmin
appInstanceAdmin :: Prelude.Maybe AppInstanceAdmin,
    -- | The response's http status code.
    DescribeAppInstanceAdminResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeAppInstanceAdminResponse
-> DescribeAppInstanceAdminResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAppInstanceAdminResponse
-> DescribeAppInstanceAdminResponse -> Bool
$c/= :: DescribeAppInstanceAdminResponse
-> DescribeAppInstanceAdminResponse -> Bool
== :: DescribeAppInstanceAdminResponse
-> DescribeAppInstanceAdminResponse -> Bool
$c== :: DescribeAppInstanceAdminResponse
-> DescribeAppInstanceAdminResponse -> Bool
Prelude.Eq, Int -> DescribeAppInstanceAdminResponse -> ShowS
[DescribeAppInstanceAdminResponse] -> ShowS
DescribeAppInstanceAdminResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAppInstanceAdminResponse] -> ShowS
$cshowList :: [DescribeAppInstanceAdminResponse] -> ShowS
show :: DescribeAppInstanceAdminResponse -> String
$cshow :: DescribeAppInstanceAdminResponse -> String
showsPrec :: Int -> DescribeAppInstanceAdminResponse -> ShowS
$cshowsPrec :: Int -> DescribeAppInstanceAdminResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeAppInstanceAdminResponse x
-> DescribeAppInstanceAdminResponse
forall x.
DescribeAppInstanceAdminResponse
-> Rep DescribeAppInstanceAdminResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAppInstanceAdminResponse x
-> DescribeAppInstanceAdminResponse
$cfrom :: forall x.
DescribeAppInstanceAdminResponse
-> Rep DescribeAppInstanceAdminResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAppInstanceAdminResponse' 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:
--
-- 'appInstanceAdmin', 'describeAppInstanceAdminResponse_appInstanceAdmin' - The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
-- and the created and last-updated timestamps. All timestamps use epoch
-- milliseconds.
--
-- 'httpStatus', 'describeAppInstanceAdminResponse_httpStatus' - The response's http status code.
newDescribeAppInstanceAdminResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeAppInstanceAdminResponse
newDescribeAppInstanceAdminResponse :: Int -> DescribeAppInstanceAdminResponse
newDescribeAppInstanceAdminResponse Int
pHttpStatus_ =
  DescribeAppInstanceAdminResponse'
    { $sel:appInstanceAdmin:DescribeAppInstanceAdminResponse' :: Maybe AppInstanceAdmin
appInstanceAdmin =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeAppInstanceAdminResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN and name of the @AppInstanceUser@, the ARN of the @AppInstance@,
-- and the created and last-updated timestamps. All timestamps use epoch
-- milliseconds.
describeAppInstanceAdminResponse_appInstanceAdmin :: Lens.Lens' DescribeAppInstanceAdminResponse (Prelude.Maybe AppInstanceAdmin)
describeAppInstanceAdminResponse_appInstanceAdmin :: Lens' DescribeAppInstanceAdminResponse (Maybe AppInstanceAdmin)
describeAppInstanceAdminResponse_appInstanceAdmin = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAppInstanceAdminResponse' {Maybe AppInstanceAdmin
appInstanceAdmin :: Maybe AppInstanceAdmin
$sel:appInstanceAdmin:DescribeAppInstanceAdminResponse' :: DescribeAppInstanceAdminResponse -> Maybe AppInstanceAdmin
appInstanceAdmin} -> Maybe AppInstanceAdmin
appInstanceAdmin) (\s :: DescribeAppInstanceAdminResponse
s@DescribeAppInstanceAdminResponse' {} Maybe AppInstanceAdmin
a -> DescribeAppInstanceAdminResponse
s {$sel:appInstanceAdmin:DescribeAppInstanceAdminResponse' :: Maybe AppInstanceAdmin
appInstanceAdmin = Maybe AppInstanceAdmin
a} :: DescribeAppInstanceAdminResponse)

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

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