{-# 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.Connect.DeleteContactFlowModule
-- 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 the specified flow module.
module Amazonka.Connect.DeleteContactFlowModule
  ( -- * Creating a Request
    DeleteContactFlowModule (..),
    newDeleteContactFlowModule,

    -- * Request Lenses
    deleteContactFlowModule_instanceId,
    deleteContactFlowModule_contactFlowModuleId,

    -- * Destructuring the Response
    DeleteContactFlowModuleResponse (..),
    newDeleteContactFlowModuleResponse,

    -- * Response Lenses
    deleteContactFlowModuleResponse_httpStatus,
  )
where

import Amazonka.Connect.Types
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

-- | /See:/ 'newDeleteContactFlowModule' smart constructor.
data DeleteContactFlowModule = DeleteContactFlowModule'
  { -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    DeleteContactFlowModule -> Text
instanceId :: Prelude.Text,
    -- | The identifier of the flow module.
    DeleteContactFlowModule -> Text
contactFlowModuleId :: Prelude.Text
  }
  deriving (DeleteContactFlowModule -> DeleteContactFlowModule -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteContactFlowModule -> DeleteContactFlowModule -> Bool
$c/= :: DeleteContactFlowModule -> DeleteContactFlowModule -> Bool
== :: DeleteContactFlowModule -> DeleteContactFlowModule -> Bool
$c== :: DeleteContactFlowModule -> DeleteContactFlowModule -> Bool
Prelude.Eq, ReadPrec [DeleteContactFlowModule]
ReadPrec DeleteContactFlowModule
Int -> ReadS DeleteContactFlowModule
ReadS [DeleteContactFlowModule]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteContactFlowModule]
$creadListPrec :: ReadPrec [DeleteContactFlowModule]
readPrec :: ReadPrec DeleteContactFlowModule
$creadPrec :: ReadPrec DeleteContactFlowModule
readList :: ReadS [DeleteContactFlowModule]
$creadList :: ReadS [DeleteContactFlowModule]
readsPrec :: Int -> ReadS DeleteContactFlowModule
$creadsPrec :: Int -> ReadS DeleteContactFlowModule
Prelude.Read, Int -> DeleteContactFlowModule -> ShowS
[DeleteContactFlowModule] -> ShowS
DeleteContactFlowModule -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteContactFlowModule] -> ShowS
$cshowList :: [DeleteContactFlowModule] -> ShowS
show :: DeleteContactFlowModule -> String
$cshow :: DeleteContactFlowModule -> String
showsPrec :: Int -> DeleteContactFlowModule -> ShowS
$cshowsPrec :: Int -> DeleteContactFlowModule -> ShowS
Prelude.Show, forall x. Rep DeleteContactFlowModule x -> DeleteContactFlowModule
forall x. DeleteContactFlowModule -> Rep DeleteContactFlowModule x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteContactFlowModule x -> DeleteContactFlowModule
$cfrom :: forall x. DeleteContactFlowModule -> Rep DeleteContactFlowModule x
Prelude.Generic)

-- |
-- Create a value of 'DeleteContactFlowModule' 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:
--
-- 'instanceId', 'deleteContactFlowModule_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
--
-- 'contactFlowModuleId', 'deleteContactFlowModule_contactFlowModuleId' - The identifier of the flow module.
newDeleteContactFlowModule ::
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'contactFlowModuleId'
  Prelude.Text ->
  DeleteContactFlowModule
newDeleteContactFlowModule :: Text -> Text -> DeleteContactFlowModule
newDeleteContactFlowModule
  Text
pInstanceId_
  Text
pContactFlowModuleId_ =
    DeleteContactFlowModule'
      { $sel:instanceId:DeleteContactFlowModule' :: Text
instanceId = Text
pInstanceId_,
        $sel:contactFlowModuleId:DeleteContactFlowModule' :: Text
contactFlowModuleId = Text
pContactFlowModuleId_
      }

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
deleteContactFlowModule_instanceId :: Lens.Lens' DeleteContactFlowModule Prelude.Text
deleteContactFlowModule_instanceId :: Lens' DeleteContactFlowModule Text
deleteContactFlowModule_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteContactFlowModule' {Text
instanceId :: Text
$sel:instanceId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
instanceId} -> Text
instanceId) (\s :: DeleteContactFlowModule
s@DeleteContactFlowModule' {} Text
a -> DeleteContactFlowModule
s {$sel:instanceId:DeleteContactFlowModule' :: Text
instanceId = Text
a} :: DeleteContactFlowModule)

-- | The identifier of the flow module.
deleteContactFlowModule_contactFlowModuleId :: Lens.Lens' DeleteContactFlowModule Prelude.Text
deleteContactFlowModule_contactFlowModuleId :: Lens' DeleteContactFlowModule Text
deleteContactFlowModule_contactFlowModuleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteContactFlowModule' {Text
contactFlowModuleId :: Text
$sel:contactFlowModuleId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
contactFlowModuleId} -> Text
contactFlowModuleId) (\s :: DeleteContactFlowModule
s@DeleteContactFlowModule' {} Text
a -> DeleteContactFlowModule
s {$sel:contactFlowModuleId:DeleteContactFlowModule' :: Text
contactFlowModuleId = Text
a} :: DeleteContactFlowModule)

instance Core.AWSRequest DeleteContactFlowModule where
  type
    AWSResponse DeleteContactFlowModule =
      DeleteContactFlowModuleResponse
  request :: (Service -> Service)
-> DeleteContactFlowModule -> Request DeleteContactFlowModule
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteContactFlowModule
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteContactFlowModule)))
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 -> DeleteContactFlowModuleResponse
DeleteContactFlowModuleResponse'
            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 DeleteContactFlowModule where
  hashWithSalt :: Int -> DeleteContactFlowModule -> Int
hashWithSalt Int
_salt DeleteContactFlowModule' {Text
contactFlowModuleId :: Text
instanceId :: Text
$sel:contactFlowModuleId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
$sel:instanceId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
contactFlowModuleId

instance Prelude.NFData DeleteContactFlowModule where
  rnf :: DeleteContactFlowModule -> ()
rnf DeleteContactFlowModule' {Text
contactFlowModuleId :: Text
instanceId :: Text
$sel:contactFlowModuleId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
$sel:instanceId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
contactFlowModuleId

instance Data.ToHeaders DeleteContactFlowModule where
  toHeaders :: DeleteContactFlowModule -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteContactFlowModule where
  toPath :: DeleteContactFlowModule -> ByteString
toPath DeleteContactFlowModule' {Text
contactFlowModuleId :: Text
instanceId :: Text
$sel:contactFlowModuleId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
$sel:instanceId:DeleteContactFlowModule' :: DeleteContactFlowModule -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/contact-flow-modules/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
instanceId,
        ByteString
"/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
contactFlowModuleId
      ]

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

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

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

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

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