{-# 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.IoTSiteWise.DescribeAccessPolicy
-- 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 an access policy, which specifies an identity\'s access to an
-- IoT SiteWise Monitor portal or project.
module Amazonka.IoTSiteWise.DescribeAccessPolicy
  ( -- * Creating a Request
    DescribeAccessPolicy (..),
    newDescribeAccessPolicy,

    -- * Request Lenses
    describeAccessPolicy_accessPolicyId,

    -- * Destructuring the Response
    DescribeAccessPolicyResponse (..),
    newDescribeAccessPolicyResponse,

    -- * Response Lenses
    describeAccessPolicyResponse_httpStatus,
    describeAccessPolicyResponse_accessPolicyId,
    describeAccessPolicyResponse_accessPolicyArn,
    describeAccessPolicyResponse_accessPolicyIdentity,
    describeAccessPolicyResponse_accessPolicyResource,
    describeAccessPolicyResponse_accessPolicyPermission,
    describeAccessPolicyResponse_accessPolicyCreationDate,
    describeAccessPolicyResponse_accessPolicyLastUpdateDate,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTSiteWise.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

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

-- |
-- Create a value of 'DescribeAccessPolicy' 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:
--
-- 'accessPolicyId', 'describeAccessPolicy_accessPolicyId' - The ID of the access policy.
newDescribeAccessPolicy ::
  -- | 'accessPolicyId'
  Prelude.Text ->
  DescribeAccessPolicy
newDescribeAccessPolicy :: Text -> DescribeAccessPolicy
newDescribeAccessPolicy Text
pAccessPolicyId_ =
  DescribeAccessPolicy'
    { $sel:accessPolicyId:DescribeAccessPolicy' :: Text
accessPolicyId =
        Text
pAccessPolicyId_
    }

-- | The ID of the access policy.
describeAccessPolicy_accessPolicyId :: Lens.Lens' DescribeAccessPolicy Prelude.Text
describeAccessPolicy_accessPolicyId :: Lens' DescribeAccessPolicy Text
describeAccessPolicy_accessPolicyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicy' {Text
accessPolicyId :: Text
$sel:accessPolicyId:DescribeAccessPolicy' :: DescribeAccessPolicy -> Text
accessPolicyId} -> Text
accessPolicyId) (\s :: DescribeAccessPolicy
s@DescribeAccessPolicy' {} Text
a -> DescribeAccessPolicy
s {$sel:accessPolicyId:DescribeAccessPolicy' :: Text
accessPolicyId = Text
a} :: DescribeAccessPolicy)

instance Core.AWSRequest DescribeAccessPolicy where
  type
    AWSResponse DescribeAccessPolicy =
      DescribeAccessPolicyResponse
  request :: (Service -> Service)
-> DescribeAccessPolicy -> Request DescribeAccessPolicy
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 DescribeAccessPolicy
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeAccessPolicy)))
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
-> Text
-> Text
-> Identity
-> Resource
-> Permission
-> POSIX
-> POSIX
-> DescribeAccessPolicyResponse
DescribeAccessPolicyResponse'
            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
"accessPolicyId")
            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
"accessPolicyArn")
            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
"accessPolicyIdentity")
            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
"accessPolicyResource")
            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
"accessPolicyPermission")
            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
"accessPolicyCreationDate")
            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
"accessPolicyLastUpdateDate")
      )

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

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

instance Data.ToHeaders DescribeAccessPolicy where
  toHeaders :: DescribeAccessPolicy -> 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 DescribeAccessPolicy where
  toPath :: DescribeAccessPolicy -> ByteString
toPath DescribeAccessPolicy' {Text
accessPolicyId :: Text
$sel:accessPolicyId:DescribeAccessPolicy' :: DescribeAccessPolicy -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/access-policies/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
accessPolicyId]

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

-- | /See:/ 'newDescribeAccessPolicyResponse' smart constructor.
data DescribeAccessPolicyResponse = DescribeAccessPolicyResponse'
  { -- | The response's http status code.
    DescribeAccessPolicyResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ID of the access policy.
    DescribeAccessPolicyResponse -> Text
accessPolicyId :: Prelude.Text,
    -- | The
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
    -- of the access policy, which has the following format.
    --
    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@
    DescribeAccessPolicyResponse -> Text
accessPolicyArn :: Prelude.Text,
    -- | The identity (IAM Identity Center user, IAM Identity Center group, or
    -- IAM user) to which this access policy applies.
    DescribeAccessPolicyResponse -> Identity
accessPolicyIdentity :: Identity,
    -- | The IoT SiteWise Monitor resource (portal or project) to which this
    -- access policy provides access.
    DescribeAccessPolicyResponse -> Resource
accessPolicyResource :: Resource,
    -- | The access policy permission. Note that a project @ADMINISTRATOR@ is
    -- also known as a project owner.
    DescribeAccessPolicyResponse -> Permission
accessPolicyPermission :: Permission,
    -- | The date the access policy was created, in Unix epoch time.
    DescribeAccessPolicyResponse -> POSIX
accessPolicyCreationDate :: Data.POSIX,
    -- | The date the access policy was last updated, in Unix epoch time.
    DescribeAccessPolicyResponse -> POSIX
accessPolicyLastUpdateDate :: Data.POSIX
  }
  deriving (DescribeAccessPolicyResponse
-> DescribeAccessPolicyResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeAccessPolicyResponse
-> DescribeAccessPolicyResponse -> Bool
$c/= :: DescribeAccessPolicyResponse
-> DescribeAccessPolicyResponse -> Bool
== :: DescribeAccessPolicyResponse
-> DescribeAccessPolicyResponse -> Bool
$c== :: DescribeAccessPolicyResponse
-> DescribeAccessPolicyResponse -> Bool
Prelude.Eq, ReadPrec [DescribeAccessPolicyResponse]
ReadPrec DescribeAccessPolicyResponse
Int -> ReadS DescribeAccessPolicyResponse
ReadS [DescribeAccessPolicyResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeAccessPolicyResponse]
$creadListPrec :: ReadPrec [DescribeAccessPolicyResponse]
readPrec :: ReadPrec DescribeAccessPolicyResponse
$creadPrec :: ReadPrec DescribeAccessPolicyResponse
readList :: ReadS [DescribeAccessPolicyResponse]
$creadList :: ReadS [DescribeAccessPolicyResponse]
readsPrec :: Int -> ReadS DescribeAccessPolicyResponse
$creadsPrec :: Int -> ReadS DescribeAccessPolicyResponse
Prelude.Read, Int -> DescribeAccessPolicyResponse -> ShowS
[DescribeAccessPolicyResponse] -> ShowS
DescribeAccessPolicyResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeAccessPolicyResponse] -> ShowS
$cshowList :: [DescribeAccessPolicyResponse] -> ShowS
show :: DescribeAccessPolicyResponse -> String
$cshow :: DescribeAccessPolicyResponse -> String
showsPrec :: Int -> DescribeAccessPolicyResponse -> ShowS
$cshowsPrec :: Int -> DescribeAccessPolicyResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeAccessPolicyResponse x -> DescribeAccessPolicyResponse
forall x.
DescribeAccessPolicyResponse -> Rep DescribeAccessPolicyResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeAccessPolicyResponse x -> DescribeAccessPolicyResponse
$cfrom :: forall x.
DescribeAccessPolicyResponse -> Rep DescribeAccessPolicyResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeAccessPolicyResponse' 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', 'describeAccessPolicyResponse_httpStatus' - The response's http status code.
--
-- 'accessPolicyId', 'describeAccessPolicyResponse_accessPolicyId' - The ID of the access policy.
--
-- 'accessPolicyArn', 'describeAccessPolicyResponse_accessPolicyArn' - The
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
-- of the access policy, which has the following format.
--
-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@
--
-- 'accessPolicyIdentity', 'describeAccessPolicyResponse_accessPolicyIdentity' - The identity (IAM Identity Center user, IAM Identity Center group, or
-- IAM user) to which this access policy applies.
--
-- 'accessPolicyResource', 'describeAccessPolicyResponse_accessPolicyResource' - The IoT SiteWise Monitor resource (portal or project) to which this
-- access policy provides access.
--
-- 'accessPolicyPermission', 'describeAccessPolicyResponse_accessPolicyPermission' - The access policy permission. Note that a project @ADMINISTRATOR@ is
-- also known as a project owner.
--
-- 'accessPolicyCreationDate', 'describeAccessPolicyResponse_accessPolicyCreationDate' - The date the access policy was created, in Unix epoch time.
--
-- 'accessPolicyLastUpdateDate', 'describeAccessPolicyResponse_accessPolicyLastUpdateDate' - The date the access policy was last updated, in Unix epoch time.
newDescribeAccessPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'accessPolicyId'
  Prelude.Text ->
  -- | 'accessPolicyArn'
  Prelude.Text ->
  -- | 'accessPolicyIdentity'
  Identity ->
  -- | 'accessPolicyResource'
  Resource ->
  -- | 'accessPolicyPermission'
  Permission ->
  -- | 'accessPolicyCreationDate'
  Prelude.UTCTime ->
  -- | 'accessPolicyLastUpdateDate'
  Prelude.UTCTime ->
  DescribeAccessPolicyResponse
newDescribeAccessPolicyResponse :: Int
-> Text
-> Text
-> Identity
-> Resource
-> Permission
-> UTCTime
-> UTCTime
-> DescribeAccessPolicyResponse
newDescribeAccessPolicyResponse
  Int
pHttpStatus_
  Text
pAccessPolicyId_
  Text
pAccessPolicyArn_
  Identity
pAccessPolicyIdentity_
  Resource
pAccessPolicyResource_
  Permission
pAccessPolicyPermission_
  UTCTime
pAccessPolicyCreationDate_
  UTCTime
pAccessPolicyLastUpdateDate_ =
    DescribeAccessPolicyResponse'
      { $sel:httpStatus:DescribeAccessPolicyResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:accessPolicyId:DescribeAccessPolicyResponse' :: Text
accessPolicyId = Text
pAccessPolicyId_,
        $sel:accessPolicyArn:DescribeAccessPolicyResponse' :: Text
accessPolicyArn = Text
pAccessPolicyArn_,
        $sel:accessPolicyIdentity:DescribeAccessPolicyResponse' :: Identity
accessPolicyIdentity = Identity
pAccessPolicyIdentity_,
        $sel:accessPolicyResource:DescribeAccessPolicyResponse' :: Resource
accessPolicyResource = Resource
pAccessPolicyResource_,
        $sel:accessPolicyPermission:DescribeAccessPolicyResponse' :: Permission
accessPolicyPermission =
          Permission
pAccessPolicyPermission_,
        $sel:accessPolicyCreationDate:DescribeAccessPolicyResponse' :: POSIX
accessPolicyCreationDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time
            forall t b. AReview t b -> b -> t
Lens.# UTCTime
pAccessPolicyCreationDate_,
        $sel:accessPolicyLastUpdateDate:DescribeAccessPolicyResponse' :: POSIX
accessPolicyLastUpdateDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time
            forall t b. AReview t b -> b -> t
Lens.# UTCTime
pAccessPolicyLastUpdateDate_
      }

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

-- | The ID of the access policy.
describeAccessPolicyResponse_accessPolicyId :: Lens.Lens' DescribeAccessPolicyResponse Prelude.Text
describeAccessPolicyResponse_accessPolicyId :: Lens' DescribeAccessPolicyResponse Text
describeAccessPolicyResponse_accessPolicyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {Text
accessPolicyId :: Text
$sel:accessPolicyId:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Text
accessPolicyId} -> Text
accessPolicyId) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} Text
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyId:DescribeAccessPolicyResponse' :: Text
accessPolicyId = Text
a} :: DescribeAccessPolicyResponse)

-- | The
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
-- of the access policy, which has the following format.
--
-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@
describeAccessPolicyResponse_accessPolicyArn :: Lens.Lens' DescribeAccessPolicyResponse Prelude.Text
describeAccessPolicyResponse_accessPolicyArn :: Lens' DescribeAccessPolicyResponse Text
describeAccessPolicyResponse_accessPolicyArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {Text
accessPolicyArn :: Text
$sel:accessPolicyArn:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Text
accessPolicyArn} -> Text
accessPolicyArn) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} Text
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyArn:DescribeAccessPolicyResponse' :: Text
accessPolicyArn = Text
a} :: DescribeAccessPolicyResponse)

-- | The identity (IAM Identity Center user, IAM Identity Center group, or
-- IAM user) to which this access policy applies.
describeAccessPolicyResponse_accessPolicyIdentity :: Lens.Lens' DescribeAccessPolicyResponse Identity
describeAccessPolicyResponse_accessPolicyIdentity :: Lens' DescribeAccessPolicyResponse Identity
describeAccessPolicyResponse_accessPolicyIdentity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {Identity
accessPolicyIdentity :: Identity
$sel:accessPolicyIdentity:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Identity
accessPolicyIdentity} -> Identity
accessPolicyIdentity) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} Identity
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyIdentity:DescribeAccessPolicyResponse' :: Identity
accessPolicyIdentity = Identity
a} :: DescribeAccessPolicyResponse)

