{-# 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.QuickSight.UpdateFolderPermissions
-- 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 permissions of a folder.
module Amazonka.QuickSight.UpdateFolderPermissions
  ( -- * Creating a Request
    UpdateFolderPermissions (..),
    newUpdateFolderPermissions,

    -- * Request Lenses
    updateFolderPermissions_grantPermissions,
    updateFolderPermissions_revokePermissions,
    updateFolderPermissions_awsAccountId,
    updateFolderPermissions_folderId,

    -- * Destructuring the Response
    UpdateFolderPermissionsResponse (..),
    newUpdateFolderPermissionsResponse,

    -- * Response Lenses
    updateFolderPermissionsResponse_arn,
    updateFolderPermissionsResponse_folderId,
    updateFolderPermissionsResponse_permissions,
    updateFolderPermissionsResponse_requestId,
    updateFolderPermissionsResponse_status,
    updateFolderPermissionsResponse_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 Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateFolderPermissions' smart constructor.
data UpdateFolderPermissions = UpdateFolderPermissions'
  { -- | The permissions that you want to grant on a resource.
    UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
grantPermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
    -- | The permissions that you want to revoke from a resource.
    UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
revokePermissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
    -- | The ID for the Amazon Web Services account that contains the folder to
    -- update.
    UpdateFolderPermissions -> Text
awsAccountId :: Prelude.Text,
    -- | The ID of the folder.
    UpdateFolderPermissions -> Text
folderId :: Prelude.Text
  }
  deriving (UpdateFolderPermissions -> UpdateFolderPermissions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateFolderPermissions -> UpdateFolderPermissions -> Bool
$c/= :: UpdateFolderPermissions -> UpdateFolderPermissions -> Bool
== :: UpdateFolderPermissions -> UpdateFolderPermissions -> Bool
$c== :: UpdateFolderPermissions -> UpdateFolderPermissions -> Bool
Prelude.Eq, ReadPrec [UpdateFolderPermissions]
ReadPrec UpdateFolderPermissions
Int -> ReadS UpdateFolderPermissions
ReadS [UpdateFolderPermissions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateFolderPermissions]
$creadListPrec :: ReadPrec [UpdateFolderPermissions]
readPrec :: ReadPrec UpdateFolderPermissions
$creadPrec :: ReadPrec UpdateFolderPermissions
readList :: ReadS [UpdateFolderPermissions]
$creadList :: ReadS [UpdateFolderPermissions]
readsPrec :: Int -> ReadS UpdateFolderPermissions
$creadsPrec :: Int -> ReadS UpdateFolderPermissions
Prelude.Read, Int -> UpdateFolderPermissions -> ShowS
[UpdateFolderPermissions] -> ShowS
UpdateFolderPermissions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateFolderPermissions] -> ShowS
$cshowList :: [UpdateFolderPermissions] -> ShowS
show :: UpdateFolderPermissions -> String
$cshow :: UpdateFolderPermissions -> String
showsPrec :: Int -> UpdateFolderPermissions -> ShowS
$cshowsPrec :: Int -> UpdateFolderPermissions -> ShowS
Prelude.Show, forall x. Rep UpdateFolderPermissions x -> UpdateFolderPermissions
forall x. UpdateFolderPermissions -> Rep UpdateFolderPermissions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateFolderPermissions x -> UpdateFolderPermissions
$cfrom :: forall x. UpdateFolderPermissions -> Rep UpdateFolderPermissions x
Prelude.Generic)

-- |
-- Create a value of 'UpdateFolderPermissions' 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:
--
-- 'grantPermissions', 'updateFolderPermissions_grantPermissions' - The permissions that you want to grant on a resource.
--
-- 'revokePermissions', 'updateFolderPermissions_revokePermissions' - The permissions that you want to revoke from a resource.
--
-- 'awsAccountId', 'updateFolderPermissions_awsAccountId' - The ID for the Amazon Web Services account that contains the folder to
-- update.
--
-- 'folderId', 'updateFolderPermissions_folderId' - The ID of the folder.
newUpdateFolderPermissions ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'folderId'
  Prelude.Text ->
  UpdateFolderPermissions
newUpdateFolderPermissions :: Text -> Text -> UpdateFolderPermissions
newUpdateFolderPermissions Text
pAwsAccountId_ Text
pFolderId_ =
  UpdateFolderPermissions'
    { $sel:grantPermissions:UpdateFolderPermissions' :: Maybe (NonEmpty ResourcePermission)
grantPermissions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:revokePermissions:UpdateFolderPermissions' :: Maybe (NonEmpty ResourcePermission)
revokePermissions = forall a. Maybe a
Prelude.Nothing,
      $sel:awsAccountId:UpdateFolderPermissions' :: Text
awsAccountId = Text
pAwsAccountId_,
      $sel:folderId:UpdateFolderPermissions' :: Text
folderId = Text
pFolderId_
    }

-- | The permissions that you want to grant on a resource.
updateFolderPermissions_grantPermissions :: Lens.Lens' UpdateFolderPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
updateFolderPermissions_grantPermissions :: Lens' UpdateFolderPermissions (Maybe (NonEmpty ResourcePermission))
updateFolderPermissions_grantPermissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
grantPermissions :: Maybe (NonEmpty ResourcePermission)
$sel:grantPermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
grantPermissions} -> Maybe (NonEmpty ResourcePermission)
grantPermissions) (\s :: UpdateFolderPermissions
s@UpdateFolderPermissions' {} Maybe (NonEmpty ResourcePermission)
a -> UpdateFolderPermissions
s {$sel:grantPermissions:UpdateFolderPermissions' :: Maybe (NonEmpty ResourcePermission)
grantPermissions = Maybe (NonEmpty ResourcePermission)
a} :: UpdateFolderPermissions) 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 permissions that you want to revoke from a resource.
updateFolderPermissions_revokePermissions :: Lens.Lens' UpdateFolderPermissions (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
updateFolderPermissions_revokePermissions :: Lens' UpdateFolderPermissions (Maybe (NonEmpty ResourcePermission))
updateFolderPermissions_revokePermissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
revokePermissions :: Maybe (NonEmpty ResourcePermission)
$sel:revokePermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
revokePermissions} -> Maybe (NonEmpty ResourcePermission)
revokePermissions) (\s :: UpdateFolderPermissions
s@UpdateFolderPermissions' {} Maybe (NonEmpty ResourcePermission)
a -> UpdateFolderPermissions
s {$sel:revokePermissions:UpdateFolderPermissions' :: Maybe (NonEmpty ResourcePermission)
revokePermissions = Maybe (NonEmpty ResourcePermission)
a} :: UpdateFolderPermissions) 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 ID for the Amazon Web Services account that contains the folder to
-- update.
updateFolderPermissions_awsAccountId :: Lens.Lens' UpdateFolderPermissions Prelude.Text
updateFolderPermissions_awsAccountId :: Lens' UpdateFolderPermissions Text
updateFolderPermissions_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissions' {Text
awsAccountId :: Text
$sel:awsAccountId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
awsAccountId} -> Text
awsAccountId) (\s :: UpdateFolderPermissions
s@UpdateFolderPermissions' {} Text
a -> UpdateFolderPermissions
s {$sel:awsAccountId:UpdateFolderPermissions' :: Text
awsAccountId = Text
a} :: UpdateFolderPermissions)

-- | The ID of the folder.
updateFolderPermissions_folderId :: Lens.Lens' UpdateFolderPermissions Prelude.Text
updateFolderPermissions_folderId :: Lens' UpdateFolderPermissions Text
updateFolderPermissions_folderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissions' {Text
folderId :: Text
$sel:folderId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
folderId} -> Text
folderId) (\s :: UpdateFolderPermissions
s@UpdateFolderPermissions' {} Text
a -> UpdateFolderPermissions
s {$sel:folderId:UpdateFolderPermissions' :: Text
folderId = Text
a} :: UpdateFolderPermissions)

instance Core.AWSRequest UpdateFolderPermissions where
  type
    AWSResponse UpdateFolderPermissions =
      UpdateFolderPermissionsResponse
  request :: (Service -> Service)
-> UpdateFolderPermissions -> Request UpdateFolderPermissions
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateFolderPermissions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateFolderPermissions)))
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 Text
-> Maybe Text
-> Maybe (NonEmpty ResourcePermission)
-> Maybe Text
-> Maybe Int
-> Int
-> UpdateFolderPermissionsResponse
UpdateFolderPermissionsResponse'
            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
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"FolderId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Permissions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RequestId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Status")
            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 UpdateFolderPermissions where
  hashWithSalt :: Int -> UpdateFolderPermissions -> Int
hashWithSalt Int
_salt UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
Text
folderId :: Text
awsAccountId :: Text
revokePermissions :: Maybe (NonEmpty ResourcePermission)
grantPermissions :: Maybe (NonEmpty ResourcePermission)
$sel:folderId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:awsAccountId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:revokePermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
$sel:grantPermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ResourcePermission)
grantPermissions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ResourcePermission)
revokePermissions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
folderId

instance Prelude.NFData UpdateFolderPermissions where
  rnf :: UpdateFolderPermissions -> ()
rnf UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
Text
folderId :: Text
awsAccountId :: Text
revokePermissions :: Maybe (NonEmpty ResourcePermission)
grantPermissions :: Maybe (NonEmpty ResourcePermission)
$sel:folderId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:awsAccountId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:revokePermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
$sel:grantPermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ResourcePermission)
grantPermissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ResourcePermission)
revokePermissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
folderId

instance Data.ToHeaders UpdateFolderPermissions where
  toHeaders :: UpdateFolderPermissions -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateFolderPermissions where
  toJSON :: UpdateFolderPermissions -> Value
toJSON UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
Text
folderId :: Text
awsAccountId :: Text
revokePermissions :: Maybe (NonEmpty ResourcePermission)
grantPermissions :: Maybe (NonEmpty ResourcePermission)
$sel:folderId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:awsAccountId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:revokePermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
$sel:grantPermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"GrantPermissions" 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 (NonEmpty ResourcePermission)
grantPermissions,
            (Key
"RevokePermissions" 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 (NonEmpty ResourcePermission)
revokePermissions
          ]
      )

instance Data.ToPath UpdateFolderPermissions where
  toPath :: UpdateFolderPermissions -> ByteString
toPath UpdateFolderPermissions' {Maybe (NonEmpty ResourcePermission)
Text
folderId :: Text
awsAccountId :: Text
revokePermissions :: Maybe (NonEmpty ResourcePermission)
grantPermissions :: Maybe (NonEmpty ResourcePermission)
$sel:folderId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:awsAccountId:UpdateFolderPermissions' :: UpdateFolderPermissions -> Text
$sel:revokePermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
$sel:grantPermissions:UpdateFolderPermissions' :: UpdateFolderPermissions -> Maybe (NonEmpty ResourcePermission)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/folders/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
folderId,
        ByteString
"/permissions"
      ]

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

-- | /See:/ 'newUpdateFolderPermissionsResponse' smart constructor.
data UpdateFolderPermissionsResponse = UpdateFolderPermissionsResponse'
  { -- | The Amazon Resource Name (ARN) of the folder.
    UpdateFolderPermissionsResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The ID of the folder.
    UpdateFolderPermissionsResponse -> Maybe Text
folderId :: Prelude.Maybe Prelude.Text,
    -- | Information about the permissions for the folder.
    UpdateFolderPermissionsResponse
-> Maybe (NonEmpty ResourcePermission)
permissions :: Prelude.Maybe (Prelude.NonEmpty ResourcePermission),
    -- | The Amazon Web Services request ID for this operation.
    UpdateFolderPermissionsResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | The HTTP status of the request.
    UpdateFolderPermissionsResponse -> Maybe Int
status :: Prelude.Maybe Prelude.Int,
    -- | The response's http status code.
    UpdateFolderPermissionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateFolderPermissionsResponse
-> UpdateFolderPermissionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateFolderPermissionsResponse
-> UpdateFolderPermissionsResponse -> Bool
$c/= :: UpdateFolderPermissionsResponse
-> UpdateFolderPermissionsResponse -> Bool
== :: UpdateFolderPermissionsResponse
-> UpdateFolderPermissionsResponse -> Bool
$c== :: UpdateFolderPermissionsResponse
-> UpdateFolderPermissionsResponse -> Bool
Prelude.Eq, ReadPrec [UpdateFolderPermissionsResponse]
ReadPrec UpdateFolderPermissionsResponse
Int -> ReadS UpdateFolderPermissionsResponse
ReadS [UpdateFolderPermissionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateFolderPermissionsResponse]
$creadListPrec :: ReadPrec [UpdateFolderPermissionsResponse]
readPrec :: ReadPrec UpdateFolderPermissionsResponse
$creadPrec :: ReadPrec UpdateFolderPermissionsResponse
readList :: ReadS [UpdateFolderPermissionsResponse]
$creadList :: ReadS [UpdateFolderPermissionsResponse]
readsPrec :: Int -> ReadS UpdateFolderPermissionsResponse
$creadsPrec :: Int -> ReadS UpdateFolderPermissionsResponse
Prelude.Read, Int -> UpdateFolderPermissionsResponse -> ShowS
[UpdateFolderPermissionsResponse] -> ShowS
UpdateFolderPermissionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateFolderPermissionsResponse] -> ShowS
$cshowList :: [UpdateFolderPermissionsResponse] -> ShowS
show :: UpdateFolderPermissionsResponse -> String
$cshow :: UpdateFolderPermissionsResponse -> String
showsPrec :: Int -> UpdateFolderPermissionsResponse -> ShowS
$cshowsPrec :: Int -> UpdateFolderPermissionsResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateFolderPermissionsResponse x
-> UpdateFolderPermissionsResponse
forall x.
UpdateFolderPermissionsResponse
-> Rep UpdateFolderPermissionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateFolderPermissionsResponse x
-> UpdateFolderPermissionsResponse
$cfrom :: forall x.
UpdateFolderPermissionsResponse
-> Rep UpdateFolderPermissionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateFolderPermissionsResponse' 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:
--
-- 'arn', 'updateFolderPermissionsResponse_arn' - The Amazon Resource Name (ARN) of the folder.
--
-- 'folderId', 'updateFolderPermissionsResponse_folderId' - The ID of the folder.
--
-- 'permissions', 'updateFolderPermissionsResponse_permissions' - Information about the permissions for the folder.
--
-- 'requestId', 'updateFolderPermissionsResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'status', 'updateFolderPermissionsResponse_status' - The HTTP status of the request.
--
-- 'httpStatus', 'updateFolderPermissionsResponse_httpStatus' - The response's http status code.
newUpdateFolderPermissionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateFolderPermissionsResponse
newUpdateFolderPermissionsResponse :: Int -> UpdateFolderPermissionsResponse
newUpdateFolderPermissionsResponse Int
pHttpStatus_ =
  UpdateFolderPermissionsResponse'
    { $sel:arn:UpdateFolderPermissionsResponse' :: Maybe Text
arn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:folderId:UpdateFolderPermissionsResponse' :: Maybe Text
folderId = forall a. Maybe a
Prelude.Nothing,
      $sel:permissions:UpdateFolderPermissionsResponse' :: Maybe (NonEmpty ResourcePermission)
permissions = forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:UpdateFolderPermissionsResponse' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdateFolderPermissionsResponse' :: Maybe Int
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateFolderPermissionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the folder.
updateFolderPermissionsResponse_arn :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
updateFolderPermissionsResponse_arn :: Lens' UpdateFolderPermissionsResponse (Maybe Text)
updateFolderPermissionsResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissionsResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: UpdateFolderPermissionsResponse
s@UpdateFolderPermissionsResponse' {} Maybe Text
a -> UpdateFolderPermissionsResponse
s {$sel:arn:UpdateFolderPermissionsResponse' :: Maybe Text
arn = Maybe Text
a} :: UpdateFolderPermissionsResponse)

-- | The ID of the folder.
updateFolderPermissionsResponse_folderId :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
updateFolderPermissionsResponse_folderId :: Lens' UpdateFolderPermissionsResponse (Maybe Text)
updateFolderPermissionsResponse_folderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissionsResponse' {Maybe Text
folderId :: Maybe Text
$sel:folderId:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
folderId} -> Maybe Text
folderId) (\s :: UpdateFolderPermissionsResponse
s@UpdateFolderPermissionsResponse' {} Maybe Text
a -> UpdateFolderPermissionsResponse
s {$sel:folderId:UpdateFolderPermissionsResponse' :: Maybe Text
folderId = Maybe Text
a} :: UpdateFolderPermissionsResponse)

-- | Information about the permissions for the folder.
updateFolderPermissionsResponse_permissions :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
updateFolderPermissionsResponse_permissions :: Lens'
  UpdateFolderPermissionsResponse
  (Maybe (NonEmpty ResourcePermission))
updateFolderPermissionsResponse_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissionsResponse' {Maybe (NonEmpty ResourcePermission)
permissions :: Maybe (NonEmpty ResourcePermission)
$sel:permissions:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse
-> Maybe (NonEmpty ResourcePermission)
permissions} -> Maybe (NonEmpty ResourcePermission)
permissions) (\s :: UpdateFolderPermissionsResponse
s@UpdateFolderPermissionsResponse' {} Maybe (NonEmpty ResourcePermission)
a -> UpdateFolderPermissionsResponse
s {$sel:permissions:UpdateFolderPermissionsResponse' :: Maybe (NonEmpty ResourcePermission)
permissions = Maybe (NonEmpty ResourcePermission)
a} :: UpdateFolderPermissionsResponse) 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 Amazon Web Services request ID for this operation.
updateFolderPermissionsResponse_requestId :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Text)
updateFolderPermissionsResponse_requestId :: Lens' UpdateFolderPermissionsResponse (Maybe Text)
updateFolderPermissionsResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissionsResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: UpdateFolderPermissionsResponse
s@UpdateFolderPermissionsResponse' {} Maybe Text
a -> UpdateFolderPermissionsResponse
s {$sel:requestId:UpdateFolderPermissionsResponse' :: Maybe Text
requestId = Maybe Text
a} :: UpdateFolderPermissionsResponse)

-- | The HTTP status of the request.
updateFolderPermissionsResponse_status :: Lens.Lens' UpdateFolderPermissionsResponse (Prelude.Maybe Prelude.Int)
updateFolderPermissionsResponse_status :: Lens' UpdateFolderPermissionsResponse (Maybe Int)
updateFolderPermissionsResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFolderPermissionsResponse' {Maybe Int
status :: Maybe Int
$sel:status:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Int
status} -> Maybe Int
status) (\s :: UpdateFolderPermissionsResponse
s@UpdateFolderPermissionsResponse' {} Maybe Int
a -> UpdateFolderPermissionsResponse
s {$sel:status:UpdateFolderPermissionsResponse' :: Maybe Int
status = Maybe Int
a} :: UpdateFolderPermissionsResponse)

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

instance
  Prelude.NFData
    UpdateFolderPermissionsResponse
  where
  rnf :: UpdateFolderPermissionsResponse -> ()
rnf UpdateFolderPermissionsResponse' {Int
Maybe Int
Maybe (NonEmpty ResourcePermission)
Maybe Text
httpStatus :: Int
status :: Maybe Int
requestId :: Maybe Text
permissions :: Maybe (NonEmpty ResourcePermission)
folderId :: Maybe Text
arn :: Maybe Text
$sel:httpStatus:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Int
$sel:status:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Int
$sel:requestId:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
$sel:permissions:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse
-> Maybe (NonEmpty ResourcePermission)
$sel:folderId:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
$sel:arn:UpdateFolderPermissionsResponse' :: UpdateFolderPermissionsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
folderId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ResourcePermission)
permissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus