{-# 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.SSOAdmin.DeleteAccountAssignment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a principal\'s access from a specified AWS account using a
-- specified permission set.
--
-- After a successful response, call
-- @DescribeAccountAssignmentCreationStatus@ to describe the status of an
-- assignment deletion request.
module Amazonka.SSOAdmin.DeleteAccountAssignment
  ( -- * Creating a Request
    DeleteAccountAssignment (..),
    newDeleteAccountAssignment,

    -- * Request Lenses
    deleteAccountAssignment_instanceArn,
    deleteAccountAssignment_targetId,
    deleteAccountAssignment_targetType,
    deleteAccountAssignment_permissionSetArn,
    deleteAccountAssignment_principalType,
    deleteAccountAssignment_principalId,

    -- * Destructuring the Response
    DeleteAccountAssignmentResponse (..),
    newDeleteAccountAssignmentResponse,

    -- * Response Lenses
    deleteAccountAssignmentResponse_accountAssignmentDeletionStatus,
    deleteAccountAssignmentResponse_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.SSOAdmin.Types

-- | /See:/ 'newDeleteAccountAssignment' smart constructor.
data DeleteAccountAssignment = DeleteAccountAssignment'
  { -- | The ARN of the IAM Identity Center instance under which the operation
    -- will be executed. For more information about ARNs, see
    -- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
    -- in the /AWS General Reference/.
    DeleteAccountAssignment -> Text
instanceArn :: Prelude.Text,
    -- | TargetID is an AWS account identifier, typically a 10-12 digit string
    -- (For example, 123456789012).
    DeleteAccountAssignment -> Text
targetId :: Prelude.Text,
    -- | The entity type for which the assignment will be deleted.
    DeleteAccountAssignment -> TargetType
targetType :: TargetType,
    -- | The ARN of the permission set that will be used to remove access.
    DeleteAccountAssignment -> Text
permissionSetArn :: Prelude.Text,
    -- | The entity type for which the assignment will be deleted.
    DeleteAccountAssignment -> PrincipalType
principalType :: PrincipalType,
    -- | An identifier for an object in IAM Identity Center, such as a user or
    -- group. PrincipalIds are GUIDs (For example,
    -- f81d4fae-7dec-11d0-a765-00a0c91e6bf6). For more information about
    -- PrincipalIds in IAM Identity Center, see the
    -- </singlesignon/latest/IdentityStoreAPIReference/welcome.html IAM Identity Center Identity Store API Reference>.
    DeleteAccountAssignment -> Text
principalId :: Prelude.Text
  }
  deriving (DeleteAccountAssignment -> DeleteAccountAssignment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteAccountAssignment -> DeleteAccountAssignment -> Bool
$c/= :: DeleteAccountAssignment -> DeleteAccountAssignment -> Bool
== :: DeleteAccountAssignment -> DeleteAccountAssignment -> Bool
$c== :: DeleteAccountAssignment -> DeleteAccountAssignment -> Bool
Prelude.Eq, ReadPrec [DeleteAccountAssignment]
ReadPrec DeleteAccountAssignment
Int -> ReadS DeleteAccountAssignment
ReadS [DeleteAccountAssignment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteAccountAssignment]
$creadListPrec :: ReadPrec [DeleteAccountAssignment]
readPrec :: ReadPrec DeleteAccountAssignment
$creadPrec :: ReadPrec DeleteAccountAssignment
readList :: ReadS [DeleteAccountAssignment]
$creadList :: ReadS [DeleteAccountAssignment]
readsPrec :: Int -> ReadS DeleteAccountAssignment
$creadsPrec :: Int -> ReadS DeleteAccountAssignment
Prelude.Read, Int -> DeleteAccountAssignment -> ShowS
[DeleteAccountAssignment] -> ShowS
DeleteAccountAssignment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteAccountAssignment] -> ShowS
$cshowList :: [DeleteAccountAssignment] -> ShowS
show :: DeleteAccountAssignment -> String
$cshow :: DeleteAccountAssignment -> String
showsPrec :: Int -> DeleteAccountAssignment -> ShowS
$cshowsPrec :: Int -> DeleteAccountAssignment -> ShowS
Prelude.Show, forall x. Rep DeleteAccountAssignment x -> DeleteAccountAssignment
forall x. DeleteAccountAssignment -> Rep DeleteAccountAssignment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteAccountAssignment x -> DeleteAccountAssignment
$cfrom :: forall x. DeleteAccountAssignment -> Rep DeleteAccountAssignment x
Prelude.Generic)

-- |
-- Create a value of 'DeleteAccountAssignment' 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:
--
-- 'instanceArn', 'deleteAccountAssignment_instanceArn' - The ARN of the IAM Identity Center instance under which the operation
-- will be executed. For more information about ARNs, see
-- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
-- in the /AWS General Reference/.
--
-- 'targetId', 'deleteAccountAssignment_targetId' - TargetID is an AWS account identifier, typically a 10-12 digit string
-- (For example, 123456789012).
--
-- 'targetType', 'deleteAccountAssignment_targetType' - The entity type for which the assignment will be deleted.
--
-- 'permissionSetArn', 'deleteAccountAssignment_permissionSetArn' - The ARN of the permission set that will be used to remove access.
--
-- 'principalType', 'deleteAccountAssignment_principalType' - The entity type for which the assignment will be deleted.
--
-- 'principalId', 'deleteAccountAssignment_principalId' - An identifier for an object in IAM Identity Center, such as a user or
-- group. PrincipalIds are GUIDs (For example,
-- f81d4fae-7dec-11d0-a765-00a0c91e6bf6). For more information about
-- PrincipalIds in IAM Identity Center, see the
-- </singlesignon/latest/IdentityStoreAPIReference/welcome.html IAM Identity Center Identity Store API Reference>.
newDeleteAccountAssignment ::
  -- | 'instanceArn'
  Prelude.Text ->
  -- | 'targetId'
  Prelude.Text ->
  -- | 'targetType'
  TargetType ->
  -- | 'permissionSetArn'
  Prelude.Text ->
  -- | 'principalType'
  PrincipalType ->
  -- | 'principalId'
  Prelude.Text ->
  DeleteAccountAssignment
newDeleteAccountAssignment :: Text
-> Text
-> TargetType
-> Text
-> PrincipalType
-> Text
-> DeleteAccountAssignment
newDeleteAccountAssignment
  Text
pInstanceArn_
  Text
pTargetId_
  TargetType
pTargetType_
  Text
pPermissionSetArn_
  PrincipalType
pPrincipalType_
  Text
pPrincipalId_ =
    DeleteAccountAssignment'
      { $sel:instanceArn:DeleteAccountAssignment' :: Text
instanceArn =
          Text
pInstanceArn_,
        $sel:targetId:DeleteAccountAssignment' :: Text
targetId = Text
pTargetId_,
        $sel:targetType:DeleteAccountAssignment' :: TargetType
targetType = TargetType
pTargetType_,
        $sel:permissionSetArn:DeleteAccountAssignment' :: Text
permissionSetArn = Text
pPermissionSetArn_,
        $sel:principalType:DeleteAccountAssignment' :: PrincipalType
principalType = PrincipalType
pPrincipalType_,
        $sel:principalId:DeleteAccountAssignment' :: Text
principalId = Text
pPrincipalId_
      }

-- | The ARN of the IAM Identity Center instance under which the operation
-- will be executed. For more information about ARNs, see
-- </general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>
-- in the /AWS General Reference/.
deleteAccountAssignment_instanceArn :: Lens.Lens' DeleteAccountAssignment Prelude.Text
deleteAccountAssignment_instanceArn :: Lens' DeleteAccountAssignment Text
deleteAccountAssignment_instanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {Text
instanceArn :: Text
$sel:instanceArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
instanceArn} -> Text
instanceArn) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} Text
a -> DeleteAccountAssignment
s {$sel:instanceArn:DeleteAccountAssignment' :: Text
instanceArn = Text
a} :: DeleteAccountAssignment)