-- | The IoT SiteWise Monitor resource (portal or project) to which this
-- access policy provides access.
describeAccessPolicyResponse_accessPolicyResource :: Lens.Lens' DescribeAccessPolicyResponse Resource
describeAccessPolicyResponse_accessPolicyResource :: Lens' DescribeAccessPolicyResponse Resource
describeAccessPolicyResponse_accessPolicyResource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {Resource
accessPolicyResource :: Resource
$sel:accessPolicyResource:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Resource
accessPolicyResource} -> Resource
accessPolicyResource) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} Resource
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyResource:DescribeAccessPolicyResponse' :: Resource
accessPolicyResource = Resource
a} :: DescribeAccessPolicyResponse)

-- | The access policy permission. Note that a project @ADMINISTRATOR@ is
-- also known as a project owner.
describeAccessPolicyResponse_accessPolicyPermission :: Lens.Lens' DescribeAccessPolicyResponse Permission
describeAccessPolicyResponse_accessPolicyPermission :: Lens' DescribeAccessPolicyResponse Permission
describeAccessPolicyResponse_accessPolicyPermission = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {Permission
accessPolicyPermission :: Permission
$sel:accessPolicyPermission:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Permission
accessPolicyPermission} -> Permission
accessPolicyPermission) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} Permission
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyPermission:DescribeAccessPolicyResponse' :: Permission
accessPolicyPermission = Permission
a} :: DescribeAccessPolicyResponse)

-- | The date the access policy was created, in Unix epoch time.
describeAccessPolicyResponse_accessPolicyCreationDate :: Lens.Lens' DescribeAccessPolicyResponse Prelude.UTCTime
describeAccessPolicyResponse_accessPolicyCreationDate :: Lens' DescribeAccessPolicyResponse UTCTime
describeAccessPolicyResponse_accessPolicyCreationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {POSIX
accessPolicyCreationDate :: POSIX
$sel:accessPolicyCreationDate:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> POSIX
accessPolicyCreationDate} -> POSIX
accessPolicyCreationDate) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} POSIX
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyCreationDate:DescribeAccessPolicyResponse' :: POSIX
accessPolicyCreationDate = POSIX
a} :: DescribeAccessPolicyResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The date the access policy was last updated, in Unix epoch time.
describeAccessPolicyResponse_accessPolicyLastUpdateDate :: Lens.Lens' DescribeAccessPolicyResponse Prelude.UTCTime
describeAccessPolicyResponse_accessPolicyLastUpdateDate :: Lens' DescribeAccessPolicyResponse UTCTime
describeAccessPolicyResponse_accessPolicyLastUpdateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeAccessPolicyResponse' {POSIX
accessPolicyLastUpdateDate :: POSIX
$sel:accessPolicyLastUpdateDate:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> POSIX
accessPolicyLastUpdateDate} -> POSIX
accessPolicyLastUpdateDate) (\s :: DescribeAccessPolicyResponse
s@DescribeAccessPolicyResponse' {} POSIX
a -> DescribeAccessPolicyResponse
s {$sel:accessPolicyLastUpdateDate:DescribeAccessPolicyResponse' :: POSIX
accessPolicyLastUpdateDate = POSIX
a} :: DescribeAccessPolicyResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Prelude.NFData DescribeAccessPolicyResponse where
  rnf :: DescribeAccessPolicyResponse -> ()
rnf DescribeAccessPolicyResponse' {Int
Text
POSIX
Permission
Resource
Identity
accessPolicyLastUpdateDate :: POSIX
accessPolicyCreationDate :: POSIX
accessPolicyPermission :: Permission
accessPolicyResource :: Resource
accessPolicyIdentity :: Identity
accessPolicyArn :: Text
accessPolicyId :: Text
httpStatus :: Int
$sel:accessPolicyLastUpdateDate:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> POSIX
$sel:accessPolicyCreationDate:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> POSIX
$sel:accessPolicyPermission:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Permission
$sel:accessPolicyResource:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Resource
$sel:accessPolicyIdentity:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Identity
$sel:accessPolicyArn:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Text
$sel:accessPolicyId:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> Text
$sel:httpStatus:DescribeAccessPolicyResponse' :: DescribeAccessPolicyResponse -> 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 Text
accessPolicyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
accessPolicyArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Identity
accessPolicyIdentity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Resource
accessPolicyResource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Permission
accessPolicyPermission
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
accessPolicyCreationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
accessPolicyLastUpdateDate