{-# 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.ServiceCatalog.ListOrganizationPortfolioAccess
-- 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 organization nodes that have access to the specified
-- portfolio. This API can only be called by the management account in the
-- organization or by a delegated admin.
--
-- If a delegated admin is de-registered, they can no longer perform this
-- operation.
--
-- This operation returns paginated results.
module Amazonka.ServiceCatalog.ListOrganizationPortfolioAccess
  ( -- * Creating a Request
    ListOrganizationPortfolioAccess (..),
    newListOrganizationPortfolioAccess,

    -- * Request Lenses
    listOrganizationPortfolioAccess_acceptLanguage,
    listOrganizationPortfolioAccess_pageSize,
    listOrganizationPortfolioAccess_pageToken,
    listOrganizationPortfolioAccess_portfolioId,
    listOrganizationPortfolioAccess_organizationNodeType,

    -- * Destructuring the Response
    ListOrganizationPortfolioAccessResponse (..),
    newListOrganizationPortfolioAccessResponse,

    -- * Response Lenses
    listOrganizationPortfolioAccessResponse_nextPageToken,
    listOrganizationPortfolioAccessResponse_organizationNodes,
    listOrganizationPortfolioAccessResponse_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.ServiceCatalog.Types

-- | /See:/ 'newListOrganizationPortfolioAccess' smart constructor.
data ListOrganizationPortfolioAccess = ListOrganizationPortfolioAccess'
  { -- | The language code.
    --
    -- -   @en@ - English (default)
    --
    -- -   @jp@ - Japanese
    --
    -- -   @zh@ - Chinese
    ListOrganizationPortfolioAccess -> Maybe Text
acceptLanguage :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of items to return with this call.
    ListOrganizationPortfolioAccess -> Maybe Natural
pageSize :: Prelude.Maybe Prelude.Natural,
    -- | The page token for the next set of results. To retrieve the first set of
    -- results, use null.
    ListOrganizationPortfolioAccess -> Maybe Text
pageToken :: Prelude.Maybe Prelude.Text,
    -- | The portfolio identifier. For example, @port-2abcdext3y5fk@.
    ListOrganizationPortfolioAccess -> Text
portfolioId :: Prelude.Text,
    -- | The organization node type that will be returned in the output.
    --
    -- -   @ORGANIZATION@ - Organization that has access to the portfolio.
    --
    -- -   @ORGANIZATIONAL_UNIT@ - Organizational unit that has access to the
    --     portfolio within your organization.
    --
    -- -   @ACCOUNT@ - Account that has access to the portfolio within your
    --     organization.
    ListOrganizationPortfolioAccess -> OrganizationNodeType
organizationNodeType :: OrganizationNodeType
  }
  deriving (ListOrganizationPortfolioAccess
-> ListOrganizationPortfolioAccess -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListOrganizationPortfolioAccess
-> ListOrganizationPortfolioAccess -> Bool
$c/= :: ListOrganizationPortfolioAccess
-> ListOrganizationPortfolioAccess -> Bool
== :: ListOrganizationPortfolioAccess
-> ListOrganizationPortfolioAccess -> Bool
$c== :: ListOrganizationPortfolioAccess
-> ListOrganizationPortfolioAccess -> Bool
Prelude.Eq, ReadPrec [ListOrganizationPortfolioAccess]
ReadPrec ListOrganizationPortfolioAccess
Int -> ReadS ListOrganizationPortfolioAccess
ReadS [ListOrganizationPortfolioAccess]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListOrganizationPortfolioAccess]
$creadListPrec :: ReadPrec [ListOrganizationPortfolioAccess]
readPrec :: ReadPrec ListOrganizationPortfolioAccess
$creadPrec :: ReadPrec ListOrganizationPortfolioAccess
readList :: ReadS [ListOrganizationPortfolioAccess]
$creadList :: ReadS [ListOrganizationPortfolioAccess]
readsPrec :: Int -> ReadS ListOrganizationPortfolioAccess
$creadsPrec :: Int -> ReadS ListOrganizationPortfolioAccess
Prelude.Read, Int -> ListOrganizationPortfolioAccess -> ShowS
[ListOrganizationPortfolioAccess] -> ShowS
ListOrganizationPortfolioAccess -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListOrganizationPortfolioAccess] -> ShowS
$cshowList :: [ListOrganizationPortfolioAccess] -> ShowS
show :: ListOrganizationPortfolioAccess -> String
$cshow :: ListOrganizationPortfolioAccess -> String
showsPrec :: Int -> ListOrganizationPortfolioAccess -> ShowS
$cshowsPrec :: Int -> ListOrganizationPortfolioAccess -> ShowS
Prelude.Show, forall x.
Rep ListOrganizationPortfolioAccess x
-> ListOrganizationPortfolioAccess
forall x.
ListOrganizationPortfolioAccess
-> Rep ListOrganizationPortfolioAccess x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListOrganizationPortfolioAccess x
-> ListOrganizationPortfolioAccess
$cfrom :: forall x.
ListOrganizationPortfolioAccess
-> Rep ListOrganizationPortfolioAccess x
Prelude.Generic)

-- |
-- Create a value of 'ListOrganizationPortfolioAccess' 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:
--
-- 'acceptLanguage', 'listOrganizationPortfolioAccess_acceptLanguage' - The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
--
-- 'pageSize', 'listOrganizationPortfolioAccess_pageSize' - The maximum number of items to return with this call.
--
-- 'pageToken', 'listOrganizationPortfolioAccess_pageToken' - The page token for the next set of results. To retrieve the first set of
-- results, use null.
--
-- 'portfolioId', 'listOrganizationPortfolioAccess_portfolioId' - The portfolio identifier. For example, @port-2abcdext3y5fk@.
--
-- 'organizationNodeType', 'listOrganizationPortfolioAccess_organizationNodeType' - The organization node type that will be returned in the output.
--
-- -   @ORGANIZATION@ - Organization that has access to the portfolio.
--
-- -   @ORGANIZATIONAL_UNIT@ - Organizational unit that has access to the
--     portfolio within your organization.
--
-- -   @ACCOUNT@ - Account that has access to the portfolio within your
--     organization.
newListOrganizationPortfolioAccess ::
  -- | 'portfolioId'
  Prelude.Text ->
  -- | 'organizationNodeType'
  OrganizationNodeType ->
  ListOrganizationPortfolioAccess
newListOrganizationPortfolioAccess :: Text -> OrganizationNodeType -> ListOrganizationPortfolioAccess
newListOrganizationPortfolioAccess
  Text
pPortfolioId_
  OrganizationNodeType
pOrganizationNodeType_ =
    ListOrganizationPortfolioAccess'
      { $sel:acceptLanguage:ListOrganizationPortfolioAccess' :: Maybe Text
acceptLanguage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pageSize:ListOrganizationPortfolioAccess' :: Maybe Natural
pageSize = forall a. Maybe a
Prelude.Nothing,
        $sel:pageToken:ListOrganizationPortfolioAccess' :: Maybe Text
pageToken = forall a. Maybe a
Prelude.Nothing,
        $sel:portfolioId:ListOrganizationPortfolioAccess' :: Text
portfolioId = Text
pPortfolioId_,
        $sel:organizationNodeType:ListOrganizationPortfolioAccess' :: OrganizationNodeType
organizationNodeType =
          OrganizationNodeType
pOrganizationNodeType_
      }

-- | The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
listOrganizationPortfolioAccess_acceptLanguage :: Lens.Lens' ListOrganizationPortfolioAccess (Prelude.Maybe Prelude.Text)
listOrganizationPortfolioAccess_acceptLanguage :: Lens' ListOrganizationPortfolioAccess (Maybe Text)
listOrganizationPortfolioAccess_acceptLanguage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccess' {Maybe Text
acceptLanguage :: Maybe Text
$sel:acceptLanguage:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
acceptLanguage} -> Maybe Text
acceptLanguage) (\s :: ListOrganizationPortfolioAccess
s@ListOrganizationPortfolioAccess' {} Maybe Text
a -> ListOrganizationPortfolioAccess
s {$sel:acceptLanguage:ListOrganizationPortfolioAccess' :: Maybe Text
acceptLanguage = Maybe Text
a} :: ListOrganizationPortfolioAccess)

-- | The maximum number of items to return with this call.
listOrganizationPortfolioAccess_pageSize :: Lens.Lens' ListOrganizationPortfolioAccess (Prelude.Maybe Prelude.Natural)
listOrganizationPortfolioAccess_pageSize :: Lens' ListOrganizationPortfolioAccess (Maybe Natural)
listOrganizationPortfolioAccess_pageSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccess' {Maybe Natural
pageSize :: Maybe Natural
$sel:pageSize:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Natural
pageSize} -> Maybe Natural
pageSize) (\s :: ListOrganizationPortfolioAccess
s@ListOrganizationPortfolioAccess' {} Maybe Natural
a -> ListOrganizationPortfolioAccess
s {$sel:pageSize:ListOrganizationPortfolioAccess' :: Maybe Natural
pageSize = Maybe Natural
a} :: ListOrganizationPortfolioAccess)

-- | The page token for the next set of results. To retrieve the first set of
-- results, use null.
listOrganizationPortfolioAccess_pageToken :: Lens.Lens' ListOrganizationPortfolioAccess (Prelude.Maybe Prelude.Text)
listOrganizationPortfolioAccess_pageToken :: Lens' ListOrganizationPortfolioAccess (Maybe Text)
listOrganizationPortfolioAccess_pageToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccess' {Maybe Text
pageToken :: Maybe Text
$sel:pageToken:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
pageToken} -> Maybe Text
pageToken) (\s :: ListOrganizationPortfolioAccess
s@ListOrganizationPortfolioAccess' {} Maybe Text
a -> ListOrganizationPortfolioAccess
s {$sel:pageToken:ListOrganizationPortfolioAccess' :: Maybe Text
pageToken = Maybe Text
a} :: ListOrganizationPortfolioAccess)

-- | The portfolio identifier. For example, @port-2abcdext3y5fk@.
listOrganizationPortfolioAccess_portfolioId :: Lens.Lens' ListOrganizationPortfolioAccess Prelude.Text
listOrganizationPortfolioAccess_portfolioId :: Lens' ListOrganizationPortfolioAccess Text
listOrganizationPortfolioAccess_portfolioId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccess' {Text
portfolioId :: Text
$sel:portfolioId:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Text
portfolioId} -> Text
portfolioId) (\s :: ListOrganizationPortfolioAccess
s@ListOrganizationPortfolioAccess' {} Text
a -> ListOrganizationPortfolioAccess
s {$sel:portfolioId:ListOrganizationPortfolioAccess' :: Text
portfolioId = Text
a} :: ListOrganizationPortfolioAccess)

-- | The organization node type that will be returned in the output.
--
-- -   @ORGANIZATION@ - Organization that has access to the portfolio.
--
-- -   @ORGANIZATIONAL_UNIT@ - Organizational unit that has access to the
--     portfolio within your organization.
--
-- -   @ACCOUNT@ - Account that has access to the portfolio within your
--     organization.
listOrganizationPortfolioAccess_organizationNodeType :: Lens.Lens' ListOrganizationPortfolioAccess OrganizationNodeType
listOrganizationPortfolioAccess_organizationNodeType :: Lens' ListOrganizationPortfolioAccess OrganizationNodeType
listOrganizationPortfolioAccess_organizationNodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccess' {OrganizationNodeType
organizationNodeType :: OrganizationNodeType
$sel:organizationNodeType:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> OrganizationNodeType
organizationNodeType} -> OrganizationNodeType
organizationNodeType) (\s :: ListOrganizationPortfolioAccess
s@ListOrganizationPortfolioAccess' {} OrganizationNodeType
a -> ListOrganizationPortfolioAccess
s {$sel:organizationNodeType:ListOrganizationPortfolioAccess' :: OrganizationNodeType
organizationNodeType = OrganizationNodeType
a} :: ListOrganizationPortfolioAccess)

instance
  Core.AWSPager
    ListOrganizationPortfolioAccess
  where
  page :: ListOrganizationPortfolioAccess
-> AWSResponse ListOrganizationPortfolioAccess
-> Maybe ListOrganizationPortfolioAccess
page ListOrganizationPortfolioAccess
rq AWSResponse ListOrganizationPortfolioAccess
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListOrganizationPortfolioAccess
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListOrganizationPortfolioAccessResponse (Maybe Text)
listOrganizationPortfolioAccessResponse_nextPageToken
            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 ListOrganizationPortfolioAccess
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  ListOrganizationPortfolioAccessResponse (Maybe [OrganizationNode])
listOrganizationPortfolioAccessResponse_organizationNodes
            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.$ ListOrganizationPortfolioAccess
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListOrganizationPortfolioAccess (Maybe Text)
listOrganizationPortfolioAccess_pageToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListOrganizationPortfolioAccess
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListOrganizationPortfolioAccessResponse (Maybe Text)
listOrganizationPortfolioAccessResponse_nextPageToken
          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
    ListOrganizationPortfolioAccess
  where
  type
    AWSResponse ListOrganizationPortfolioAccess =
      ListOrganizationPortfolioAccessResponse
  request :: (Service -> Service)
-> ListOrganizationPortfolioAccess
-> Request ListOrganizationPortfolioAccess
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 ListOrganizationPortfolioAccess
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListOrganizationPortfolioAccess)))
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 [OrganizationNode]
-> Int
-> ListOrganizationPortfolioAccessResponse
ListOrganizationPortfolioAccessResponse'
            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
"NextPageToken")
            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
"OrganizationNodes"
                            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
    ListOrganizationPortfolioAccess
  where
  hashWithSalt :: Int -> ListOrganizationPortfolioAccess -> Int
hashWithSalt
    Int
_salt
    ListOrganizationPortfolioAccess' {Maybe Natural
Maybe Text
Text
OrganizationNodeType
organizationNodeType :: OrganizationNodeType
portfolioId :: Text
pageToken :: Maybe Text
pageSize :: Maybe Natural
acceptLanguage :: Maybe Text
$sel:organizationNodeType:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> OrganizationNodeType
$sel:portfolioId:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Text
$sel:pageToken:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
$sel:pageSize:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Natural
$sel:acceptLanguage:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
acceptLanguage
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
pageSize
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pageToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
portfolioId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` OrganizationNodeType
organizationNodeType

instance
  Prelude.NFData
    ListOrganizationPortfolioAccess
  where
  rnf :: ListOrganizationPortfolioAccess -> ()
rnf ListOrganizationPortfolioAccess' {Maybe Natural
Maybe Text
Text
OrganizationNodeType
organizationNodeType :: OrganizationNodeType
portfolioId :: Text
pageToken :: Maybe Text
pageSize :: Maybe Natural
acceptLanguage :: Maybe Text
$sel:organizationNodeType:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> OrganizationNodeType
$sel:portfolioId:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Text
$sel:pageToken:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
$sel:pageSize:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Natural
$sel:acceptLanguage:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
acceptLanguage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
pageToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
portfolioId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf OrganizationNodeType
organizationNodeType

instance
  Data.ToHeaders
    ListOrganizationPortfolioAccess
  where
  toHeaders :: ListOrganizationPortfolioAccess -> 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
"AWS242ServiceCatalogService.ListOrganizationPortfolioAccess" ::
                          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 ListOrganizationPortfolioAccess where
  toJSON :: ListOrganizationPortfolioAccess -> Value
toJSON ListOrganizationPortfolioAccess' {Maybe Natural
Maybe Text
Text
OrganizationNodeType
organizationNodeType :: OrganizationNodeType
portfolioId :: Text
pageToken :: Maybe Text
pageSize :: Maybe Natural
acceptLanguage :: Maybe Text
$sel:organizationNodeType:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> OrganizationNodeType
$sel:portfolioId:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Text
$sel:pageToken:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
$sel:pageSize:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Natural
$sel:acceptLanguage:ListOrganizationPortfolioAccess' :: ListOrganizationPortfolioAccess -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AcceptLanguage" 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
acceptLanguage,
            (Key
"PageSize" 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
pageSize,
            (Key
"PageToken" 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
pageToken,
            forall a. a -> Maybe a
Prelude.Just (Key
"PortfolioId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
portfolioId),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"OrganizationNodeType"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= OrganizationNodeType
organizationNodeType
              )
          ]
      )

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

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

-- | /See:/ 'newListOrganizationPortfolioAccessResponse' smart constructor.
data ListOrganizationPortfolioAccessResponse = ListOrganizationPortfolioAccessResponse'
  { -- | The page token to use to retrieve the next set of results. If there are
    -- no additional results, this value is null.
    ListOrganizationPortfolioAccessResponse -> Maybe Text
nextPageToken :: Prelude.Maybe Prelude.Text,
    -- | Displays information about the organization nodes.
    ListOrganizationPortfolioAccessResponse -> Maybe [OrganizationNode]
organizationNodes :: Prelude.Maybe [OrganizationNode],
    -- | The response's http status code.
    ListOrganizationPortfolioAccessResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListOrganizationPortfolioAccessResponse
-> ListOrganizationPortfolioAccessResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListOrganizationPortfolioAccessResponse
-> ListOrganizationPortfolioAccessResponse -> Bool
$c/= :: ListOrganizationPortfolioAccessResponse
-> ListOrganizationPortfolioAccessResponse -> Bool
== :: ListOrganizationPortfolioAccessResponse
-> ListOrganizationPortfolioAccessResponse -> Bool
$c== :: ListOrganizationPortfolioAccessResponse
-> ListOrganizationPortfolioAccessResponse -> Bool
Prelude.Eq, ReadPrec [ListOrganizationPortfolioAccessResponse]
ReadPrec ListOrganizationPortfolioAccessResponse
Int -> ReadS ListOrganizationPortfolioAccessResponse
ReadS [ListOrganizationPortfolioAccessResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListOrganizationPortfolioAccessResponse]
$creadListPrec :: ReadPrec [ListOrganizationPortfolioAccessResponse]
readPrec :: ReadPrec ListOrganizationPortfolioAccessResponse
$creadPrec :: ReadPrec ListOrganizationPortfolioAccessResponse
readList :: ReadS [ListOrganizationPortfolioAccessResponse]
$creadList :: ReadS [ListOrganizationPortfolioAccessResponse]
readsPrec :: Int -> ReadS ListOrganizationPortfolioAccessResponse
$creadsPrec :: Int -> ReadS ListOrganizationPortfolioAccessResponse
Prelude.Read, Int -> ListOrganizationPortfolioAccessResponse -> ShowS
[ListOrganizationPortfolioAccessResponse] -> ShowS
ListOrganizationPortfolioAccessResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListOrganizationPortfolioAccessResponse] -> ShowS
$cshowList :: [ListOrganizationPortfolioAccessResponse] -> ShowS
show :: ListOrganizationPortfolioAccessResponse -> String
$cshow :: ListOrganizationPortfolioAccessResponse -> String
showsPrec :: Int -> ListOrganizationPortfolioAccessResponse -> ShowS
$cshowsPrec :: Int -> ListOrganizationPortfolioAccessResponse -> ShowS
Prelude.Show, forall x.
Rep ListOrganizationPortfolioAccessResponse x
-> ListOrganizationPortfolioAccessResponse
forall x.
ListOrganizationPortfolioAccessResponse
-> Rep ListOrganizationPortfolioAccessResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListOrganizationPortfolioAccessResponse x
-> ListOrganizationPortfolioAccessResponse
$cfrom :: forall x.
ListOrganizationPortfolioAccessResponse
-> Rep ListOrganizationPortfolioAccessResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListOrganizationPortfolioAccessResponse' 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:
--
-- 'nextPageToken', 'listOrganizationPortfolioAccessResponse_nextPageToken' - The page token to use to retrieve the next set of results. If there are
-- no additional results, this value is null.
--
-- 'organizationNodes', 'listOrganizationPortfolioAccessResponse_organizationNodes' - Displays information about the organization nodes.
--
-- 'httpStatus', 'listOrganizationPortfolioAccessResponse_httpStatus' - The response's http status code.
newListOrganizationPortfolioAccessResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListOrganizationPortfolioAccessResponse
newListOrganizationPortfolioAccessResponse :: Int -> ListOrganizationPortfolioAccessResponse
newListOrganizationPortfolioAccessResponse
  Int
pHttpStatus_ =
    ListOrganizationPortfolioAccessResponse'
      { $sel:nextPageToken:ListOrganizationPortfolioAccessResponse' :: Maybe Text
nextPageToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:organizationNodes:ListOrganizationPortfolioAccessResponse' :: Maybe [OrganizationNode]
organizationNodes =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListOrganizationPortfolioAccessResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The page token to use to retrieve the next set of results. If there are
-- no additional results, this value is null.
listOrganizationPortfolioAccessResponse_nextPageToken :: Lens.Lens' ListOrganizationPortfolioAccessResponse (Prelude.Maybe Prelude.Text)
listOrganizationPortfolioAccessResponse_nextPageToken :: Lens' ListOrganizationPortfolioAccessResponse (Maybe Text)
listOrganizationPortfolioAccessResponse_nextPageToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccessResponse' {Maybe Text
nextPageToken :: Maybe Text
$sel:nextPageToken:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Maybe Text
nextPageToken} -> Maybe Text
nextPageToken) (\s :: ListOrganizationPortfolioAccessResponse
s@ListOrganizationPortfolioAccessResponse' {} Maybe Text
a -> ListOrganizationPortfolioAccessResponse
s {$sel:nextPageToken:ListOrganizationPortfolioAccessResponse' :: Maybe Text
nextPageToken = Maybe Text
a} :: ListOrganizationPortfolioAccessResponse)

-- | Displays information about the organization nodes.
listOrganizationPortfolioAccessResponse_organizationNodes :: Lens.Lens' ListOrganizationPortfolioAccessResponse (Prelude.Maybe [OrganizationNode])
listOrganizationPortfolioAccessResponse_organizationNodes :: Lens'
  ListOrganizationPortfolioAccessResponse (Maybe [OrganizationNode])
listOrganizationPortfolioAccessResponse_organizationNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccessResponse' {Maybe [OrganizationNode]
organizationNodes :: Maybe [OrganizationNode]
$sel:organizationNodes:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Maybe [OrganizationNode]
organizationNodes} -> Maybe [OrganizationNode]
organizationNodes) (\s :: ListOrganizationPortfolioAccessResponse
s@ListOrganizationPortfolioAccessResponse' {} Maybe [OrganizationNode]
a -> ListOrganizationPortfolioAccessResponse
s {$sel:organizationNodes:ListOrganizationPortfolioAccessResponse' :: Maybe [OrganizationNode]
organizationNodes = Maybe [OrganizationNode]
a} :: ListOrganizationPortfolioAccessResponse) 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.
listOrganizationPortfolioAccessResponse_httpStatus :: Lens.Lens' ListOrganizationPortfolioAccessResponse Prelude.Int
listOrganizationPortfolioAccessResponse_httpStatus :: Lens' ListOrganizationPortfolioAccessResponse Int
listOrganizationPortfolioAccessResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListOrganizationPortfolioAccessResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListOrganizationPortfolioAccessResponse
s@ListOrganizationPortfolioAccessResponse' {} Int
a -> ListOrganizationPortfolioAccessResponse
s {$sel:httpStatus:ListOrganizationPortfolioAccessResponse' :: Int
httpStatus = Int
a} :: ListOrganizationPortfolioAccessResponse)

instance
  Prelude.NFData
    ListOrganizationPortfolioAccessResponse
  where
  rnf :: ListOrganizationPortfolioAccessResponse -> ()
rnf ListOrganizationPortfolioAccessResponse' {Int
Maybe [OrganizationNode]
Maybe Text
httpStatus :: Int
organizationNodes :: Maybe [OrganizationNode]
nextPageToken :: Maybe Text
$sel:httpStatus:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Int
$sel:organizationNodes:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Maybe [OrganizationNode]
$sel:nextPageToken:ListOrganizationPortfolioAccessResponse' :: ListOrganizationPortfolioAccessResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextPageToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [OrganizationNode]
organizationNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus