packages feed

amazonka-m2-2.0: gen/Amazonka/M2/DeleteApplicationFromEnvironment.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.M2.DeleteApplicationFromEnvironment
-- 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 specific application from the specific runtime environment
-- where it was previously deployed. You cannot delete a runtime
-- environment using DeleteEnvironment if any application has ever been
-- deployed to it. This API removes the association of the application with
-- the runtime environment so you can delete the environment smoothly.
module Amazonka.M2.DeleteApplicationFromEnvironment
  ( -- * Creating a Request
    DeleteApplicationFromEnvironment (..),
    newDeleteApplicationFromEnvironment,

    -- * Request Lenses
    deleteApplicationFromEnvironment_applicationId,
    deleteApplicationFromEnvironment_environmentId,

    -- * Destructuring the Response
    DeleteApplicationFromEnvironmentResponse (..),
    newDeleteApplicationFromEnvironmentResponse,

    -- * Response Lenses
    deleteApplicationFromEnvironmentResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeleteApplicationFromEnvironment' smart constructor.
data DeleteApplicationFromEnvironment = DeleteApplicationFromEnvironment'
  { -- | The unique identifier of the application you want to delete.
    applicationId :: Prelude.Text,
    -- | The unique identifier of the runtime environment where the application
    -- was previously deployed.
    environmentId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeleteApplicationFromEnvironment' 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:
--
-- 'applicationId', 'deleteApplicationFromEnvironment_applicationId' - The unique identifier of the application you want to delete.
--
-- 'environmentId', 'deleteApplicationFromEnvironment_environmentId' - The unique identifier of the runtime environment where the application
-- was previously deployed.
newDeleteApplicationFromEnvironment ::
  -- | 'applicationId'
  Prelude.Text ->
  -- | 'environmentId'
  Prelude.Text ->
  DeleteApplicationFromEnvironment
newDeleteApplicationFromEnvironment
  pApplicationId_
  pEnvironmentId_ =
    DeleteApplicationFromEnvironment'
      { applicationId =
          pApplicationId_,
        environmentId = pEnvironmentId_
      }

-- | The unique identifier of the application you want to delete.
deleteApplicationFromEnvironment_applicationId :: Lens.Lens' DeleteApplicationFromEnvironment Prelude.Text
deleteApplicationFromEnvironment_applicationId = Lens.lens (\DeleteApplicationFromEnvironment' {applicationId} -> applicationId) (\s@DeleteApplicationFromEnvironment' {} a -> s {applicationId = a} :: DeleteApplicationFromEnvironment)

-- | The unique identifier of the runtime environment where the application
-- was previously deployed.
deleteApplicationFromEnvironment_environmentId :: Lens.Lens' DeleteApplicationFromEnvironment Prelude.Text
deleteApplicationFromEnvironment_environmentId = Lens.lens (\DeleteApplicationFromEnvironment' {environmentId} -> environmentId) (\s@DeleteApplicationFromEnvironment' {} a -> s {environmentId = a} :: DeleteApplicationFromEnvironment)

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

instance
  Prelude.Hashable
    DeleteApplicationFromEnvironment
  where
  hashWithSalt
    _salt
    DeleteApplicationFromEnvironment' {..} =
      _salt
        `Prelude.hashWithSalt` applicationId
        `Prelude.hashWithSalt` environmentId

instance
  Prelude.NFData
    DeleteApplicationFromEnvironment
  where
  rnf DeleteApplicationFromEnvironment' {..} =
    Prelude.rnf applicationId
      `Prelude.seq` Prelude.rnf environmentId

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

instance Data.ToPath DeleteApplicationFromEnvironment where
  toPath DeleteApplicationFromEnvironment' {..} =
    Prelude.mconcat
      [ "/applications/",
        Data.toBS applicationId,
        "/environment/",
        Data.toBS environmentId
      ]

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

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

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

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

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