{-# 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.OpenSearchServerless.CreateAccessPolicy
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a data access policy for OpenSearch Serverless. Access policies
-- limit access to collections and the resources within them, and allow a
-- user to access that data irrespective of the access mechanism or network
-- source. For more information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html Data access control for Amazon OpenSearch Serverless>.
module Amazonka.OpenSearchServerless.CreateAccessPolicy
  ( -- * Creating a Request
    CreateAccessPolicy (..),
    newCreateAccessPolicy,

    -- * Request Lenses
    createAccessPolicy_clientToken,
    createAccessPolicy_description,
    createAccessPolicy_name,
    createAccessPolicy_policy,
    createAccessPolicy_type,

    -- * Destructuring the Response
    CreateAccessPolicyResponse (..),
    newCreateAccessPolicyResponse,

    -- * Response Lenses
    createAccessPolicyResponse_accessPolicyDetail,
    createAccessPolicyResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateAccessPolicy' smart constructor.
data CreateAccessPolicy = CreateAccessPolicy'
  { -- | Unique, case-sensitive identifier to ensure idempotency of the request.
    CreateAccessPolicy -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | A description of the policy. Typically used to store information about
    -- the permissions defined in the policy.
    CreateAccessPolicy -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The name of the policy.
    CreateAccessPolicy -> Text
name :: Prelude.Text,
    -- | The JSON policy document to use as the content for the policy.
    CreateAccessPolicy -> Text
policy :: Prelude.Text,
    -- | The type of policy.
    CreateAccessPolicy -> AccessPolicyType
type' :: AccessPolicyType
  }
  deriving (CreateAccessPolicy -> CreateAccessPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateAccessPolicy -> CreateAccessPolicy -> Bool
$c/= :: CreateAccessPolicy -> CreateAccessPolicy -> Bool
== :: CreateAccessPolicy -> CreateAccessPolicy -> Bool
$c== :: CreateAccessPolicy -> CreateAccessPolicy -> Bool
Prelude.Eq, ReadPrec [CreateAccessPolicy]
ReadPrec CreateAccessPolicy
Int -> ReadS CreateAccessPolicy
ReadS [CreateAccessPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateAccessPolicy]
$creadListPrec :: ReadPrec [CreateAccessPolicy]
readPrec :: ReadPrec CreateAccessPolicy
$creadPrec :: ReadPrec CreateAccessPolicy
readList :: ReadS [CreateAccessPolicy]
$creadList :: ReadS [CreateAccessPolicy]
readsPrec :: Int -> ReadS CreateAccessPolicy
$creadsPrec :: Int -> ReadS CreateAccessPolicy
Prelude.Read, Int -> CreateAccessPolicy -> ShowS
[CreateAccessPolicy] -> ShowS
CreateAccessPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateAccessPolicy] -> ShowS
$cshowList :: [CreateAccessPolicy] -> ShowS
show :: CreateAccessPolicy -> String
$cshow :: CreateAccessPolicy -> String
showsPrec :: Int -> CreateAccessPolicy -> ShowS
$cshowsPrec :: Int -> CreateAccessPolicy -> ShowS
Prelude.Show, forall x. Rep CreateAccessPolicy x -> CreateAccessPolicy
forall x. CreateAccessPolicy -> Rep CreateAccessPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateAccessPolicy x -> CreateAccessPolicy
$cfrom :: forall x. CreateAccessPolicy -> Rep CreateAccessPolicy x
Prelude.Generic)

-- |
-- Create a value of 'CreateAccessPolicy' 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:
--
-- 'clientToken', 'createAccessPolicy_clientToken' - Unique, case-sensitive identifier to ensure idempotency of the request.
--
-- 'description', 'createAccessPolicy_description' - A description of the policy. Typically used to store information about
-- the permissions defined in the policy.
--
-- 'name', 'createAccessPolicy_name' - The name of the policy.
--
-- 'policy', 'createAccessPolicy_policy' - The JSON policy document to use as the content for the policy.
--
-- 'type'', 'createAccessPolicy_type' - The type of policy.
newCreateAccessPolicy ::
  -- | 'name'
  Prelude.Text ->
  -- | 'policy'
  Prelude.Text ->
  -- | 'type''
  AccessPolicyType ->
  CreateAccessPolicy
newCreateAccessPolicy :: Text -> Text -> AccessPolicyType -> CreateAccessPolicy
newCreateAccessPolicy Text
pName_ Text
pPolicy_ AccessPolicyType
pType_ =
  CreateAccessPolicy'
    { $sel:clientToken:CreateAccessPolicy' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateAccessPolicy' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateAccessPolicy' :: Text
name = Text
pName_,
      $sel:policy:CreateAccessPolicy' :: Text
policy = Text
pPolicy_,
      $sel:type':CreateAccessPolicy' :: AccessPolicyType
type' = AccessPolicyType
pType_
    }

-- | Unique, case-sensitive identifier to ensure idempotency of the request.
createAccessPolicy_clientToken :: Lens.Lens' CreateAccessPolicy (Prelude.Maybe Prelude.Text)
createAccessPolicy_clientToken :: Lens' CreateAccessPolicy (Maybe Text)
createAccessPolicy_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicy' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateAccessPolicy
s@CreateAccessPolicy' {} Maybe Text
a -> CreateAccessPolicy
s {$sel:clientToken:CreateAccessPolicy' :: Maybe Text
clientToken = Maybe Text
a} :: CreateAccessPolicy)

-- | A description of the policy. Typically used to store information about
-- the permissions defined in the policy.
createAccessPolicy_description :: Lens.Lens' CreateAccessPolicy (Prelude.Maybe Prelude.Text)
createAccessPolicy_description :: Lens' CreateAccessPolicy (Maybe Text)
createAccessPolicy_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicy' {Maybe Text
description :: Maybe Text
$sel:description:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateAccessPolicy
s@CreateAccessPolicy' {} Maybe Text
a -> CreateAccessPolicy
s {$sel:description:CreateAccessPolicy' :: Maybe Text
description = Maybe Text
a} :: CreateAccessPolicy)

-- | The name of the policy.
createAccessPolicy_name :: Lens.Lens' CreateAccessPolicy Prelude.Text
createAccessPolicy_name :: Lens' CreateAccessPolicy Text
createAccessPolicy_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicy' {Text
name :: Text
$sel:name:CreateAccessPolicy' :: CreateAccessPolicy -> Text
name} -> Text
name) (\s :: CreateAccessPolicy
s@CreateAccessPolicy' {} Text
a -> CreateAccessPolicy
s {$sel:name:CreateAccessPolicy' :: Text
name = Text
a} :: CreateAccessPolicy)

-- | The JSON policy document to use as the content for the policy.
createAccessPolicy_policy :: Lens.Lens' CreateAccessPolicy Prelude.Text
createAccessPolicy_policy :: Lens' CreateAccessPolicy Text
createAccessPolicy_policy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicy' {Text
policy :: Text
$sel:policy:CreateAccessPolicy' :: CreateAccessPolicy -> Text
policy} -> Text
policy) (\s :: CreateAccessPolicy
s@CreateAccessPolicy' {} Text
a -> CreateAccessPolicy
s {$sel:policy:CreateAccessPolicy' :: Text
policy = Text
a} :: CreateAccessPolicy)

-- | The type of policy.
createAccessPolicy_type :: Lens.Lens' CreateAccessPolicy AccessPolicyType
createAccessPolicy_type :: Lens' CreateAccessPolicy AccessPolicyType
createAccessPolicy_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicy' {AccessPolicyType
type' :: AccessPolicyType
$sel:type':CreateAccessPolicy' :: CreateAccessPolicy -> AccessPolicyType
type'} -> AccessPolicyType
type') (\s :: CreateAccessPolicy
s@CreateAccessPolicy' {} AccessPolicyType
a -> CreateAccessPolicy
s {$sel:type':CreateAccessPolicy' :: AccessPolicyType
type' = AccessPolicyType
a} :: CreateAccessPolicy)

instance Core.AWSRequest CreateAccessPolicy where
  type
    AWSResponse CreateAccessPolicy =
      CreateAccessPolicyResponse
  request :: (Service -> Service)
-> CreateAccessPolicy -> Request CreateAccessPolicy
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 CreateAccessPolicy
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateAccessPolicy)))
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 AccessPolicyDetail -> Int -> CreateAccessPolicyResponse
CreateAccessPolicyResponse'
            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
"accessPolicyDetail")
            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 CreateAccessPolicy where
  hashWithSalt :: Int -> CreateAccessPolicy -> Int
hashWithSalt Int
_salt CreateAccessPolicy' {Maybe Text
Text
AccessPolicyType
type' :: AccessPolicyType
policy :: Text
name :: Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':CreateAccessPolicy' :: CreateAccessPolicy -> AccessPolicyType
$sel:policy:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:name:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:description:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
$sel:clientToken:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
policy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` AccessPolicyType
type'

instance Prelude.NFData CreateAccessPolicy where
  rnf :: CreateAccessPolicy -> ()
rnf CreateAccessPolicy' {Maybe Text
Text
AccessPolicyType
type' :: AccessPolicyType
policy :: Text
name :: Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':CreateAccessPolicy' :: CreateAccessPolicy -> AccessPolicyType
$sel:policy:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:name:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:description:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
$sel:clientToken:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
policy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf AccessPolicyType
type'

instance Data.ToHeaders CreateAccessPolicy where
  toHeaders :: CreateAccessPolicy -> 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
"OpenSearchServerless.CreateAccessPolicy" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateAccessPolicy where
  toJSON :: CreateAccessPolicy -> Value
toJSON CreateAccessPolicy' {Maybe Text
Text
AccessPolicyType
type' :: AccessPolicyType
policy :: Text
name :: Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':CreateAccessPolicy' :: CreateAccessPolicy -> AccessPolicyType
$sel:policy:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:name:CreateAccessPolicy' :: CreateAccessPolicy -> Text
$sel:description:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
$sel:clientToken:CreateAccessPolicy' :: CreateAccessPolicy -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"clientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientToken,
            (Key
"description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            forall a. a -> Maybe a
Prelude.Just (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just (Key
"policy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
policy),
            forall a. a -> Maybe a
Prelude.Just (Key
"type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= AccessPolicyType
type')
          ]
      )

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

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

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

-- |
-- Create a value of 'CreateAccessPolicyResponse' 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:
--
-- 'accessPolicyDetail', 'createAccessPolicyResponse_accessPolicyDetail' - Details about the created access policy.
--
-- 'httpStatus', 'createAccessPolicyResponse_httpStatus' - The response's http status code.
newCreateAccessPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateAccessPolicyResponse
newCreateAccessPolicyResponse :: Int -> CreateAccessPolicyResponse
newCreateAccessPolicyResponse Int
pHttpStatus_ =
  CreateAccessPolicyResponse'
    { $sel:accessPolicyDetail:CreateAccessPolicyResponse' :: Maybe AccessPolicyDetail
accessPolicyDetail =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateAccessPolicyResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Details about the created access policy.
createAccessPolicyResponse_accessPolicyDetail :: Lens.Lens' CreateAccessPolicyResponse (Prelude.Maybe AccessPolicyDetail)
createAccessPolicyResponse_accessPolicyDetail :: Lens' CreateAccessPolicyResponse (Maybe AccessPolicyDetail)
createAccessPolicyResponse_accessPolicyDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAccessPolicyResponse' {Maybe AccessPolicyDetail
accessPolicyDetail :: Maybe AccessPolicyDetail
$sel:accessPolicyDetail:CreateAccessPolicyResponse' :: CreateAccessPolicyResponse -> Maybe AccessPolicyDetail
accessPolicyDetail} -> Maybe AccessPolicyDetail
accessPolicyDetail) (\s :: CreateAccessPolicyResponse
s@CreateAccessPolicyResponse' {} Maybe AccessPolicyDetail
a -> CreateAccessPolicyResponse
s {$sel:accessPolicyDetail:CreateAccessPolicyResponse' :: Maybe AccessPolicyDetail
accessPolicyDetail = Maybe AccessPolicyDetail
a} :: CreateAccessPolicyResponse)

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

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