{-# 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.SSM.DeleteMaintenanceWindow
-- 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 maintenance window.
module Amazonka.SSM.DeleteMaintenanceWindow
  ( -- * Creating a Request
    DeleteMaintenanceWindow (..),
    newDeleteMaintenanceWindow,

    -- * Request Lenses
    deleteMaintenanceWindow_windowId,

    -- * Destructuring the Response
    DeleteMaintenanceWindowResponse (..),
    newDeleteMaintenanceWindowResponse,

    -- * Response Lenses
    deleteMaintenanceWindowResponse_windowId,
    deleteMaintenanceWindowResponse_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.SSM.Types

-- | /See:/ 'newDeleteMaintenanceWindow' smart constructor.
data DeleteMaintenanceWindow = DeleteMaintenanceWindow'
  { -- | The ID of the maintenance window to delete.
    DeleteMaintenanceWindow -> Text
windowId :: Prelude.Text
  }
  deriving (DeleteMaintenanceWindow -> DeleteMaintenanceWindow -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteMaintenanceWindow -> DeleteMaintenanceWindow -> Bool
$c/= :: DeleteMaintenanceWindow -> DeleteMaintenanceWindow -> Bool
== :: DeleteMaintenanceWindow -> DeleteMaintenanceWindow -> Bool
$c== :: DeleteMaintenanceWindow -> DeleteMaintenanceWindow -> Bool
Prelude.Eq, ReadPrec [DeleteMaintenanceWindow]
ReadPrec DeleteMaintenanceWindow
Int -> ReadS DeleteMaintenanceWindow
ReadS [DeleteMaintenanceWindow]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteMaintenanceWindow]
$creadListPrec :: ReadPrec [DeleteMaintenanceWindow]
readPrec :: ReadPrec DeleteMaintenanceWindow
$creadPrec :: ReadPrec DeleteMaintenanceWindow
readList :: ReadS [DeleteMaintenanceWindow]
$creadList :: ReadS [DeleteMaintenanceWindow]
readsPrec :: Int -> ReadS DeleteMaintenanceWindow
$creadsPrec :: Int -> ReadS DeleteMaintenanceWindow
Prelude.Read, Int -> DeleteMaintenanceWindow -> ShowS
[DeleteMaintenanceWindow] -> ShowS
DeleteMaintenanceWindow -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteMaintenanceWindow] -> ShowS
$cshowList :: [DeleteMaintenanceWindow] -> ShowS
show :: DeleteMaintenanceWindow -> String
$cshow :: DeleteMaintenanceWindow -> String
showsPrec :: Int -> DeleteMaintenanceWindow -> ShowS
$cshowsPrec :: Int -> DeleteMaintenanceWindow -> ShowS
Prelude.Show, forall x. Rep DeleteMaintenanceWindow x -> DeleteMaintenanceWindow
forall x. DeleteMaintenanceWindow -> Rep DeleteMaintenanceWindow x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteMaintenanceWindow x -> DeleteMaintenanceWindow
$cfrom :: forall x. DeleteMaintenanceWindow -> Rep DeleteMaintenanceWindow x
Prelude.Generic)

-- |
-- Create a value of 'DeleteMaintenanceWindow' 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:
--
-- 'windowId', 'deleteMaintenanceWindow_windowId' - The ID of the maintenance window to delete.
newDeleteMaintenanceWindow ::
  -- | 'windowId'
  Prelude.Text ->
  DeleteMaintenanceWindow
newDeleteMaintenanceWindow :: Text -> DeleteMaintenanceWindow
newDeleteMaintenanceWindow Text
pWindowId_ =
  DeleteMaintenanceWindow' {$sel:windowId:DeleteMaintenanceWindow' :: Text
windowId = Text
pWindowId_}

-- | The ID of the maintenance window to delete.
deleteMaintenanceWindow_windowId :: Lens.Lens' DeleteMaintenanceWindow Prelude.Text
deleteMaintenanceWindow_windowId :: Lens' DeleteMaintenanceWindow Text
deleteMaintenanceWindow_windowId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteMaintenanceWindow' {Text
windowId :: Text
$sel:windowId:DeleteMaintenanceWindow' :: DeleteMaintenanceWindow -> Text
windowId} -> Text
windowId) (\s :: DeleteMaintenanceWindow
s@DeleteMaintenanceWindow' {} Text
a -> DeleteMaintenanceWindow
s {$sel:windowId:DeleteMaintenanceWindow' :: Text
windowId = Text
a} :: DeleteMaintenanceWindow)

instance Core.AWSRequest DeleteMaintenanceWindow where
  type
    AWSResponse DeleteMaintenanceWindow =
      DeleteMaintenanceWindowResponse
  request :: (Service -> Service)
-> DeleteMaintenanceWindow -> Request DeleteMaintenanceWindow
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 DeleteMaintenanceWindow
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteMaintenanceWindow)))
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 Text -> Int -> DeleteMaintenanceWindowResponse
DeleteMaintenanceWindowResponse'
            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
"WindowId")
            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 DeleteMaintenanceWindow where
  hashWithSalt :: Int -> DeleteMaintenanceWindow -> Int
hashWithSalt Int
_salt DeleteMaintenanceWindow' {Text
windowId :: Text
$sel:windowId:DeleteMaintenanceWindow' :: DeleteMaintenanceWindow -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
windowId

instance Prelude.NFData DeleteMaintenanceWindow where
  rnf :: DeleteMaintenanceWindow -> ()
rnf DeleteMaintenanceWindow' {Text
windowId :: Text
$sel:windowId:DeleteMaintenanceWindow' :: DeleteMaintenanceWindow -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
windowId

instance Data.ToHeaders DeleteMaintenanceWindow where
  toHeaders :: DeleteMaintenanceWindow -> 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
"AmazonSSM.DeleteMaintenanceWindow" ::
                          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 DeleteMaintenanceWindow where
  toJSON :: DeleteMaintenanceWindow -> Value
toJSON DeleteMaintenanceWindow' {Text
windowId :: Text
$sel:windowId:DeleteMaintenanceWindow' :: DeleteMaintenanceWindow -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"WindowId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
windowId)]
      )

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

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

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

-- |
-- Create a value of 'DeleteMaintenanceWindowResponse' 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:
--
-- 'windowId', 'deleteMaintenanceWindowResponse_windowId' - The ID of the deleted maintenance window.
--
-- 'httpStatus', 'deleteMaintenanceWindowResponse_httpStatus' - The response's http status code.
newDeleteMaintenanceWindowResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteMaintenanceWindowResponse
newDeleteMaintenanceWindowResponse :: Int -> DeleteMaintenanceWindowResponse
newDeleteMaintenanceWindowResponse Int
pHttpStatus_ =
  DeleteMaintenanceWindowResponse'
    { $sel:windowId:DeleteMaintenanceWindowResponse' :: Maybe Text
windowId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteMaintenanceWindowResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ID of the deleted maintenance window.
deleteMaintenanceWindowResponse_windowId :: Lens.Lens' DeleteMaintenanceWindowResponse (Prelude.Maybe Prelude.Text)
deleteMaintenanceWindowResponse_windowId :: Lens' DeleteMaintenanceWindowResponse (Maybe Text)
deleteMaintenanceWindowResponse_windowId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteMaintenanceWindowResponse' {Maybe Text
windowId :: Maybe Text
$sel:windowId:DeleteMaintenanceWindowResponse' :: DeleteMaintenanceWindowResponse -> Maybe Text
windowId} -> Maybe Text
windowId) (\s :: DeleteMaintenanceWindowResponse
s@DeleteMaintenanceWindowResponse' {} Maybe Text
a -> DeleteMaintenanceWindowResponse
s {$sel:windowId:DeleteMaintenanceWindowResponse' :: Maybe Text
windowId = Maybe Text
a} :: DeleteMaintenanceWindowResponse)

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

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