{-# 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.DisassociatePrincipalFromPortfolio
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Disassociates a previously associated principal ARN from a specified
-- portfolio.
--
-- The @PrincipalType@ and @PrincipalARN@ must match the
-- @AssociatePrincipalWithPortfolio@ call request details. For example, to
-- disassociate an association created with a @PrincipalARN@ of
-- @PrincipalType@ IAM you must use the @PrincipalType@ IAM when calling
-- @DisassociatePrincipalFromPortfolio@.
--
-- For portfolios that have been shared with principal name sharing
-- enabled: after disassociating a principal, share recipient accounts will
-- no longer be able to provision products in this portfolio using a role
-- matching the name of the associated principal.
module Amazonka.ServiceCatalog.DisassociatePrincipalFromPortfolio
  ( -- * Creating a Request
    DisassociatePrincipalFromPortfolio (..),
    newDisassociatePrincipalFromPortfolio,

    -- * Request Lenses
    disassociatePrincipalFromPortfolio_acceptLanguage,
    disassociatePrincipalFromPortfolio_principalType,
    disassociatePrincipalFromPortfolio_portfolioId,
    disassociatePrincipalFromPortfolio_principalARN,

    -- * Destructuring the Response
    DisassociatePrincipalFromPortfolioResponse (..),
    newDisassociatePrincipalFromPortfolioResponse,

    -- * Response Lenses
    disassociatePrincipalFromPortfolioResponse_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:/ 'newDisassociatePrincipalFromPortfolio' smart constructor.
data DisassociatePrincipalFromPortfolio = DisassociatePrincipalFromPortfolio'
  { -- | The language code.
    --
    -- -   @en@ - English (default)
    --
    -- -   @jp@ - Japanese
    --
    -- -   @zh@ - Chinese
    DisassociatePrincipalFromPortfolio -> Maybe Text
acceptLanguage :: Prelude.Maybe Prelude.Text,
    -- | The supported value is @IAM@ if you use a fully defined ARN, or
    -- @IAM_PATTERN@ if you use no @accountID@.
    DisassociatePrincipalFromPortfolio -> Maybe PrincipalType
principalType :: Prelude.Maybe PrincipalType,
    -- | The portfolio identifier.
    DisassociatePrincipalFromPortfolio -> Text
portfolioId :: Prelude.Text,
    -- | The ARN of the principal (IAM user, role, or group). This field allows
    -- an ARN with no @accountID@ if @PrincipalType@ is @IAM_PATTERN@.
    DisassociatePrincipalFromPortfolio -> Text
principalARN :: Prelude.Text
  }
  deriving (DisassociatePrincipalFromPortfolio
-> DisassociatePrincipalFromPortfolio -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DisassociatePrincipalFromPortfolio
-> DisassociatePrincipalFromPortfolio -> Bool
$c/= :: DisassociatePrincipalFromPortfolio
-> DisassociatePrincipalFromPortfolio -> Bool
== :: DisassociatePrincipalFromPortfolio
-> DisassociatePrincipalFromPortfolio -> Bool
$c== :: DisassociatePrincipalFromPortfolio
-> DisassociatePrincipalFromPortfolio -> Bool
Prelude.Eq, ReadPrec [DisassociatePrincipalFromPortfolio]
ReadPrec DisassociatePrincipalFromPortfolio
Int -> ReadS DisassociatePrincipalFromPortfolio
ReadS [DisassociatePrincipalFromPortfolio]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DisassociatePrincipalFromPortfolio]
$creadListPrec :: ReadPrec [DisassociatePrincipalFromPortfolio]
readPrec :: ReadPrec DisassociatePrincipalFromPortfolio
$creadPrec :: ReadPrec DisassociatePrincipalFromPortfolio
readList :: ReadS [DisassociatePrincipalFromPortfolio]
$creadList :: ReadS [DisassociatePrincipalFromPortfolio]
readsPrec :: Int -> ReadS DisassociatePrincipalFromPortfolio
$creadsPrec :: Int -> ReadS DisassociatePrincipalFromPortfolio
Prelude.Read, Int -> DisassociatePrincipalFromPortfolio -> ShowS
[DisassociatePrincipalFromPortfolio] -> ShowS
DisassociatePrincipalFromPortfolio -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DisassociatePrincipalFromPortfolio] -> ShowS
$cshowList :: [DisassociatePrincipalFromPortfolio] -> ShowS
show :: DisassociatePrincipalFromPortfolio -> String
$cshow :: DisassociatePrincipalFromPortfolio -> String
showsPrec :: Int -> DisassociatePrincipalFromPortfolio -> ShowS
$cshowsPrec :: Int -> DisassociatePrincipalFromPortfolio -> ShowS
Prelude.Show, forall x.
Rep DisassociatePrincipalFromPortfolio x
-> DisassociatePrincipalFromPortfolio
forall x.
DisassociatePrincipalFromPortfolio
-> Rep DisassociatePrincipalFromPortfolio x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DisassociatePrincipalFromPortfolio x
-> DisassociatePrincipalFromPortfolio
$cfrom :: forall x.
DisassociatePrincipalFromPortfolio
-> Rep DisassociatePrincipalFromPortfolio x
Prelude.Generic)

-- |
-- Create a value of 'DisassociatePrincipalFromPortfolio' 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', 'disassociatePrincipalFromPortfolio_acceptLanguage' - The language code.
--
-- -   @en@ - English (default)
--
-- -   @jp@ - Japanese
--
-- -   @zh@ - Chinese
--
-- 'principalType', 'disassociatePrincipalFromPortfolio_principalType' - The supported value is @IAM@ if you use a fully defined ARN, or
-- @IAM_PATTERN@ if you use no @accountID@.
--
-- 'portfolioId', 'disassociatePrincipalFromPortfolio_portfolioId' - The portfolio identifier.
--
-- 'principalARN', 'disassociatePrincipalFromPortfolio_principalARN' - The ARN of the principal (IAM user, role, or group). This field allows
-- an ARN with no @accountID@ if @PrincipalType@ is @IAM_PATTERN@.
newDisassociatePrincipalFromPortfolio ::
  -- | 'portfolioId'
  Prelude.Text ->
  -- | 'principalARN'
  Prelude.Text ->
  DisassociatePrincipalFromPortfolio
newDisassociatePrincipalFromPortfolio :: Text -> Text -> DisassociatePrincipalFromPortfolio
newDisassociatePrincipalFromPortfolio
  Text
pPortfolioId_
  Text
pPrincipalARN_ =
    DisassociatePrincipalFromPortfolio'
      { $sel:acceptLanguage:DisassociatePrincipalFromPortfolio' :: Maybe Text
acceptLanguage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:principalType:DisassociatePrincipalFromPortfolio' :: Maybe PrincipalType
principalType = forall a. Maybe a
Prelude.Nothing,
        $sel:portfolioId:DisassociatePrincipalFromPortfolio' :: Text
portfolioId = Text
pPortfolioId_,
        $sel:principalARN:DisassociatePrincipalFromPortfolio' :: Text
principalARN = Text
pPrincipalARN_
      }

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

-- | The supported value is @IAM@ if you use a fully defined ARN, or
-- @IAM_PATTERN@ if you use no @accountID@.
disassociatePrincipalFromPortfolio_principalType :: Lens.Lens' DisassociatePrincipalFromPortfolio (Prelude.Maybe PrincipalType)
disassociatePrincipalFromPortfolio_principalType :: Lens' DisassociatePrincipalFromPortfolio (Maybe PrincipalType)
disassociatePrincipalFromPortfolio_principalType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociatePrincipalFromPortfolio' {Maybe PrincipalType
principalType :: Maybe PrincipalType
$sel:principalType:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Maybe PrincipalType
principalType} -> Maybe PrincipalType
principalType) (\s :: DisassociatePrincipalFromPortfolio
s@DisassociatePrincipalFromPortfolio' {} Maybe PrincipalType
a -> DisassociatePrincipalFromPortfolio
s {$sel:principalType:DisassociatePrincipalFromPortfolio' :: Maybe PrincipalType
principalType = Maybe PrincipalType
a} :: DisassociatePrincipalFromPortfolio)

-- | The portfolio identifier.
disassociatePrincipalFromPortfolio_portfolioId :: Lens.Lens' DisassociatePrincipalFromPortfolio Prelude.Text
disassociatePrincipalFromPortfolio_portfolioId :: Lens' DisassociatePrincipalFromPortfolio Text
disassociatePrincipalFromPortfolio_portfolioId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociatePrincipalFromPortfolio' {Text
portfolioId :: Text
$sel:portfolioId:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
portfolioId} -> Text
portfolioId) (\s :: DisassociatePrincipalFromPortfolio
s@DisassociatePrincipalFromPortfolio' {} Text
a -> DisassociatePrincipalFromPortfolio
s {$sel:portfolioId:DisassociatePrincipalFromPortfolio' :: Text
portfolioId = Text
a} :: DisassociatePrincipalFromPortfolio)

-- | The ARN of the principal (IAM user, role, or group). This field allows
-- an ARN with no @accountID@ if @PrincipalType@ is @IAM_PATTERN@.
disassociatePrincipalFromPortfolio_principalARN :: Lens.Lens' DisassociatePrincipalFromPortfolio Prelude.Text
disassociatePrincipalFromPortfolio_principalARN :: Lens' DisassociatePrincipalFromPortfolio Text
disassociatePrincipalFromPortfolio_principalARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociatePrincipalFromPortfolio' {Text
principalARN :: Text
$sel:principalARN:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
principalARN} -> Text
principalARN) (\s :: DisassociatePrincipalFromPortfolio
s@DisassociatePrincipalFromPortfolio' {} Text
a -> DisassociatePrincipalFromPortfolio
s {$sel:principalARN:DisassociatePrincipalFromPortfolio' :: Text
principalARN = Text
a} :: DisassociatePrincipalFromPortfolio)

instance
  Core.AWSRequest
    DisassociatePrincipalFromPortfolio
  where
  type
    AWSResponse DisassociatePrincipalFromPortfolio =
      DisassociatePrincipalFromPortfolioResponse
  request :: (Service -> Service)
-> DisassociatePrincipalFromPortfolio
-> Request DisassociatePrincipalFromPortfolio
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 DisassociatePrincipalFromPortfolio
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DisassociatePrincipalFromPortfolio)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DisassociatePrincipalFromPortfolioResponse
DisassociatePrincipalFromPortfolioResponse'
            forall (f :: * -> *) a b. Functor 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
    DisassociatePrincipalFromPortfolio
  where
  hashWithSalt :: Int -> DisassociatePrincipalFromPortfolio -> Int
hashWithSalt
    Int
_salt
    DisassociatePrincipalFromPortfolio' {Maybe Text
Maybe PrincipalType
Text
principalARN :: Text
portfolioId :: Text
principalType :: Maybe PrincipalType
acceptLanguage :: Maybe Text
$sel:principalARN:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:portfolioId:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:principalType:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Maybe PrincipalType
$sel:acceptLanguage:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> 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 PrincipalType
principalType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
portfolioId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
principalARN

instance
  Prelude.NFData
    DisassociatePrincipalFromPortfolio
  where
  rnf :: DisassociatePrincipalFromPortfolio -> ()
rnf DisassociatePrincipalFromPortfolio' {Maybe Text
Maybe PrincipalType
Text
principalARN :: Text
portfolioId :: Text
principalType :: Maybe PrincipalType
acceptLanguage :: Maybe Text
$sel:principalARN:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:portfolioId:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:principalType:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Maybe PrincipalType
$sel:acceptLanguage:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> 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 PrincipalType
principalType
      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 Text
principalARN

instance
  Data.ToHeaders
    DisassociatePrincipalFromPortfolio
  where
  toHeaders :: DisassociatePrincipalFromPortfolio -> 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.DisassociatePrincipalFromPortfolio" ::
                          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
    DisassociatePrincipalFromPortfolio
  where
  toJSON :: DisassociatePrincipalFromPortfolio -> Value
toJSON DisassociatePrincipalFromPortfolio' {Maybe Text
Maybe PrincipalType
Text
principalARN :: Text
portfolioId :: Text
principalType :: Maybe PrincipalType
acceptLanguage :: Maybe Text
$sel:principalARN:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:portfolioId:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Text
$sel:principalType:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> Maybe PrincipalType
$sel:acceptLanguage:DisassociatePrincipalFromPortfolio' :: DisassociatePrincipalFromPortfolio -> 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
"PrincipalType" 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 PrincipalType
principalType,
            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
"PrincipalARN" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
principalARN)
          ]
      )

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

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

-- | /See:/ 'newDisassociatePrincipalFromPortfolioResponse' smart constructor.
data DisassociatePrincipalFromPortfolioResponse = DisassociatePrincipalFromPortfolioResponse'
  { -- | The response's http status code.
    DisassociatePrincipalFromPortfolioResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DisassociatePrincipalFromPortfolioResponse
-> DisassociatePrincipalFromPortfolioResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DisassociatePrincipalFromPortfolioResponse
-> DisassociatePrincipalFromPortfolioResponse -> Bool
$c/= :: DisassociatePrincipalFromPortfolioResponse
-> DisassociatePrincipalFromPortfolioResponse -> Bool
== :: DisassociatePrincipalFromPortfolioResponse
-> DisassociatePrincipalFromPortfolioResponse -> Bool
$c== :: DisassociatePrincipalFromPortfolioResponse
-> DisassociatePrincipalFromPortfolioResponse -> Bool
Prelude.Eq, ReadPrec [DisassociatePrincipalFromPortfolioResponse]
ReadPrec DisassociatePrincipalFromPortfolioResponse
Int -> ReadS DisassociatePrincipalFromPortfolioResponse
ReadS [DisassociatePrincipalFromPortfolioResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DisassociatePrincipalFromPortfolioResponse]
$creadListPrec :: ReadPrec [DisassociatePrincipalFromPortfolioResponse]
readPrec :: ReadPrec DisassociatePrincipalFromPortfolioResponse
$creadPrec :: ReadPrec DisassociatePrincipalFromPortfolioResponse
readList :: ReadS [DisassociatePrincipalFromPortfolioResponse]
$creadList :: ReadS [DisassociatePrincipalFromPortfolioResponse]
readsPrec :: Int -> ReadS DisassociatePrincipalFromPortfolioResponse
$creadsPrec :: Int -> ReadS DisassociatePrincipalFromPortfolioResponse
Prelude.Read, Int -> DisassociatePrincipalFromPortfolioResponse -> ShowS
[DisassociatePrincipalFromPortfolioResponse] -> ShowS
DisassociatePrincipalFromPortfolioResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DisassociatePrincipalFromPortfolioResponse] -> ShowS
$cshowList :: [DisassociatePrincipalFromPortfolioResponse] -> ShowS
show :: DisassociatePrincipalFromPortfolioResponse -> String
$cshow :: DisassociatePrincipalFromPortfolioResponse -> String
showsPrec :: Int -> DisassociatePrincipalFromPortfolioResponse -> ShowS
$cshowsPrec :: Int -> DisassociatePrincipalFromPortfolioResponse -> ShowS
Prelude.Show, forall x.
Rep DisassociatePrincipalFromPortfolioResponse x
-> DisassociatePrincipalFromPortfolioResponse
forall x.
DisassociatePrincipalFromPortfolioResponse
-> Rep DisassociatePrincipalFromPortfolioResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DisassociatePrincipalFromPortfolioResponse x
-> DisassociatePrincipalFromPortfolioResponse
$cfrom :: forall x.
DisassociatePrincipalFromPortfolioResponse
-> Rep DisassociatePrincipalFromPortfolioResponse x
Prelude.Generic)

-- |
-- Create a value of 'DisassociatePrincipalFromPortfolioResponse' 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:
--
-- 'httpStatus', 'disassociatePrincipalFromPortfolioResponse_httpStatus' - The response's http status code.
newDisassociatePrincipalFromPortfolioResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DisassociatePrincipalFromPortfolioResponse
newDisassociatePrincipalFromPortfolioResponse :: Int -> DisassociatePrincipalFromPortfolioResponse
newDisassociatePrincipalFromPortfolioResponse
  Int
pHttpStatus_ =
    DisassociatePrincipalFromPortfolioResponse'
      { $sel:httpStatus:DisassociatePrincipalFromPortfolioResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

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

instance
  Prelude.NFData
    DisassociatePrincipalFromPortfolioResponse
  where
  rnf :: DisassociatePrincipalFromPortfolioResponse -> ()
rnf DisassociatePrincipalFromPortfolioResponse' {Int
httpStatus :: Int
$sel:httpStatus:DisassociatePrincipalFromPortfolioResponse' :: DisassociatePrincipalFromPortfolioResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus