{-# 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.WorkMail.ListMailboxPermissions
-- 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 the mailbox permissions associated with a user, group, or resource
-- mailbox.
--
-- This operation returns paginated results.
module Amazonka.WorkMail.ListMailboxPermissions
  ( -- * Creating a Request
    ListMailboxPermissions (..),
    newListMailboxPermissions,

    -- * Request Lenses
    listMailboxPermissions_maxResults,
    listMailboxPermissions_nextToken,
    listMailboxPermissions_organizationId,
    listMailboxPermissions_entityId,

    -- * Destructuring the Response
    ListMailboxPermissionsResponse (..),
    newListMailboxPermissionsResponse,

    -- * Response Lenses
    listMailboxPermissionsResponse_nextToken,
    listMailboxPermissionsResponse_permissions,
    listMailboxPermissionsResponse_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.WorkMail.Types

-- | /See:/ 'newListMailboxPermissions' smart constructor.
data ListMailboxPermissions = ListMailboxPermissions'
  { -- | The maximum number of results to return in a single call.
    ListMailboxPermissions -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to use to retrieve the next page of results. The first call
    -- does not contain any tokens.
    ListMailboxPermissions -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the organization under which the user, group, or
    -- resource exists.
    ListMailboxPermissions -> Text
organizationId :: Prelude.Text,
    -- | The identifier of the user, group, or resource for which to list mailbox
    -- permissions.
    ListMailboxPermissions -> Text
entityId :: Prelude.Text
  }
  deriving (ListMailboxPermissions -> ListMailboxPermissions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListMailboxPermissions -> ListMailboxPermissions -> Bool
$c/= :: ListMailboxPermissions -> ListMailboxPermissions -> Bool
== :: ListMailboxPermissions -> ListMailboxPermissions -> Bool
$c== :: ListMailboxPermissions -> ListMailboxPermissions -> Bool
Prelude.Eq, ReadPrec [ListMailboxPermissions]
ReadPrec ListMailboxPermissions
Int -> ReadS ListMailboxPermissions
ReadS [ListMailboxPermissions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListMailboxPermissions]
$creadListPrec :: ReadPrec [ListMailboxPermissions]
readPrec :: ReadPrec ListMailboxPermissions
$creadPrec :: ReadPrec ListMailboxPermissions
readList :: ReadS [ListMailboxPermissions]
$creadList :: ReadS [ListMailboxPermissions]
readsPrec :: Int -> ReadS ListMailboxPermissions
$creadsPrec :: Int -> ReadS ListMailboxPermissions
Prelude.Read, Int -> ListMailboxPermissions -> ShowS
[ListMailboxPermissions] -> ShowS
ListMailboxPermissions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListMailboxPermissions] -> ShowS
$cshowList :: [ListMailboxPermissions] -> ShowS
show :: ListMailboxPermissions -> String
$cshow :: ListMailboxPermissions -> String
showsPrec :: Int -> ListMailboxPermissions -> ShowS
$cshowsPrec :: Int -> ListMailboxPermissions -> ShowS
Prelude.Show, forall x. Rep ListMailboxPermissions x -> ListMailboxPermissions
forall x. ListMailboxPermissions -> Rep ListMailboxPermissions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListMailboxPermissions x -> ListMailboxPermissions
$cfrom :: forall x. ListMailboxPermissions -> Rep ListMailboxPermissions x
Prelude.Generic)

-- |
-- Create a value of 'ListMailboxPermissions' 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:
--
-- 'maxResults', 'listMailboxPermissions_maxResults' - The maximum number of results to return in a single call.
--
-- 'nextToken', 'listMailboxPermissions_nextToken' - The token to use to retrieve the next page of results. The first call
-- does not contain any tokens.
--
-- 'organizationId', 'listMailboxPermissions_organizationId' - The identifier of the organization under which the user, group, or
-- resource exists.
--
-- 'entityId', 'listMailboxPermissions_entityId' - The identifier of the user, group, or resource for which to list mailbox
-- permissions.
newListMailboxPermissions ::
  -- | 'organizationId'
  Prelude.Text ->
  -- | 'entityId'
  Prelude.Text ->
  ListMailboxPermissions
newListMailboxPermissions :: Text -> Text -> ListMailboxPermissions
newListMailboxPermissions Text
pOrganizationId_ Text
pEntityId_ =
  ListMailboxPermissions'
    { $sel:maxResults:ListMailboxPermissions' :: Maybe Natural
maxResults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListMailboxPermissions' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:organizationId:ListMailboxPermissions' :: Text
organizationId = Text
pOrganizationId_,
      $sel:entityId:ListMailboxPermissions' :: Text
entityId = Text
pEntityId_
    }

-- | The maximum number of results to return in a single call.
listMailboxPermissions_maxResults :: Lens.Lens' ListMailboxPermissions (Prelude.Maybe Prelude.Natural)
listMailboxPermissions_maxResults :: Lens' ListMailboxPermissions (Maybe Natural)
listMailboxPermissions_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissions' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListMailboxPermissions
s@ListMailboxPermissions' {} Maybe Natural
a -> ListMailboxPermissions
s {$sel:maxResults:ListMailboxPermissions' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListMailboxPermissions)

-- | The token to use to retrieve the next page of results. The first call
-- does not contain any tokens.
listMailboxPermissions_nextToken :: Lens.Lens' ListMailboxPermissions (Prelude.Maybe Prelude.Text)
listMailboxPermissions_nextToken :: Lens' ListMailboxPermissions (Maybe Text)
listMailboxPermissions_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissions' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListMailboxPermissions
s@ListMailboxPermissions' {} Maybe Text
a -> ListMailboxPermissions
s {$sel:nextToken:ListMailboxPermissions' :: Maybe Text
nextToken = Maybe Text
a} :: ListMailboxPermissions)

-- | The identifier of the organization under which the user, group, or
-- resource exists.
listMailboxPermissions_organizationId :: Lens.Lens' ListMailboxPermissions Prelude.Text
listMailboxPermissions_organizationId :: Lens' ListMailboxPermissions Text
listMailboxPermissions_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissions' {Text
organizationId :: Text
$sel:organizationId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
organizationId} -> Text
organizationId) (\s :: ListMailboxPermissions
s@ListMailboxPermissions' {} Text
a -> ListMailboxPermissions
s {$sel:organizationId:ListMailboxPermissions' :: Text
organizationId = Text
a} :: ListMailboxPermissions)

-- | The identifier of the user, group, or resource for which to list mailbox
-- permissions.
listMailboxPermissions_entityId :: Lens.Lens' ListMailboxPermissions Prelude.Text
listMailboxPermissions_entityId :: Lens' ListMailboxPermissions Text
listMailboxPermissions_entityId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissions' {Text
entityId :: Text
$sel:entityId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
entityId} -> Text
entityId) (\s :: ListMailboxPermissions
s@ListMailboxPermissions' {} Text
a -> ListMailboxPermissions
s {$sel:entityId:ListMailboxPermissions' :: Text
entityId = Text
a} :: ListMailboxPermissions)

instance Core.AWSPager ListMailboxPermissions where
  page :: ListMailboxPermissions
-> AWSResponse ListMailboxPermissions
-> Maybe ListMailboxPermissions
page ListMailboxPermissions
rq AWSResponse ListMailboxPermissions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListMailboxPermissions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListMailboxPermissionsResponse (Maybe Text)
listMailboxPermissionsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListMailboxPermissions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListMailboxPermissionsResponse (Maybe [Permission])
listMailboxPermissionsResponse_permissions
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListMailboxPermissions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListMailboxPermissions (Maybe Text)
listMailboxPermissions_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListMailboxPermissions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListMailboxPermissionsResponse (Maybe Text)
listMailboxPermissionsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest ListMailboxPermissions where
  type
    AWSResponse ListMailboxPermissions =
      ListMailboxPermissionsResponse
  request :: (Service -> Service)
-> ListMailboxPermissions -> Request ListMailboxPermissions
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 ListMailboxPermissions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListMailboxPermissions)))
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 [Permission] -> Int -> ListMailboxPermissionsResponse
ListMailboxPermissionsResponse'
            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
"Permissions" 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 ListMailboxPermissions where
  hashWithSalt :: Int -> ListMailboxPermissions -> Int
hashWithSalt Int
_salt ListMailboxPermissions' {Maybe Natural
Maybe Text
Text
entityId :: Text
organizationId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:entityId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:organizationId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:nextToken:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Text
$sel:maxResults:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
organizationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
entityId

instance Prelude.NFData ListMailboxPermissions where
  rnf :: ListMailboxPermissions -> ()
rnf ListMailboxPermissions' {Maybe Natural
Maybe Text
Text
entityId :: Text
organizationId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:entityId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:organizationId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:nextToken:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Text
$sel:maxResults:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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
organizationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
entityId

instance Data.ToHeaders ListMailboxPermissions where
  toHeaders :: ListMailboxPermissions -> 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
"WorkMailService.ListMailboxPermissions" ::
                          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 ListMailboxPermissions where
  toJSON :: ListMailboxPermissions -> Value
toJSON ListMailboxPermissions' {Maybe Natural
Maybe Text
Text
entityId :: Text
organizationId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:entityId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:organizationId:ListMailboxPermissions' :: ListMailboxPermissions -> Text
$sel:nextToken:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Text
$sel:maxResults:ListMailboxPermissions' :: ListMailboxPermissions -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"NextToken" 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
nextToken,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OrganizationId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
organizationId),
            forall a. a -> Maybe a
Prelude.Just (Key
"EntityId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
entityId)
          ]
      )

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

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

-- | /See:/ 'newListMailboxPermissionsResponse' smart constructor.
data ListMailboxPermissionsResponse = ListMailboxPermissionsResponse'
  { -- | The token to use to retrieve the next page of results. The value is
    -- \"null\" when there are no more results to return.
    ListMailboxPermissionsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | One page of the user, group, or resource mailbox permissions.
    ListMailboxPermissionsResponse -> Maybe [Permission]
permissions :: Prelude.Maybe [Permission],
    -- | The response's http status code.
    ListMailboxPermissionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListMailboxPermissionsResponse
-> ListMailboxPermissionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListMailboxPermissionsResponse
-> ListMailboxPermissionsResponse -> Bool
$c/= :: ListMailboxPermissionsResponse
-> ListMailboxPermissionsResponse -> Bool
== :: ListMailboxPermissionsResponse
-> ListMailboxPermissionsResponse -> Bool
$c== :: ListMailboxPermissionsResponse
-> ListMailboxPermissionsResponse -> Bool
Prelude.Eq, ReadPrec [ListMailboxPermissionsResponse]
ReadPrec ListMailboxPermissionsResponse
Int -> ReadS ListMailboxPermissionsResponse
ReadS [ListMailboxPermissionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListMailboxPermissionsResponse]
$creadListPrec :: ReadPrec [ListMailboxPermissionsResponse]
readPrec :: ReadPrec ListMailboxPermissionsResponse
$creadPrec :: ReadPrec ListMailboxPermissionsResponse
readList :: ReadS [ListMailboxPermissionsResponse]
$creadList :: ReadS [ListMailboxPermissionsResponse]
readsPrec :: Int -> ReadS ListMailboxPermissionsResponse
$creadsPrec :: Int -> ReadS ListMailboxPermissionsResponse
Prelude.Read, Int -> ListMailboxPermissionsResponse -> ShowS
[ListMailboxPermissionsResponse] -> ShowS
ListMailboxPermissionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListMailboxPermissionsResponse] -> ShowS
$cshowList :: [ListMailboxPermissionsResponse] -> ShowS
show :: ListMailboxPermissionsResponse -> String
$cshow :: ListMailboxPermissionsResponse -> String
showsPrec :: Int -> ListMailboxPermissionsResponse -> ShowS
$cshowsPrec :: Int -> ListMailboxPermissionsResponse -> ShowS
Prelude.Show, forall x.
Rep ListMailboxPermissionsResponse x
-> ListMailboxPermissionsResponse
forall x.
ListMailboxPermissionsResponse
-> Rep ListMailboxPermissionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListMailboxPermissionsResponse x
-> ListMailboxPermissionsResponse
$cfrom :: forall x.
ListMailboxPermissionsResponse
-> Rep ListMailboxPermissionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListMailboxPermissionsResponse' 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', 'listMailboxPermissionsResponse_nextToken' - The token to use to retrieve the next page of results. The value is
-- \"null\" when there are no more results to return.
--
-- 'permissions', 'listMailboxPermissionsResponse_permissions' - One page of the user, group, or resource mailbox permissions.
--
-- 'httpStatus', 'listMailboxPermissionsResponse_httpStatus' - The response's http status code.
newListMailboxPermissionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListMailboxPermissionsResponse
newListMailboxPermissionsResponse :: Int -> ListMailboxPermissionsResponse
newListMailboxPermissionsResponse Int
pHttpStatus_ =
  ListMailboxPermissionsResponse'
    { $sel:nextToken:ListMailboxPermissionsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:permissions:ListMailboxPermissionsResponse' :: Maybe [Permission]
permissions = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListMailboxPermissionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to use to retrieve the next page of results. The value is
-- \"null\" when there are no more results to return.
listMailboxPermissionsResponse_nextToken :: Lens.Lens' ListMailboxPermissionsResponse (Prelude.Maybe Prelude.Text)
listMailboxPermissionsResponse_nextToken :: Lens' ListMailboxPermissionsResponse (Maybe Text)
listMailboxPermissionsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissionsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListMailboxPermissionsResponse
s@ListMailboxPermissionsResponse' {} Maybe Text
a -> ListMailboxPermissionsResponse
s {$sel:nextToken:ListMailboxPermissionsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListMailboxPermissionsResponse)

-- | One page of the user, group, or resource mailbox permissions.
listMailboxPermissionsResponse_permissions :: Lens.Lens' ListMailboxPermissionsResponse (Prelude.Maybe [Permission])
listMailboxPermissionsResponse_permissions :: Lens' ListMailboxPermissionsResponse (Maybe [Permission])
listMailboxPermissionsResponse_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissionsResponse' {Maybe [Permission]
permissions :: Maybe [Permission]
$sel:permissions:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> Maybe [Permission]
permissions} -> Maybe [Permission]
permissions) (\s :: ListMailboxPermissionsResponse
s@ListMailboxPermissionsResponse' {} Maybe [Permission]
a -> ListMailboxPermissionsResponse
s {$sel:permissions:ListMailboxPermissionsResponse' :: Maybe [Permission]
permissions = Maybe [Permission]
a} :: ListMailboxPermissionsResponse) 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.
listMailboxPermissionsResponse_httpStatus :: Lens.Lens' ListMailboxPermissionsResponse Prelude.Int
listMailboxPermissionsResponse_httpStatus :: Lens' ListMailboxPermissionsResponse Int
listMailboxPermissionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListMailboxPermissionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListMailboxPermissionsResponse
s@ListMailboxPermissionsResponse' {} Int
a -> ListMailboxPermissionsResponse
s {$sel:httpStatus:ListMailboxPermissionsResponse' :: Int
httpStatus = Int
a} :: ListMailboxPermissionsResponse)

instance
  Prelude.NFData
    ListMailboxPermissionsResponse
  where
  rnf :: ListMailboxPermissionsResponse -> ()
rnf ListMailboxPermissionsResponse' {Int
Maybe [Permission]
Maybe Text
httpStatus :: Int
permissions :: Maybe [Permission]
nextToken :: Maybe Text
$sel:httpStatus:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> Int
$sel:permissions:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> Maybe [Permission]
$sel:nextToken:ListMailboxPermissionsResponse' :: ListMailboxPermissionsResponse -> 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 [Permission]
permissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus