{-# 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.FinSpaceData.ListPermissionGroupsByUser
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists all the permission groups that are associated with a specific user
-- account.
module Amazonka.FinSpaceData.ListPermissionGroupsByUser
  ( -- * Creating a Request
    ListPermissionGroupsByUser (..),
    newListPermissionGroupsByUser,

    -- * Request Lenses
    listPermissionGroupsByUser_nextToken,
    listPermissionGroupsByUser_userId,
    listPermissionGroupsByUser_maxResults,

    -- * Destructuring the Response
    ListPermissionGroupsByUserResponse (..),
    newListPermissionGroupsByUserResponse,

    -- * Response Lenses
    listPermissionGroupsByUserResponse_nextToken,
    listPermissionGroupsByUserResponse_permissionGroups,
    listPermissionGroupsByUserResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListPermissionGroupsByUser' smart constructor.
data ListPermissionGroupsByUser = ListPermissionGroupsByUser'
  { -- | A token that indicates where a results page should begin.
    ListPermissionGroupsByUser -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the user.
    ListPermissionGroupsByUser -> Text
userId :: Prelude.Text,
    -- | The maximum number of results per page.
    ListPermissionGroupsByUser -> Natural
maxResults :: Prelude.Natural
  }
  deriving (ListPermissionGroupsByUser -> ListPermissionGroupsByUser -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPermissionGroupsByUser -> ListPermissionGroupsByUser -> Bool
$c/= :: ListPermissionGroupsByUser -> ListPermissionGroupsByUser -> Bool
== :: ListPermissionGroupsByUser -> ListPermissionGroupsByUser -> Bool
$c== :: ListPermissionGroupsByUser -> ListPermissionGroupsByUser -> Bool
Prelude.Eq, ReadPrec [ListPermissionGroupsByUser]
ReadPrec ListPermissionGroupsByUser
Int -> ReadS ListPermissionGroupsByUser
ReadS [ListPermissionGroupsByUser]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListPermissionGroupsByUser]
$creadListPrec :: ReadPrec [ListPermissionGroupsByUser]
readPrec :: ReadPrec ListPermissionGroupsByUser
$creadPrec :: ReadPrec ListPermissionGroupsByUser
readList :: ReadS [ListPermissionGroupsByUser]
$creadList :: ReadS [ListPermissionGroupsByUser]
readsPrec :: Int -> ReadS ListPermissionGroupsByUser
$creadsPrec :: Int -> ReadS ListPermissionGroupsByUser
Prelude.Read, Int -> ListPermissionGroupsByUser -> ShowS
[ListPermissionGroupsByUser] -> ShowS
ListPermissionGroupsByUser -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPermissionGroupsByUser] -> ShowS
$cshowList :: [ListPermissionGroupsByUser] -> ShowS
show :: ListPermissionGroupsByUser -> String
$cshow :: ListPermissionGroupsByUser -> String
showsPrec :: Int -> ListPermissionGroupsByUser -> ShowS
$cshowsPrec :: Int -> ListPermissionGroupsByUser -> ShowS
Prelude.Show, forall x.
Rep ListPermissionGroupsByUser x -> ListPermissionGroupsByUser
forall x.
ListPermissionGroupsByUser -> Rep ListPermissionGroupsByUser x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListPermissionGroupsByUser x -> ListPermissionGroupsByUser
$cfrom :: forall x.
ListPermissionGroupsByUser -> Rep ListPermissionGroupsByUser x
Prelude.Generic)

-- |
-- Create a value of 'ListPermissionGroupsByUser' 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:
--
-- 'nextToken', 'listPermissionGroupsByUser_nextToken' - A token that indicates where a results page should begin.
--
-- 'userId', 'listPermissionGroupsByUser_userId' - The unique identifier for the user.
--
-- 'maxResults', 'listPermissionGroupsByUser_maxResults' - The maximum number of results per page.
newListPermissionGroupsByUser ::
  -- | 'userId'
  Prelude.Text ->
  -- | 'maxResults'
  Prelude.Natural ->
  ListPermissionGroupsByUser
newListPermissionGroupsByUser :: Text -> Natural -> ListPermissionGroupsByUser
newListPermissionGroupsByUser Text
pUserId_ Natural
pMaxResults_ =
  ListPermissionGroupsByUser'
    { $sel:nextToken:ListPermissionGroupsByUser' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:userId:ListPermissionGroupsByUser' :: Text
userId = Text
pUserId_,
      $sel:maxResults:ListPermissionGroupsByUser' :: Natural
maxResults = Natural
pMaxResults_
    }

-- | A token that indicates where a results page should begin.
listPermissionGroupsByUser_nextToken :: Lens.Lens' ListPermissionGroupsByUser (Prelude.Maybe Prelude.Text)
listPermissionGroupsByUser_nextToken :: Lens' ListPermissionGroupsByUser (Maybe Text)
listPermissionGroupsByUser_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUser' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPermissionGroupsByUser
s@ListPermissionGroupsByUser' {} Maybe Text
a -> ListPermissionGroupsByUser
s {$sel:nextToken:ListPermissionGroupsByUser' :: Maybe Text
nextToken = Maybe Text
a} :: ListPermissionGroupsByUser)

-- | The unique identifier for the user.
listPermissionGroupsByUser_userId :: Lens.Lens' ListPermissionGroupsByUser Prelude.Text
listPermissionGroupsByUser_userId :: Lens' ListPermissionGroupsByUser Text
listPermissionGroupsByUser_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUser' {Text
userId :: Text
$sel:userId:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Text
userId} -> Text
userId) (\s :: ListPermissionGroupsByUser
s@ListPermissionGroupsByUser' {} Text
a -> ListPermissionGroupsByUser
s {$sel:userId:ListPermissionGroupsByUser' :: Text
userId = Text
a} :: ListPermissionGroupsByUser)

-- | The maximum number of results per page.
listPermissionGroupsByUser_maxResults :: Lens.Lens' ListPermissionGroupsByUser Prelude.Natural
listPermissionGroupsByUser_maxResults :: Lens' ListPermissionGroupsByUser Natural
listPermissionGroupsByUser_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUser' {Natural
maxResults :: Natural
$sel:maxResults:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Natural
maxResults} -> Natural
maxResults) (\s :: ListPermissionGroupsByUser
s@ListPermissionGroupsByUser' {} Natural
a -> ListPermissionGroupsByUser
s {$sel:maxResults:ListPermissionGroupsByUser' :: Natural
maxResults = Natural
a} :: ListPermissionGroupsByUser)

instance Core.AWSRequest ListPermissionGroupsByUser where
  type
    AWSResponse ListPermissionGroupsByUser =
      ListPermissionGroupsByUserResponse
  request :: (Service -> Service)
-> ListPermissionGroupsByUser -> Request ListPermissionGroupsByUser
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListPermissionGroupsByUser
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListPermissionGroupsByUser)))
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 [PermissionGroupByUser]
-> Int
-> ListPermissionGroupsByUserResponse
ListPermissionGroupsByUserResponse'
            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
"nextToken")
            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
"permissionGroups"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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 ListPermissionGroupsByUser where
  hashWithSalt :: Int -> ListPermissionGroupsByUser -> Int
hashWithSalt Int
_salt ListPermissionGroupsByUser' {Natural
Maybe Text
Text
maxResults :: Natural
userId :: Text
nextToken :: Maybe Text
$sel:maxResults:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Natural
$sel:userId:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Text
$sel:nextToken:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
maxResults

instance Prelude.NFData ListPermissionGroupsByUser where
  rnf :: ListPermissionGroupsByUser -> ()
rnf ListPermissionGroupsByUser' {Natural
Maybe Text
Text
maxResults :: Natural
userId :: Text
nextToken :: Maybe Text
$sel:maxResults:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Natural
$sel:userId:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Text
$sel:nextToken:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
userId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
maxResults

instance Data.ToHeaders ListPermissionGroupsByUser where
  toHeaders :: ListPermissionGroupsByUser -> 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.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath ListPermissionGroupsByUser where
  toPath :: ListPermissionGroupsByUser -> ByteString
toPath ListPermissionGroupsByUser' {Natural
Maybe Text
Text
maxResults :: Natural
userId :: Text
nextToken :: Maybe Text
$sel:maxResults:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Natural
$sel:userId:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Text
$sel:nextToken:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/user/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
userId, ByteString
"/permission-groups"]

instance Data.ToQuery ListPermissionGroupsByUser where
  toQuery :: ListPermissionGroupsByUser -> QueryString
toQuery ListPermissionGroupsByUser' {Natural
Maybe Text
Text
maxResults :: Natural
userId :: Text
nextToken :: Maybe Text
$sel:maxResults:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Natural
$sel:userId:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Text
$sel:nextToken:ListPermissionGroupsByUser' :: ListPermissionGroupsByUser -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Natural
maxResults
      ]

-- | /See:/ 'newListPermissionGroupsByUserResponse' smart constructor.
data ListPermissionGroupsByUserResponse = ListPermissionGroupsByUserResponse'
  { -- | A token that indicates where a results page should begin.
    ListPermissionGroupsByUserResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of returned permission groups.
    ListPermissionGroupsByUserResponse -> Maybe [PermissionGroupByUser]
permissionGroups :: Prelude.Maybe [PermissionGroupByUser],
    -- | The response's http status code.
    ListPermissionGroupsByUserResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListPermissionGroupsByUserResponse
-> ListPermissionGroupsByUserResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPermissionGroupsByUserResponse
-> ListPermissionGroupsByUserResponse -> Bool
$c/= :: ListPermissionGroupsByUserResponse
-> ListPermissionGroupsByUserResponse -> Bool
== :: ListPermissionGroupsByUserResponse
-> ListPermissionGroupsByUserResponse -> Bool
$c== :: ListPermissionGroupsByUserResponse
-> ListPermissionGroupsByUserResponse -> Bool
Prelude.Eq, Int -> ListPermissionGroupsByUserResponse -> ShowS
[ListPermissionGroupsByUserResponse] -> ShowS
ListPermissionGroupsByUserResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPermissionGroupsByUserResponse] -> ShowS
$cshowList :: [ListPermissionGroupsByUserResponse] -> ShowS
show :: ListPermissionGroupsByUserResponse -> String
$cshow :: ListPermissionGroupsByUserResponse -> String
showsPrec :: Int -> ListPermissionGroupsByUserResponse -> ShowS
$cshowsPrec :: Int -> ListPermissionGroupsByUserResponse -> ShowS
Prelude.Show, forall x.
Rep ListPermissionGroupsByUserResponse x
-> ListPermissionGroupsByUserResponse
forall x.
ListPermissionGroupsByUserResponse
-> Rep ListPermissionGroupsByUserResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListPermissionGroupsByUserResponse x
-> ListPermissionGroupsByUserResponse
$cfrom :: forall x.
ListPermissionGroupsByUserResponse
-> Rep ListPermissionGroupsByUserResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListPermissionGroupsByUserResponse' 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:
--
-- 'nextToken', 'listPermissionGroupsByUserResponse_nextToken' - A token that indicates where a results page should begin.
--
-- 'permissionGroups', 'listPermissionGroupsByUserResponse_permissionGroups' - A list of returned permission groups.
--
-- 'httpStatus', 'listPermissionGroupsByUserResponse_httpStatus' - The response's http status code.
newListPermissionGroupsByUserResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListPermissionGroupsByUserResponse
newListPermissionGroupsByUserResponse :: Int -> ListPermissionGroupsByUserResponse
newListPermissionGroupsByUserResponse Int
pHttpStatus_ =
  ListPermissionGroupsByUserResponse'
    { $sel:nextToken:ListPermissionGroupsByUserResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:permissionGroups:ListPermissionGroupsByUserResponse' :: Maybe [PermissionGroupByUser]
permissionGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListPermissionGroupsByUserResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A token that indicates where a results page should begin.
listPermissionGroupsByUserResponse_nextToken :: Lens.Lens' ListPermissionGroupsByUserResponse (Prelude.Maybe Prelude.Text)
listPermissionGroupsByUserResponse_nextToken :: Lens' ListPermissionGroupsByUserResponse (Maybe Text)
listPermissionGroupsByUserResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUserResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPermissionGroupsByUserResponse
s@ListPermissionGroupsByUserResponse' {} Maybe Text
a -> ListPermissionGroupsByUserResponse
s {$sel:nextToken:ListPermissionGroupsByUserResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListPermissionGroupsByUserResponse)

-- | A list of returned permission groups.
listPermissionGroupsByUserResponse_permissionGroups :: Lens.Lens' ListPermissionGroupsByUserResponse (Prelude.Maybe [PermissionGroupByUser])
listPermissionGroupsByUserResponse_permissionGroups :: Lens'
  ListPermissionGroupsByUserResponse (Maybe [PermissionGroupByUser])
listPermissionGroupsByUserResponse_permissionGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUserResponse' {Maybe [PermissionGroupByUser]
permissionGroups :: Maybe [PermissionGroupByUser]
$sel:permissionGroups:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Maybe [PermissionGroupByUser]
permissionGroups} -> Maybe [PermissionGroupByUser]
permissionGroups) (\s :: ListPermissionGroupsByUserResponse
s@ListPermissionGroupsByUserResponse' {} Maybe [PermissionGroupByUser]
a -> ListPermissionGroupsByUserResponse
s {$sel:permissionGroups:ListPermissionGroupsByUserResponse' :: Maybe [PermissionGroupByUser]
permissionGroups = Maybe [PermissionGroupByUser]
a} :: ListPermissionGroupsByUserResponse) 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 response's http status code.
listPermissionGroupsByUserResponse_httpStatus :: Lens.Lens' ListPermissionGroupsByUserResponse Prelude.Int
listPermissionGroupsByUserResponse_httpStatus :: Lens' ListPermissionGroupsByUserResponse Int
listPermissionGroupsByUserResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPermissionGroupsByUserResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListPermissionGroupsByUserResponse
s@ListPermissionGroupsByUserResponse' {} Int
a -> ListPermissionGroupsByUserResponse
s {$sel:httpStatus:ListPermissionGroupsByUserResponse' :: Int
httpStatus = Int
a} :: ListPermissionGroupsByUserResponse)

instance
  Prelude.NFData
    ListPermissionGroupsByUserResponse
  where
  rnf :: ListPermissionGroupsByUserResponse -> ()
rnf ListPermissionGroupsByUserResponse' {Int
Maybe [PermissionGroupByUser]
Maybe Text
httpStatus :: Int
permissionGroups :: Maybe [PermissionGroupByUser]
nextToken :: Maybe Text
$sel:httpStatus:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Int
$sel:permissionGroups:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Maybe [PermissionGroupByUser]
$sel:nextToken:ListPermissionGroupsByUserResponse' :: ListPermissionGroupsByUserResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PermissionGroupByUser]
permissionGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus