{-# 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.UpdateSecurityPolicy
-- 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 security policy. For more information,
-- see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html Network access for Amazon OpenSearch Serverless>
-- and
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html Encryption at rest for Amazon OpenSearch Serverless>.
module Amazonka.OpenSearchServerless.UpdateSecurityPolicy
  ( -- * Creating a Request
    UpdateSecurityPolicy (..),
    newUpdateSecurityPolicy,

    -- * Request Lenses
    updateSecurityPolicy_clientToken,
    updateSecurityPolicy_description,
    updateSecurityPolicy_policy,
    updateSecurityPolicy_name,
    updateSecurityPolicy_policyVersion,
    updateSecurityPolicy_type,

    -- * Destructuring the Response
    UpdateSecurityPolicyResponse (..),
    newUpdateSecurityPolicyResponse,

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

-- |
-- Create a value of 'UpdateSecurityPolicy' 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', 'updateSecurityPolicy_clientToken' - Unique, case-sensitive identifier to ensure idempotency of the request.
--
-- 'description', 'updateSecurityPolicy_description' - A description of the policy. Typically used to store information about
-- the permissions defined in the policy.
--
-- 'policy', 'updateSecurityPolicy_policy' - The JSON policy document to use as the content for the new policy.
--
-- 'name', 'updateSecurityPolicy_name' - The name of the policy.
--
-- 'policyVersion', 'updateSecurityPolicy_policyVersion' - The version of the policy being updated.
--
-- 'type'', 'updateSecurityPolicy_type' - The type of access policy.
newUpdateSecurityPolicy ::
  -- | 'name'
  Prelude.Text ->
  -- | 'policyVersion'
  Prelude.Text ->
  -- | 'type''
  SecurityPolicyType ->
  UpdateSecurityPolicy
newUpdateSecurityPolicy :: Text -> Text -> SecurityPolicyType -> UpdateSecurityPolicy
newUpdateSecurityPolicy Text
pName_ Text
pPolicyVersion_ SecurityPolicyType
pType_ =
  UpdateSecurityPolicy'
    { $sel:clientToken:UpdateSecurityPolicy' :: Maybe Text
clientToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateSecurityPolicy' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:policy:UpdateSecurityPolicy' :: Maybe Text
policy = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateSecurityPolicy' :: Text
name = Text
pName_,
      $sel:policyVersion:UpdateSecurityPolicy' :: Text
policyVersion = Text
pPolicyVersion_,
      $sel:type':UpdateSecurityPolicy' :: SecurityPolicyType
type' = SecurityPolicyType
pType_
    }

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

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

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

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

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

-- | The type of access policy.
updateSecurityPolicy_type :: Lens.Lens' UpdateSecurityPolicy SecurityPolicyType
updateSecurityPolicy_type :: Lens' UpdateSecurityPolicy SecurityPolicyType
updateSecurityPolicy_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSecurityPolicy' {SecurityPolicyType
type' :: SecurityPolicyType
$sel:type':UpdateSecurityPolicy' :: UpdateSecurityPolicy -> SecurityPolicyType
type'} -> SecurityPolicyType
type') (\s :: UpdateSecurityPolicy
s@UpdateSecurityPolicy' {} SecurityPolicyType
a -> UpdateSecurityPolicy
s {$sel:type':UpdateSecurityPolicy' :: SecurityPolicyType
type' = SecurityPolicyType
a} :: UpdateSecurityPolicy)

instance Core.AWSRequest UpdateSecurityPolicy where
  type
    AWSResponse UpdateSecurityPolicy =
      UpdateSecurityPolicyResponse
  request :: (Service -> Service)
-> UpdateSecurityPolicy -> Request UpdateSecurityPolicy
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 UpdateSecurityPolicy
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateSecurityPolicy)))
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 SecurityPolicyDetail -> Int -> UpdateSecurityPolicyResponse
UpdateSecurityPolicyResponse'
            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
"securityPolicyDetail")
            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 UpdateSecurityPolicy where
  hashWithSalt :: Int -> UpdateSecurityPolicy -> Int
hashWithSalt Int
_salt UpdateSecurityPolicy' {Maybe Text
Text
SecurityPolicyType
type' :: SecurityPolicyType
policyVersion :: Text
name :: Text
policy :: Maybe Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':UpdateSecurityPolicy' :: UpdateSecurityPolicy -> SecurityPolicyType
$sel:policyVersion:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:name:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:policy:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:description:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:clientToken:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> 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` SecurityPolicyType
type'

instance Prelude.NFData UpdateSecurityPolicy where
  rnf :: UpdateSecurityPolicy -> ()
rnf UpdateSecurityPolicy' {Maybe Text
Text
SecurityPolicyType
type' :: SecurityPolicyType
policyVersion :: Text
name :: Text
policy :: Maybe Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':UpdateSecurityPolicy' :: UpdateSecurityPolicy -> SecurityPolicyType
$sel:policyVersion:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:name:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:policy:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:description:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:clientToken:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> 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 SecurityPolicyType
type'

instance Data.ToHeaders UpdateSecurityPolicy where
  toHeaders :: UpdateSecurityPolicy -> 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.UpdateSecurityPolicy" ::
                          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 UpdateSecurityPolicy where
  toJSON :: UpdateSecurityPolicy -> Value
toJSON UpdateSecurityPolicy' {Maybe Text
Text
SecurityPolicyType
type' :: SecurityPolicyType
policyVersion :: Text
name :: Text
policy :: Maybe Text
description :: Maybe Text
clientToken :: Maybe Text
$sel:type':UpdateSecurityPolicy' :: UpdateSecurityPolicy -> SecurityPolicyType
$sel:policyVersion:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:name:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Text
$sel:policy:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:description:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> Maybe Text
$sel:clientToken:UpdateSecurityPolicy' :: UpdateSecurityPolicy -> 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..= SecurityPolicyType
type')
          ]
      )

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

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

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

-- |
-- Create a value of 'UpdateSecurityPolicyResponse' 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:
--
-- 'securityPolicyDetail', 'updateSecurityPolicyResponse_securityPolicyDetail' - Details about the updated security policy.
--
-- 'httpStatus', 'updateSecurityPolicyResponse_httpStatus' - The response's http status code.
newUpdateSecurityPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateSecurityPolicyResponse
newUpdateSecurityPolicyResponse :: Int -> UpdateSecurityPolicyResponse
newUpdateSecurityPolicyResponse Int
pHttpStatus_ =
  UpdateSecurityPolicyResponse'
    { $sel:securityPolicyDetail:UpdateSecurityPolicyResponse' :: Maybe SecurityPolicyDetail
securityPolicyDetail =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateSecurityPolicyResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Details about the updated security policy.
updateSecurityPolicyResponse_securityPolicyDetail :: Lens.Lens' UpdateSecurityPolicyResponse (Prelude.Maybe SecurityPolicyDetail)
updateSecurityPolicyResponse_securityPolicyDetail :: Lens' UpdateSecurityPolicyResponse (Maybe SecurityPolicyDetail)
updateSecurityPolicyResponse_securityPolicyDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSecurityPolicyResponse' {Maybe SecurityPolicyDetail
securityPolicyDetail :: Maybe SecurityPolicyDetail
$sel:securityPolicyDetail:UpdateSecurityPolicyResponse' :: UpdateSecurityPolicyResponse -> Maybe SecurityPolicyDetail
securityPolicyDetail} -> Maybe SecurityPolicyDetail
securityPolicyDetail) (\s :: UpdateSecurityPolicyResponse
s@UpdateSecurityPolicyResponse' {} Maybe SecurityPolicyDetail
a -> UpdateSecurityPolicyResponse
s {$sel:securityPolicyDetail:UpdateSecurityPolicyResponse' :: Maybe SecurityPolicyDetail
securityPolicyDetail = Maybe SecurityPolicyDetail
a} :: UpdateSecurityPolicyResponse)

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

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