{-# 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.UpdateAccessPolicy
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an OpenSearch Serverless access policy. 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.UpdateAccessPolicy
  ( -- * Creating a Request
    UpdateAccessPolicy (..),
    newUpdateAccessPolicy,

    -- * Request Lenses
    updateAccessPolicy_clientToken,
    updateAccessPolicy_description,
    updateAccessPolicy_policy,
    updateAccessPolicy_name,
    updateAccessPolicy_policyVersion,
    updateAccessPolicy_type,

    -- * Destructuring the Response
    UpdateAccessPolicyResponse (..),
    newUpdateAccessPolicyResponse,

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

-- |
-- Create a value of 'UpdateAccessPolicy' 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', 'updateAccessPolicy_clientToken' - Unique, case-sensitive identifier to ensure idempotency of the request.
--
-- 'description', 'updateAccessPolicy_description' - A description of the policy. Typically used to store information about
-- the permissions defined in the policy.
--
-- 'policy', 'updateAccessPolicy_policy' - The JSON policy document to use as the content for the policy.
--
-- 'name', 'updateAccessPolicy_name' - The name of the policy.
--
-- 'policyVersion', 'updateAccessPolicy_policyVersion' - The version of the policy being updated.
--
-- 'type'', 'updateAccessPolicy_type' - The type of policy.
newUpdateAccessPolicy ::
  -- | 'name'
  Prelude.Text ->
  -- | 'policyVersion'
  Prelude.Text ->
  -- | 'type''
  AccessPolicyType ->
  UpdateAccessPolicy
newUpdateAccessPolicy :: Text -> Text -> AccessPolicyType -> UpdateAccessPolicy
newUpdateAccessPolicy Text
pName_ Text
pPolicyVersion_ AccessPolicyType
pType_ =
  UpdateAccessPolicy'
    { $sel:clientToken:UpdateAccessPolicy' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateAccessPolicy' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:policy:UpdateAccessPolicy' :: Maybe Text
policy = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateAccessPolicy' :: Text
name = Text
pName_,
      $sel:policyVersion:UpdateAccessPolicy' :: Text
policyVersion = Text
pPolicyVersion_,
      $sel:type':UpdateAccessPolicy' :: AccessPolicyType
type' = AccessPolicyType
pType_
    }

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

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

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

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

-- | The version of the policy being updated.
updateAccessPolicy_policyVersion :: Lens.Lens' UpdateAccessPolicy Prelude.Text
updateAccessPolicy_policyVersion :: Lens' UpdateAccessPolicy Text
updateAccessPolicy_policyVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAccessPolicy' {Text
policyVersion :: Text
$sel:policyVersion:UpdateAccessPolicy' :: UpdateAccessPolicy -> Text
policyVersion} -> Text
policyVersion) (\s :: UpdateAccessPolicy
s@UpdateAccessPolicy' {} Text
a -> UpdateAccessPolicy
s {$sel:policyVersion:UpdateAccessPolicy' :: Text
policyVersion = Text
a} :: UpdateAccessPolicy)

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

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

instance Prelude.NFData UpdateAccessPolicy where
  rnf :: UpdateAccessPolicy -> ()
rnf UpdateAccessPolicy' {Maybe Text
Text
AccessPolicyType
type' :: AccessPolicyType
policyVersion :: Text
name :: Text
policy :: Maybe Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':UpdateAccessPolicy' :: UpdateAccessPolicy -> AccessPolicyType
$sel:policyVersion:UpdateAccessPolicy' :: UpdateAccessPolicy -> Text
$sel:name:UpdateAccessPolicy' :: UpdateAccessPolicy -> Text
$sel:policy:UpdateAccessPolicy' :: UpdateAccessPolicy -> Maybe Text
$sel:description:UpdateAccessPolicy' :: UpdateAccessPolicy -> Maybe Text
$sel:clientToken:UpdateAccessPolicy' :: UpdateAccessPolicy -> 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 Maybe Text
policy
      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
policyVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf AccessPolicyType
type'

instance Data.ToHeaders UpdateAccessPolicy where
  toHeaders :: UpdateAccessPolicy -> 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.UpdateAccessPolicy" ::
                          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 UpdateAccessPolicy where
  toJSON :: UpdateAccessPolicy -> Value
toJSON UpdateAccessPolicy' {Maybe Text
Text
AccessPolicyType
type' :: AccessPolicyType
policyVersion :: Text
name :: Text
policy :: Maybe Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':UpdateAccessPolicy' :: UpdateAccessPolicy -> AccessPolicyType
$sel:policyVersion:UpdateAccessPolicy' :: UpdateAccessPolicy -> Text
$sel:name:UpdateAccessPolicy' :: UpdateAccessPolicy -> Text
$sel:policy:UpdateAccessPolicy' :: UpdateAccessPolicy -> Maybe Text
$sel:description:UpdateAccessPolicy' :: UpdateAccessPolicy -> Maybe Text
$sel:clientToken:UpdateAccessPolicy' :: UpdateAccessPolicy -> 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,
            (Key
"policy" 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
policy,
            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
"policyVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
policyVersion),
            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 UpdateAccessPolicy where
  toPath :: UpdateAccessPolicy -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

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

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

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

instance Prelude.NFData UpdateAccessPolicyResponse where
  rnf :: UpdateAccessPolicyResponse -> ()
rnf UpdateAccessPolicyResponse' {Int
Maybe AccessPolicyDetail
httpStatus :: Int
accessPolicyDetail :: Maybe AccessPolicyDetail
$sel:httpStatus:UpdateAccessPolicyResponse' :: UpdateAccessPolicyResponse -> Int
$sel:accessPolicyDetail:UpdateAccessPolicyResponse' :: UpdateAccessPolicyResponse -> 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