packages feed

amazonka-finspace-data-2.0: gen/Amazonka/FinSpaceData/DeletePermissionGroup.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.FinSpaceData.DeletePermissionGroup
-- 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 permission group. This action is irreversible.
module Amazonka.FinSpaceData.DeletePermissionGroup
  ( -- * Creating a Request
    DeletePermissionGroup (..),
    newDeletePermissionGroup,

    -- * Request Lenses
    deletePermissionGroup_clientToken,
    deletePermissionGroup_permissionGroupId,

    -- * Destructuring the Response
    DeletePermissionGroupResponse (..),
    newDeletePermissionGroupResponse,

    -- * Response Lenses
    deletePermissionGroupResponse_permissionGroupId,
    deletePermissionGroupResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeletePermissionGroup' smart constructor.
data DeletePermissionGroup = DeletePermissionGroup'
  { -- | A token that ensures idempotency. This token expires in 10 minutes.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the permission group that you want to delete.
    permissionGroupId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeletePermissionGroup' 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:
--
-- 'clientToken', 'deletePermissionGroup_clientToken' - A token that ensures idempotency. This token expires in 10 minutes.
--
-- 'permissionGroupId', 'deletePermissionGroup_permissionGroupId' - The unique identifier for the permission group that you want to delete.
newDeletePermissionGroup ::
  -- | 'permissionGroupId'
  Prelude.Text ->
  DeletePermissionGroup
newDeletePermissionGroup pPermissionGroupId_ =
  DeletePermissionGroup'
    { clientToken =
        Prelude.Nothing,
      permissionGroupId = pPermissionGroupId_
    }

-- | A token that ensures idempotency. This token expires in 10 minutes.
deletePermissionGroup_clientToken :: Lens.Lens' DeletePermissionGroup (Prelude.Maybe Prelude.Text)
deletePermissionGroup_clientToken = Lens.lens (\DeletePermissionGroup' {clientToken} -> clientToken) (\s@DeletePermissionGroup' {} a -> s {clientToken = a} :: DeletePermissionGroup)

-- | The unique identifier for the permission group that you want to delete.
deletePermissionGroup_permissionGroupId :: Lens.Lens' DeletePermissionGroup Prelude.Text
deletePermissionGroup_permissionGroupId = Lens.lens (\DeletePermissionGroup' {permissionGroupId} -> permissionGroupId) (\s@DeletePermissionGroup' {} a -> s {permissionGroupId = a} :: DeletePermissionGroup)

instance Core.AWSRequest DeletePermissionGroup where
  type
    AWSResponse DeletePermissionGroup =
      DeletePermissionGroupResponse
  request overrides =
    Request.delete (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DeletePermissionGroupResponse'
            Prelude.<$> (x Data..?> "permissionGroupId")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DeletePermissionGroup where
  hashWithSalt _salt DeletePermissionGroup' {..} =
    _salt
      `Prelude.hashWithSalt` clientToken
      `Prelude.hashWithSalt` permissionGroupId

instance Prelude.NFData DeletePermissionGroup where
  rnf DeletePermissionGroup' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf permissionGroupId

instance Data.ToHeaders DeletePermissionGroup where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeletePermissionGroup where
  toPath DeletePermissionGroup' {..} =
    Prelude.mconcat
      ["/permission-group/", Data.toBS permissionGroupId]

instance Data.ToQuery DeletePermissionGroup where
  toQuery DeletePermissionGroup' {..} =
    Prelude.mconcat ["clientToken" Data.=: clientToken]

-- | /See:/ 'newDeletePermissionGroupResponse' smart constructor.
data DeletePermissionGroupResponse = DeletePermissionGroupResponse'
  { -- | The unique identifier for the deleted permission group.
    permissionGroupId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeletePermissionGroupResponse' 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:
--
-- 'permissionGroupId', 'deletePermissionGroupResponse_permissionGroupId' - The unique identifier for the deleted permission group.
--
-- 'httpStatus', 'deletePermissionGroupResponse_httpStatus' - The response's http status code.
newDeletePermissionGroupResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeletePermissionGroupResponse
newDeletePermissionGroupResponse pHttpStatus_ =
  DeletePermissionGroupResponse'
    { permissionGroupId =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The unique identifier for the deleted permission group.
deletePermissionGroupResponse_permissionGroupId :: Lens.Lens' DeletePermissionGroupResponse (Prelude.Maybe Prelude.Text)
deletePermissionGroupResponse_permissionGroupId = Lens.lens (\DeletePermissionGroupResponse' {permissionGroupId} -> permissionGroupId) (\s@DeletePermissionGroupResponse' {} a -> s {permissionGroupId = a} :: DeletePermissionGroupResponse)

-- | The response's http status code.
deletePermissionGroupResponse_httpStatus :: Lens.Lens' DeletePermissionGroupResponse Prelude.Int
deletePermissionGroupResponse_httpStatus = Lens.lens (\DeletePermissionGroupResponse' {httpStatus} -> httpStatus) (\s@DeletePermissionGroupResponse' {} a -> s {httpStatus = a} :: DeletePermissionGroupResponse)

instance Prelude.NFData DeletePermissionGroupResponse where
  rnf DeletePermissionGroupResponse' {..} =
    Prelude.rnf permissionGroupId
      `Prelude.seq` Prelude.rnf httpStatus