packages feed

amazonka-iot1click-projects-2.0: gen/Amazonka/IoT1ClickProjects/DeletePlacement.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.IoT1ClickProjects.DeletePlacement
-- 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 placement. To delete a placement, it must not have any devices
-- associated with it.
--
-- When you delete a placement, all associated data becomes irretrievable.
module Amazonka.IoT1ClickProjects.DeletePlacement
  ( -- * Creating a Request
    DeletePlacement (..),
    newDeletePlacement,

    -- * Request Lenses
    deletePlacement_placementName,
    deletePlacement_projectName,

    -- * Destructuring the Response
    DeletePlacementResponse (..),
    newDeletePlacementResponse,

    -- * Response Lenses
    deletePlacementResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeletePlacement' smart constructor.
data DeletePlacement = DeletePlacement'
  { -- | The name of the empty placement to delete.
    placementName :: Prelude.Text,
    -- | The project containing the empty placement to delete.
    projectName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeletePlacement' 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:
--
-- 'placementName', 'deletePlacement_placementName' - The name of the empty placement to delete.
--
-- 'projectName', 'deletePlacement_projectName' - The project containing the empty placement to delete.
newDeletePlacement ::
  -- | 'placementName'
  Prelude.Text ->
  -- | 'projectName'
  Prelude.Text ->
  DeletePlacement
newDeletePlacement pPlacementName_ pProjectName_ =
  DeletePlacement'
    { placementName = pPlacementName_,
      projectName = pProjectName_
    }

-- | The name of the empty placement to delete.
deletePlacement_placementName :: Lens.Lens' DeletePlacement Prelude.Text
deletePlacement_placementName = Lens.lens (\DeletePlacement' {placementName} -> placementName) (\s@DeletePlacement' {} a -> s {placementName = a} :: DeletePlacement)

-- | The project containing the empty placement to delete.
deletePlacement_projectName :: Lens.Lens' DeletePlacement Prelude.Text
deletePlacement_projectName = Lens.lens (\DeletePlacement' {projectName} -> projectName) (\s@DeletePlacement' {} a -> s {projectName = a} :: DeletePlacement)

instance Core.AWSRequest DeletePlacement where
  type
    AWSResponse DeletePlacement =
      DeletePlacementResponse
  request overrides =
    Request.delete (overrides defaultService)
  response =
    Response.receiveEmpty
      ( \s h x ->
          DeletePlacementResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DeletePlacement where
  hashWithSalt _salt DeletePlacement' {..} =
    _salt
      `Prelude.hashWithSalt` placementName
      `Prelude.hashWithSalt` projectName

instance Prelude.NFData DeletePlacement where
  rnf DeletePlacement' {..} =
    Prelude.rnf placementName
      `Prelude.seq` Prelude.rnf projectName

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

instance Data.ToPath DeletePlacement where
  toPath DeletePlacement' {..} =
    Prelude.mconcat
      [ "/projects/",
        Data.toBS projectName,
        "/placements/",
        Data.toBS placementName
      ]

instance Data.ToQuery DeletePlacement where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newDeletePlacementResponse' smart constructor.
data DeletePlacementResponse = DeletePlacementResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeletePlacementResponse' 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', 'deletePlacementResponse_httpStatus' - The response's http status code.
newDeletePlacementResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeletePlacementResponse
newDeletePlacementResponse pHttpStatus_ =
  DeletePlacementResponse' {httpStatus = pHttpStatus_}

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

instance Prelude.NFData DeletePlacementResponse where
  rnf DeletePlacementResponse' {..} =
    Prelude.rnf httpStatus