{-# 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.SSOAdmin.CreatePermissionSet
-- 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 permission set within a specified IAM Identity Center
-- instance.
--
-- To grant users and groups access to AWS account resources, use
-- @ @@CreateAccountAssignment@@ @.
module Amazonka.SSOAdmin.CreatePermissionSet
  ( -- * Creating a Request
    CreatePermissionSet (..),
    newCreatePermissionSet,

    -- * Request Lenses
    createPermissionSet_description,
    createPermissionSet_relayState,
    createPermissionSet_sessionDuration,
    createPermissionSet_tags,
    createPermissionSet_name,
    createPermissionSet_instanceArn,

    -- * Destructuring the Response
    CreatePermissionSetResponse (..),
    newCreatePermissionSetResponse,

    -- * Response Lenses
    createPermissionSetResponse_permissionSet,
    createPermissionSetResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreatePermissionSet' smart constructor.
data CreatePermissionSet = CreatePermissionSet'
  { -- | The description of the PermissionSet.
    CreatePermissionSet -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Used to redirect users within the application during the federation
    -- authentication process.
    CreatePermissionSet -> Maybe Text
relayState :: Prelude.Maybe Prelude.Text,
    -- | The length of time that the application user sessions are valid in the
    -- ISO-8601 standard.
    CreatePermissionSet -> Maybe Text
sessionDuration :: Prelude.Maybe Prelude.Text,
    -- | The tags to attach to the new PermissionSet.
    CreatePermissionSet -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the PermissionSet.
    CreatePermissionSet -> Text
name :: Prelude.Text,
    -- | The ARN of the IAM Identity Center instance under which the operation
    -- will be executed. For more information about ARNs, see
    -- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
    -- in the /AWS General Reference/.
    CreatePermissionSet -> Text
instanceArn :: Prelude.Text
  }
  deriving (CreatePermissionSet -> CreatePermissionSet -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreatePermissionSet -> CreatePermissionSet -> Bool
$c/= :: CreatePermissionSet -> CreatePermissionSet -> Bool
== :: CreatePermissionSet -> CreatePermissionSet -> Bool
$c== :: CreatePermissionSet -> CreatePermissionSet -> Bool
Prelude.Eq, ReadPrec [CreatePermissionSet]
ReadPrec CreatePermissionSet
Int -> ReadS CreatePermissionSet
ReadS [CreatePermissionSet]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreatePermissionSet]
$creadListPrec :: ReadPrec [CreatePermissionSet]
readPrec :: ReadPrec CreatePermissionSet
$creadPrec :: ReadPrec CreatePermissionSet
readList :: ReadS [CreatePermissionSet]
$creadList :: ReadS [CreatePermissionSet]
readsPrec :: Int -> ReadS CreatePermissionSet
$creadsPrec :: Int -> ReadS CreatePermissionSet
Prelude.Read, Int -> CreatePermissionSet -> ShowS
[CreatePermissionSet] -> ShowS
CreatePermissionSet -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePermissionSet] -> ShowS
$cshowList :: [CreatePermissionSet] -> ShowS
show :: CreatePermissionSet -> String
$cshow :: CreatePermissionSet -> String
showsPrec :: Int -> CreatePermissionSet -> ShowS
$cshowsPrec :: Int -> CreatePermissionSet -> ShowS
Prelude.Show, forall x. Rep CreatePermissionSet x -> CreatePermissionSet
forall x. CreatePermissionSet -> Rep CreatePermissionSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreatePermissionSet x -> CreatePermissionSet
$cfrom :: forall x. CreatePermissionSet -> Rep CreatePermissionSet x
Prelude.Generic)

-- |
-- Create a value of 'CreatePermissionSet' 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:
--
-- 'description', 'createPermissionSet_description' - The description of the PermissionSet.
--
-- 'relayState', 'createPermissionSet_relayState' - Used to redirect users within the application during the federation
-- authentication process.
--
-- 'sessionDuration', 'createPermissionSet_sessionDuration' - The length of time that the application user sessions are valid in the
-- ISO-8601 standard.
--
-- 'tags', 'createPermissionSet_tags' - The tags to attach to the new PermissionSet.
--
-- 'name', 'createPermissionSet_name' - The name of the PermissionSet.
--
-- 'instanceArn', 'createPermissionSet_instanceArn' - The ARN of the IAM Identity Center instance under which the operation
-- will be executed. For more information about ARNs, see
-- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
-- in the /AWS General Reference/.
newCreatePermissionSet ::
  -- | 'name'
  Prelude.Text ->
  -- | 'instanceArn'
  Prelude.Text ->
  CreatePermissionSet
newCreatePermissionSet :: Text -> Text -> CreatePermissionSet
newCreatePermissionSet Text
pName_ Text
pInstanceArn_ =
  CreatePermissionSet'
    { $sel:description:CreatePermissionSet' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:relayState:CreatePermissionSet' :: Maybe Text
relayState = forall a. Maybe a
Prelude.Nothing,
      $sel:sessionDuration:CreatePermissionSet' :: Maybe Text
sessionDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreatePermissionSet' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreatePermissionSet' :: Text
name = Text
pName_,
      $sel:instanceArn:CreatePermissionSet' :: Text
instanceArn = Text
pInstanceArn_
    }

-- | The description of the PermissionSet.
createPermissionSet_description :: Lens.Lens' CreatePermissionSet (Prelude.Maybe Prelude.Text)
createPermissionSet_description :: Lens' CreatePermissionSet (Maybe Text)
createPermissionSet_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSet' {Maybe Text
description :: Maybe Text
$sel:description:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
description} -> Maybe Text
description) (\s :: CreatePermissionSet
s@CreatePermissionSet' {} Maybe Text
a -> CreatePermissionSet
s {$sel:description:CreatePermissionSet' :: Maybe Text
description = Maybe Text
a} :: CreatePermissionSet)

-- | Used to redirect users within the application during the federation
-- authentication process.
createPermissionSet_relayState :: Lens.Lens' CreatePermissionSet (Prelude.Maybe Prelude.Text)
createPermissionSet_relayState :: Lens' CreatePermissionSet (Maybe Text)
createPermissionSet_relayState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSet' {Maybe Text
relayState :: Maybe Text
$sel:relayState:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
relayState} -> Maybe Text
relayState) (\s :: CreatePermissionSet
s@CreatePermissionSet' {} Maybe Text
a -> CreatePermissionSet
s {$sel:relayState:CreatePermissionSet' :: Maybe Text
relayState = Maybe Text
a} :: CreatePermissionSet)

-- | The length of time that the application user sessions are valid in the
-- ISO-8601 standard.
createPermissionSet_sessionDuration :: Lens.Lens' CreatePermissionSet (Prelude.Maybe Prelude.Text)
createPermissionSet_sessionDuration :: Lens' CreatePermissionSet (Maybe Text)
createPermissionSet_sessionDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSet' {Maybe Text
sessionDuration :: Maybe Text
$sel:sessionDuration:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
sessionDuration} -> Maybe Text
sessionDuration) (\s :: CreatePermissionSet
s@CreatePermissionSet' {} Maybe Text
a -> CreatePermissionSet
s {$sel:sessionDuration:CreatePermissionSet' :: Maybe Text
sessionDuration = Maybe Text
a} :: CreatePermissionSet)

-- | The tags to attach to the new PermissionSet.
createPermissionSet_tags :: Lens.Lens' CreatePermissionSet (Prelude.Maybe [Tag])
createPermissionSet_tags :: Lens' CreatePermissionSet (Maybe [Tag])
createPermissionSet_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSet' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreatePermissionSet' :: CreatePermissionSet -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreatePermissionSet
s@CreatePermissionSet' {} Maybe [Tag]
a -> CreatePermissionSet
s {$sel:tags:CreatePermissionSet' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreatePermissionSet) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | The ARN of the IAM Identity Center instance under which the operation
-- will be executed. For more information about ARNs, see
-- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
-- in the /AWS General Reference/.
createPermissionSet_instanceArn :: Lens.Lens' CreatePermissionSet Prelude.Text
createPermissionSet_instanceArn :: Lens' CreatePermissionSet Text
createPermissionSet_instanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSet' {Text
instanceArn :: Text
$sel:instanceArn:CreatePermissionSet' :: CreatePermissionSet -> Text
instanceArn} -> Text
instanceArn) (\s :: CreatePermissionSet
s@CreatePermissionSet' {} Text
a -> CreatePermissionSet
s {$sel:instanceArn:CreatePermissionSet' :: Text
instanceArn = Text
a} :: CreatePermissionSet)

instance Core.AWSRequest CreatePermissionSet where
  type
    AWSResponse CreatePermissionSet =
      CreatePermissionSetResponse
  request :: (Service -> Service)
-> CreatePermissionSet -> Request CreatePermissionSet
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 CreatePermissionSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreatePermissionSet)))
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 PermissionSet -> Int -> CreatePermissionSetResponse
CreatePermissionSetResponse'
            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
"PermissionSet")
            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 CreatePermissionSet where
  hashWithSalt :: Int -> CreatePermissionSet -> Int
hashWithSalt Int
_salt CreatePermissionSet' {Maybe [Tag]
Maybe Text
Text
instanceArn :: Text
name :: Text
tags :: Maybe [Tag]
sessionDuration :: Maybe Text
relayState :: Maybe Text
description :: Maybe Text
$sel:instanceArn:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:name:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:tags:CreatePermissionSet' :: CreatePermissionSet -> Maybe [Tag]
$sel:sessionDuration:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:relayState:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:description:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
relayState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sessionDuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceArn

instance Prelude.NFData CreatePermissionSet where
  rnf :: CreatePermissionSet -> ()
rnf CreatePermissionSet' {Maybe [Tag]
Maybe Text
Text
instanceArn :: Text
name :: Text
tags :: Maybe [Tag]
sessionDuration :: Maybe Text
relayState :: Maybe Text
description :: Maybe Text
$sel:instanceArn:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:name:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:tags:CreatePermissionSet' :: CreatePermissionSet -> Maybe [Tag]
$sel:sessionDuration:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:relayState:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:description:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
..} =
    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
relayState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sessionDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      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
instanceArn

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

instance Data.ToJSON CreatePermissionSet where
  toJSON :: CreatePermissionSet -> Value
toJSON CreatePermissionSet' {Maybe [Tag]
Maybe Text
Text
instanceArn :: Text
name :: Text
tags :: Maybe [Tag]
sessionDuration :: Maybe Text
relayState :: Maybe Text
description :: Maybe Text
$sel:instanceArn:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:name:CreatePermissionSet' :: CreatePermissionSet -> Text
$sel:tags:CreatePermissionSet' :: CreatePermissionSet -> Maybe [Tag]
$sel:sessionDuration:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:relayState:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
$sel:description:CreatePermissionSet' :: CreatePermissionSet -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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
"RelayState" 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
relayState,
            (Key
"SessionDuration" 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
sessionDuration,
            (Key
"Tags" 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 [Tag]
tags,
            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
"InstanceArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
instanceArn)
          ]
      )

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

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

-- | /See:/ 'newCreatePermissionSetResponse' smart constructor.
data CreatePermissionSetResponse = CreatePermissionSetResponse'
  { -- | Defines the level of access on an AWS account.
    CreatePermissionSetResponse -> Maybe PermissionSet
permissionSet :: Prelude.Maybe PermissionSet,
    -- | The response's http status code.
    CreatePermissionSetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreatePermissionSetResponse -> CreatePermissionSetResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreatePermissionSetResponse -> CreatePermissionSetResponse -> Bool
$c/= :: CreatePermissionSetResponse -> CreatePermissionSetResponse -> Bool
== :: CreatePermissionSetResponse -> CreatePermissionSetResponse -> Bool
$c== :: CreatePermissionSetResponse -> CreatePermissionSetResponse -> Bool
Prelude.Eq, ReadPrec [CreatePermissionSetResponse]
ReadPrec CreatePermissionSetResponse
Int -> ReadS CreatePermissionSetResponse
ReadS [CreatePermissionSetResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreatePermissionSetResponse]
$creadListPrec :: ReadPrec [CreatePermissionSetResponse]
readPrec :: ReadPrec CreatePermissionSetResponse
$creadPrec :: ReadPrec CreatePermissionSetResponse
readList :: ReadS [CreatePermissionSetResponse]
$creadList :: ReadS [CreatePermissionSetResponse]
readsPrec :: Int -> ReadS CreatePermissionSetResponse
$creadsPrec :: Int -> ReadS CreatePermissionSetResponse
Prelude.Read, Int -> CreatePermissionSetResponse -> ShowS
[CreatePermissionSetResponse] -> ShowS
CreatePermissionSetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePermissionSetResponse] -> ShowS
$cshowList :: [CreatePermissionSetResponse] -> ShowS
show :: CreatePermissionSetResponse -> String
$cshow :: CreatePermissionSetResponse -> String
showsPrec :: Int -> CreatePermissionSetResponse -> ShowS
$cshowsPrec :: Int -> CreatePermissionSetResponse -> ShowS
Prelude.Show, forall x.
Rep CreatePermissionSetResponse x -> CreatePermissionSetResponse
forall x.
CreatePermissionSetResponse -> Rep CreatePermissionSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreatePermissionSetResponse x -> CreatePermissionSetResponse
$cfrom :: forall x.
CreatePermissionSetResponse -> Rep CreatePermissionSetResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreatePermissionSetResponse' 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:
--
-- 'permissionSet', 'createPermissionSetResponse_permissionSet' - Defines the level of access on an AWS account.
--
-- 'httpStatus', 'createPermissionSetResponse_httpStatus' - The response's http status code.
newCreatePermissionSetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreatePermissionSetResponse
newCreatePermissionSetResponse :: Int -> CreatePermissionSetResponse
newCreatePermissionSetResponse Int
pHttpStatus_ =
  CreatePermissionSetResponse'
    { $sel:permissionSet:CreatePermissionSetResponse' :: Maybe PermissionSet
permissionSet =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreatePermissionSetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Defines the level of access on an AWS account.
createPermissionSetResponse_permissionSet :: Lens.Lens' CreatePermissionSetResponse (Prelude.Maybe PermissionSet)
createPermissionSetResponse_permissionSet :: Lens' CreatePermissionSetResponse (Maybe PermissionSet)
createPermissionSetResponse_permissionSet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePermissionSetResponse' {Maybe PermissionSet
permissionSet :: Maybe PermissionSet
$sel:permissionSet:CreatePermissionSetResponse' :: CreatePermissionSetResponse -> Maybe PermissionSet
permissionSet} -> Maybe PermissionSet
permissionSet) (\s :: CreatePermissionSetResponse
s@CreatePermissionSetResponse' {} Maybe PermissionSet
a -> CreatePermissionSetResponse
s {$sel:permissionSet:CreatePermissionSetResponse' :: Maybe PermissionSet
permissionSet = Maybe PermissionSet
a} :: CreatePermissionSetResponse)

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

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