-- | TargetID is an AWS account identifier, typically a 10-12 digit string
-- (For example, 123456789012).
deleteAccountAssignment_targetId :: Lens.Lens' DeleteAccountAssignment Prelude.Text
deleteAccountAssignment_targetId :: Lens' DeleteAccountAssignment Text
deleteAccountAssignment_targetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {Text
targetId :: Text
$sel:targetId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
targetId} -> Text
targetId) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} Text
a -> DeleteAccountAssignment
s {$sel:targetId:DeleteAccountAssignment' :: Text
targetId = Text
a} :: DeleteAccountAssignment)

-- | The entity type for which the assignment will be deleted.
deleteAccountAssignment_targetType :: Lens.Lens' DeleteAccountAssignment TargetType
deleteAccountAssignment_targetType :: Lens' DeleteAccountAssignment TargetType
deleteAccountAssignment_targetType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {TargetType
targetType :: TargetType
$sel:targetType:DeleteAccountAssignment' :: DeleteAccountAssignment -> TargetType
targetType} -> TargetType
targetType) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} TargetType
a -> DeleteAccountAssignment
s {$sel:targetType:DeleteAccountAssignment' :: TargetType
targetType = TargetType
a} :: DeleteAccountAssignment)

-- | The ARN of the permission set that will be used to remove access.
deleteAccountAssignment_permissionSetArn :: Lens.Lens' DeleteAccountAssignment Prelude.Text
deleteAccountAssignment_permissionSetArn :: Lens' DeleteAccountAssignment Text
deleteAccountAssignment_permissionSetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {Text
permissionSetArn :: Text
$sel:permissionSetArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
permissionSetArn} -> Text
permissionSetArn) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} Text
a -> DeleteAccountAssignment
s {$sel:permissionSetArn:DeleteAccountAssignment' :: Text
permissionSetArn = Text
a} :: DeleteAccountAssignment)

-- | The entity type for which the assignment will be deleted.
deleteAccountAssignment_principalType :: Lens.Lens' DeleteAccountAssignment PrincipalType
deleteAccountAssignment_principalType :: Lens' DeleteAccountAssignment PrincipalType
deleteAccountAssignment_principalType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {PrincipalType
principalType :: PrincipalType
$sel:principalType:DeleteAccountAssignment' :: DeleteAccountAssignment -> PrincipalType
principalType} -> PrincipalType
principalType) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} PrincipalType
a -> DeleteAccountAssignment
s {$sel:principalType:DeleteAccountAssignment' :: PrincipalType
principalType = PrincipalType
a} :: DeleteAccountAssignment)

-- | An identifier for an object in IAM Identity Center, such as a user or
-- group. PrincipalIds are GUIDs (For example,
-- f81d4fae-7dec-11d0-a765-00a0c91e6bf6). For more information about
-- PrincipalIds in IAM Identity Center, see the
-- </singlesignon/latest/IdentityStoreAPIReference/welcome.html IAM Identity Center Identity Store API Reference>.
deleteAccountAssignment_principalId :: Lens.Lens' DeleteAccountAssignment Prelude.Text
deleteAccountAssignment_principalId :: Lens' DeleteAccountAssignment Text
deleteAccountAssignment_principalId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignment' {Text
principalId :: Text
$sel:principalId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
principalId} -> Text
principalId) (\s :: DeleteAccountAssignment
s@DeleteAccountAssignment' {} Text
a -> DeleteAccountAssignment
s {$sel:principalId:DeleteAccountAssignment' :: Text
principalId = Text
a} :: DeleteAccountAssignment)

instance Core.AWSRequest DeleteAccountAssignment where
  type
    AWSResponse DeleteAccountAssignment =
      DeleteAccountAssignmentResponse
  request :: (Service -> Service)
-> DeleteAccountAssignment -> Request DeleteAccountAssignment
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 DeleteAccountAssignment
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteAccountAssignment)))
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 AccountAssignmentOperationStatus
-> Int -> DeleteAccountAssignmentResponse
DeleteAccountAssignmentResponse'
            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
"AccountAssignmentDeletionStatus")
            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 DeleteAccountAssignment where
  hashWithSalt :: Int -> DeleteAccountAssignment -> Int
hashWithSalt Int
_salt DeleteAccountAssignment' {Text
PrincipalType
TargetType
principalId :: Text
principalType :: PrincipalType
permissionSetArn :: Text
targetType :: TargetType
targetId :: Text
instanceArn :: Text
$sel:principalId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:principalType:DeleteAccountAssignment' :: DeleteAccountAssignment -> PrincipalType
$sel:permissionSetArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:targetType:DeleteAccountAssignment' :: DeleteAccountAssignment -> TargetType
$sel:targetId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:instanceArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
targetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TargetType
targetType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
permissionSetArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` PrincipalType
principalType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
principalId

instance Prelude.NFData DeleteAccountAssignment where
  rnf :: DeleteAccountAssignment -> ()
rnf DeleteAccountAssignment' {Text
PrincipalType
TargetType
principalId :: Text
principalType :: PrincipalType
permissionSetArn :: Text
targetType :: TargetType
targetId :: Text
instanceArn :: Text
$sel:principalId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:principalType:DeleteAccountAssignment' :: DeleteAccountAssignment -> PrincipalType
$sel:permissionSetArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:targetType:DeleteAccountAssignment' :: DeleteAccountAssignment -> TargetType
$sel:targetId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:instanceArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
instanceArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
targetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TargetType
targetType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
permissionSetArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf PrincipalType
principalType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
principalId

instance Data.ToHeaders DeleteAccountAssignment where
  toHeaders :: DeleteAccountAssignment -> 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
"SWBExternalService.DeleteAccountAssignment" ::
                          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 DeleteAccountAssignment where
  toJSON :: DeleteAccountAssignment -> Value
toJSON DeleteAccountAssignment' {Text
PrincipalType
TargetType
principalId :: Text
principalType :: PrincipalType
permissionSetArn :: Text
targetType :: TargetType
targetId :: Text
instanceArn :: Text
$sel:principalId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:principalType:DeleteAccountAssignment' :: DeleteAccountAssignment -> PrincipalType
$sel:permissionSetArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:targetType:DeleteAccountAssignment' :: DeleteAccountAssignment -> TargetType
$sel:targetId:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
$sel:instanceArn:DeleteAccountAssignment' :: DeleteAccountAssignment -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"InstanceArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
instanceArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"TargetId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
targetId),
            forall a. a -> Maybe a
Prelude.Just (Key
"TargetType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= TargetType
targetType),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"PermissionSetArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
permissionSetArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"PrincipalType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= PrincipalType
principalType),
            forall a. a -> Maybe a
Prelude.Just (Key
"PrincipalId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
principalId)
          ]
      )

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

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

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

-- |
-- Create a value of 'DeleteAccountAssignmentResponse' 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:
--
-- 'accountAssignmentDeletionStatus', 'deleteAccountAssignmentResponse_accountAssignmentDeletionStatus' - The status object for the account assignment deletion operation.
--
-- 'httpStatus', 'deleteAccountAssignmentResponse_httpStatus' - The response's http status code.
newDeleteAccountAssignmentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteAccountAssignmentResponse
newDeleteAccountAssignmentResponse :: Int -> DeleteAccountAssignmentResponse
newDeleteAccountAssignmentResponse Int
pHttpStatus_ =
  DeleteAccountAssignmentResponse'
    { $sel:accountAssignmentDeletionStatus:DeleteAccountAssignmentResponse' :: Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteAccountAssignmentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The status object for the account assignment deletion operation.
deleteAccountAssignmentResponse_accountAssignmentDeletionStatus :: Lens.Lens' DeleteAccountAssignmentResponse (Prelude.Maybe AccountAssignmentOperationStatus)
deleteAccountAssignmentResponse_accountAssignmentDeletionStatus :: Lens'
  DeleteAccountAssignmentResponse
  (Maybe AccountAssignmentOperationStatus)
deleteAccountAssignmentResponse_accountAssignmentDeletionStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccountAssignmentResponse' {Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus :: Maybe AccountAssignmentOperationStatus
$sel:accountAssignmentDeletionStatus:DeleteAccountAssignmentResponse' :: DeleteAccountAssignmentResponse
-> Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus} -> Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus) (\s :: DeleteAccountAssignmentResponse
s@DeleteAccountAssignmentResponse' {} Maybe AccountAssignmentOperationStatus
a -> DeleteAccountAssignmentResponse
s {$sel:accountAssignmentDeletionStatus:DeleteAccountAssignmentResponse' :: Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus = Maybe AccountAssignmentOperationStatus
a} :: DeleteAccountAssignmentResponse)

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

instance
  Prelude.NFData
    DeleteAccountAssignmentResponse
  where
  rnf :: DeleteAccountAssignmentResponse -> ()
rnf DeleteAccountAssignmentResponse' {Int
Maybe AccountAssignmentOperationStatus
httpStatus :: Int
accountAssignmentDeletionStatus :: Maybe AccountAssignmentOperationStatus
$sel:httpStatus:DeleteAccountAssignmentResponse' :: DeleteAccountAssignmentResponse -> Int
$sel:accountAssignmentDeletionStatus:DeleteAccountAssignmentResponse' :: DeleteAccountAssignmentResponse
-> Maybe AccountAssignmentOperationStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccountAssignmentOperationStatus
accountAssignmentDeletionStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus