{-# 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.DescribeMaintenanceWindows
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves the maintenance windows in an Amazon Web Services account.
--
-- This operation returns paginated results.
module Amazonka.SSM.DescribeMaintenanceWindows
  ( -- * Creating a Request
    DescribeMaintenanceWindows (..),
    newDescribeMaintenanceWindows,

    -- * Request Lenses
    describeMaintenanceWindows_filters,
    describeMaintenanceWindows_maxResults,
    describeMaintenanceWindows_nextToken,

    -- * Destructuring the Response
    DescribeMaintenanceWindowsResponse (..),
    newDescribeMaintenanceWindowsResponse,

    -- * Response Lenses
    describeMaintenanceWindowsResponse_nextToken,
    describeMaintenanceWindowsResponse_windowIdentities,
    describeMaintenanceWindowsResponse_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:/ 'newDescribeMaintenanceWindows' smart constructor.
data DescribeMaintenanceWindows = DescribeMaintenanceWindows'
  { -- | Optional filters used to narrow down the scope of the returned
    -- maintenance windows. Supported filter keys are @Name@ and @Enabled@. For
    -- example, @Name=MyMaintenanceWindow@ and @Enabled=True@.
    DescribeMaintenanceWindows -> Maybe [MaintenanceWindowFilter]
filters :: Prelude.Maybe [MaintenanceWindowFilter],
    -- | The maximum number of items to return for this call. The call also
    -- returns a token that you can specify in a subsequent call to get the
    -- next set of results.
    DescribeMaintenanceWindows -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token for the next set of items to return. (You received this token
    -- from a previous call.)
    DescribeMaintenanceWindows -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeMaintenanceWindows -> DescribeMaintenanceWindows -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMaintenanceWindows -> DescribeMaintenanceWindows -> Bool
$c/= :: DescribeMaintenanceWindows -> DescribeMaintenanceWindows -> Bool
== :: DescribeMaintenanceWindows -> DescribeMaintenanceWindows -> Bool
$c== :: DescribeMaintenanceWindows -> DescribeMaintenanceWindows -> Bool
Prelude.Eq, ReadPrec [DescribeMaintenanceWindows]
ReadPrec DescribeMaintenanceWindows
Int -> ReadS DescribeMaintenanceWindows
ReadS [DescribeMaintenanceWindows]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeMaintenanceWindows]
$creadListPrec :: ReadPrec [DescribeMaintenanceWindows]
readPrec :: ReadPrec DescribeMaintenanceWindows
$creadPrec :: ReadPrec DescribeMaintenanceWindows
readList :: ReadS [DescribeMaintenanceWindows]
$creadList :: ReadS [DescribeMaintenanceWindows]
readsPrec :: Int -> ReadS DescribeMaintenanceWindows
$creadsPrec :: Int -> ReadS DescribeMaintenanceWindows
Prelude.Read, Int -> DescribeMaintenanceWindows -> ShowS
[DescribeMaintenanceWindows] -> ShowS
DescribeMaintenanceWindows -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMaintenanceWindows] -> ShowS
$cshowList :: [DescribeMaintenanceWindows] -> ShowS
show :: DescribeMaintenanceWindows -> String
$cshow :: DescribeMaintenanceWindows -> String
showsPrec :: Int -> DescribeMaintenanceWindows -> ShowS
$cshowsPrec :: Int -> DescribeMaintenanceWindows -> ShowS
Prelude.Show, forall x.
Rep DescribeMaintenanceWindows x -> DescribeMaintenanceWindows
forall x.
DescribeMaintenanceWindows -> Rep DescribeMaintenanceWindows x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMaintenanceWindows x -> DescribeMaintenanceWindows
$cfrom :: forall x.
DescribeMaintenanceWindows -> Rep DescribeMaintenanceWindows x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMaintenanceWindows' 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:
--
-- 'filters', 'describeMaintenanceWindows_filters' - Optional filters used to narrow down the scope of the returned
-- maintenance windows. Supported filter keys are @Name@ and @Enabled@. For
-- example, @Name=MyMaintenanceWindow@ and @Enabled=True@.
--
-- 'maxResults', 'describeMaintenanceWindows_maxResults' - The maximum number of items to return for this call. The call also
-- returns a token that you can specify in a subsequent call to get the
-- next set of results.
--
-- 'nextToken', 'describeMaintenanceWindows_nextToken' - The token for the next set of items to return. (You received this token
-- from a previous call.)
newDescribeMaintenanceWindows ::
  DescribeMaintenanceWindows
newDescribeMaintenanceWindows :: DescribeMaintenanceWindows
newDescribeMaintenanceWindows =
  DescribeMaintenanceWindows'
    { $sel:filters:DescribeMaintenanceWindows' :: Maybe [MaintenanceWindowFilter]
filters =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeMaintenanceWindows' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeMaintenanceWindows' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | Optional filters used to narrow down the scope of the returned
-- maintenance windows. Supported filter keys are @Name@ and @Enabled@. For
-- example, @Name=MyMaintenanceWindow@ and @Enabled=True@.
describeMaintenanceWindows_filters :: Lens.Lens' DescribeMaintenanceWindows (Prelude.Maybe [MaintenanceWindowFilter])
describeMaintenanceWindows_filters :: Lens' DescribeMaintenanceWindows (Maybe [MaintenanceWindowFilter])
describeMaintenanceWindows_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMaintenanceWindows' {Maybe [MaintenanceWindowFilter]
filters :: Maybe [MaintenanceWindowFilter]
$sel:filters:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe [MaintenanceWindowFilter]
filters} -> Maybe [MaintenanceWindowFilter]
filters) (\s :: DescribeMaintenanceWindows
s@DescribeMaintenanceWindows' {} Maybe [MaintenanceWindowFilter]
a -> DescribeMaintenanceWindows
s {$sel:filters:DescribeMaintenanceWindows' :: Maybe [MaintenanceWindowFilter]
filters = Maybe [MaintenanceWindowFilter]
a} :: DescribeMaintenanceWindows) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The maximum number of items to return for this call. The call also
-- returns a token that you can specify in a subsequent call to get the
-- next set of results.
describeMaintenanceWindows_maxResults :: Lens.Lens' DescribeMaintenanceWindows (Prelude.Maybe Prelude.Natural)
describeMaintenanceWindows_maxResults :: Lens' DescribeMaintenanceWindows (Maybe Natural)
describeMaintenanceWindows_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMaintenanceWindows' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeMaintenanceWindows
s@DescribeMaintenanceWindows' {} Maybe Natural
a -> DescribeMaintenanceWindows
s {$sel:maxResults:DescribeMaintenanceWindows' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeMaintenanceWindows)

-- | The token for the next set of items to return. (You received this token
-- from a previous call.)
describeMaintenanceWindows_nextToken :: Lens.Lens' DescribeMaintenanceWindows (Prelude.Maybe Prelude.Text)
describeMaintenanceWindows_nextToken :: Lens' DescribeMaintenanceWindows (Maybe Text)
describeMaintenanceWindows_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMaintenanceWindows' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeMaintenanceWindows
s@DescribeMaintenanceWindows' {} Maybe Text
a -> DescribeMaintenanceWindows
s {$sel:nextToken:DescribeMaintenanceWindows' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeMaintenanceWindows)

instance Core.AWSPager DescribeMaintenanceWindows where
  page :: DescribeMaintenanceWindows
-> AWSResponse DescribeMaintenanceWindows
-> Maybe DescribeMaintenanceWindows
page DescribeMaintenanceWindows
rq AWSResponse DescribeMaintenanceWindows
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeMaintenanceWindows
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeMaintenanceWindowsResponse (Maybe Text)
describeMaintenanceWindowsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeMaintenanceWindows
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeMaintenanceWindowsResponse
  (Maybe [MaintenanceWindowIdentity])
describeMaintenanceWindowsResponse_windowIdentities
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeMaintenanceWindows
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeMaintenanceWindows (Maybe Text)
describeMaintenanceWindows_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeMaintenanceWindows
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeMaintenanceWindowsResponse (Maybe Text)
describeMaintenanceWindowsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeMaintenanceWindows where
  type
    AWSResponse DescribeMaintenanceWindows =
      DescribeMaintenanceWindowsResponse
  request :: (Service -> Service)
-> DescribeMaintenanceWindows -> Request DescribeMaintenanceWindows
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 DescribeMaintenanceWindows
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeMaintenanceWindows)))
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
-> Maybe [MaintenanceWindowIdentity]
-> Int
-> DescribeMaintenanceWindowsResponse
DescribeMaintenanceWindowsResponse'
            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
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"WindowIdentities"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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 DescribeMaintenanceWindows where
  hashWithSalt :: Int -> DescribeMaintenanceWindows -> Int
hashWithSalt Int
_salt DescribeMaintenanceWindows' {Maybe Natural
Maybe [MaintenanceWindowFilter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [MaintenanceWindowFilter]
$sel:nextToken:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Text
$sel:maxResults:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Natural
$sel:filters:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe [MaintenanceWindowFilter]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [MaintenanceWindowFilter]
filters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData DescribeMaintenanceWindows where
  rnf :: DescribeMaintenanceWindows -> ()
rnf DescribeMaintenanceWindows' {Maybe Natural
Maybe [MaintenanceWindowFilter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [MaintenanceWindowFilter]
$sel:nextToken:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Text
$sel:maxResults:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Natural
$sel:filters:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe [MaintenanceWindowFilter]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [MaintenanceWindowFilter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

instance Data.ToHeaders DescribeMaintenanceWindows where
  toHeaders :: DescribeMaintenanceWindows -> 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.DescribeMaintenanceWindows" ::
                          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 DescribeMaintenanceWindows where
  toJSON :: DescribeMaintenanceWindows -> Value
toJSON DescribeMaintenanceWindows' {Maybe Natural
Maybe [MaintenanceWindowFilter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [MaintenanceWindowFilter]
$sel:nextToken:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Text
$sel:maxResults:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe Natural
$sel:filters:DescribeMaintenanceWindows' :: DescribeMaintenanceWindows -> Maybe [MaintenanceWindowFilter]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Filters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [MaintenanceWindowFilter]
filters,
            (Key
"MaxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken
          ]
      )

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

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

-- | /See:/ 'newDescribeMaintenanceWindowsResponse' smart constructor.
data DescribeMaintenanceWindowsResponse = DescribeMaintenanceWindowsResponse'
  { -- | The token to use when requesting the next set of items. If there are no
    -- additional items to return, the string is empty.
    DescribeMaintenanceWindowsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Information about the maintenance windows.
    DescribeMaintenanceWindowsResponse
-> Maybe [MaintenanceWindowIdentity]
windowIdentities :: Prelude.Maybe [MaintenanceWindowIdentity],
    -- | The response's http status code.
    DescribeMaintenanceWindowsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeMaintenanceWindowsResponse
-> DescribeMaintenanceWindowsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMaintenanceWindowsResponse
-> DescribeMaintenanceWindowsResponse -> Bool
$c/= :: DescribeMaintenanceWindowsResponse
-> DescribeMaintenanceWindowsResponse -> Bool
== :: DescribeMaintenanceWindowsResponse
-> DescribeMaintenanceWindowsResponse -> Bool
$c== :: DescribeMaintenanceWindowsResponse
-> DescribeMaintenanceWindowsResponse -> Bool
Prelude.Eq, Int -> DescribeMaintenanceWindowsResponse -> ShowS
[DescribeMaintenanceWindowsResponse] -> ShowS
DescribeMaintenanceWindowsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMaintenanceWindowsResponse] -> ShowS
$cshowList :: [DescribeMaintenanceWindowsResponse] -> ShowS
show :: DescribeMaintenanceWindowsResponse -> String
$cshow :: DescribeMaintenanceWindowsResponse -> String
showsPrec :: Int -> DescribeMaintenanceWindowsResponse -> ShowS
$cshowsPrec :: Int -> DescribeMaintenanceWindowsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeMaintenanceWindowsResponse x
-> DescribeMaintenanceWindowsResponse
forall x.
DescribeMaintenanceWindowsResponse
-> Rep DescribeMaintenanceWindowsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMaintenanceWindowsResponse x
-> DescribeMaintenanceWindowsResponse
$cfrom :: forall x.
DescribeMaintenanceWindowsResponse
-> Rep DescribeMaintenanceWindowsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMaintenanceWindowsResponse' 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:
--
-- 'nextToken', 'describeMaintenanceWindowsResponse_nextToken' - The token to use when requesting the next set of items. If there are no
-- additional items to return, the string is empty.
--
-- 'windowIdentities', 'describeMaintenanceWindowsResponse_windowIdentities' - Information about the maintenance windows.
--
-- 'httpStatus', 'describeMaintenanceWindowsResponse_httpStatus' - The response's http status code.
newDescribeMaintenanceWindowsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeMaintenanceWindowsResponse
newDescribeMaintenanceWindowsResponse :: Int -> DescribeMaintenanceWindowsResponse
newDescribeMaintenanceWindowsResponse Int
pHttpStatus_ =
  DescribeMaintenanceWindowsResponse'
    { $sel:nextToken:DescribeMaintenanceWindowsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:windowIdentities:DescribeMaintenanceWindowsResponse' :: Maybe [MaintenanceWindowIdentity]
windowIdentities = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeMaintenanceWindowsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to use when requesting the next set of items. If there are no
-- additional items to return, the string is empty.
describeMaintenanceWindowsResponse_nextToken :: Lens.Lens' DescribeMaintenanceWindowsResponse (Prelude.Maybe Prelude.Text)
describeMaintenanceWindowsResponse_nextToken :: Lens' DescribeMaintenanceWindowsResponse (Maybe Text)
describeMaintenanceWindowsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMaintenanceWindowsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeMaintenanceWindowsResponse' :: DescribeMaintenanceWindowsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeMaintenanceWindowsResponse
s@DescribeMaintenanceWindowsResponse' {} Maybe Text
a -> DescribeMaintenanceWindowsResponse
s {$sel:nextToken:DescribeMaintenanceWindowsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeMaintenanceWindowsResponse)

-- | Information about the maintenance windows.
describeMaintenanceWindowsResponse_windowIdentities :: Lens.Lens' DescribeMaintenanceWindowsResponse (Prelude.Maybe [MaintenanceWindowIdentity])
describeMaintenanceWindowsResponse_windowIdentities :: Lens'
  DescribeMaintenanceWindowsResponse
  (Maybe [MaintenanceWindowIdentity])
describeMaintenanceWindowsResponse_windowIdentities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMaintenanceWindowsResponse' {Maybe [MaintenanceWindowIdentity]
windowIdentities :: Maybe [MaintenanceWindowIdentity]
$sel:windowIdentities:DescribeMaintenanceWindowsResponse' :: DescribeMaintenanceWindowsResponse
-> Maybe [MaintenanceWindowIdentity]
windowIdentities} -> Maybe [MaintenanceWindowIdentity]
windowIdentities) (\s :: DescribeMaintenanceWindowsResponse
s@DescribeMaintenanceWindowsResponse' {} Maybe [MaintenanceWindowIdentity]
a -> DescribeMaintenanceWindowsResponse
s {$sel:windowIdentities:DescribeMaintenanceWindowsResponse' :: Maybe [MaintenanceWindowIdentity]
windowIdentities = Maybe [MaintenanceWindowIdentity]
a} :: DescribeMaintenanceWindowsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    DescribeMaintenanceWindowsResponse
  where
  rnf :: DescribeMaintenanceWindowsResponse -> ()
rnf DescribeMaintenanceWindowsResponse' {Int
Maybe [MaintenanceWindowIdentity]
Maybe Text
httpStatus :: Int
windowIdentities :: Maybe [MaintenanceWindowIdentity]
nextToken :: Maybe Text
$sel:httpStatus:DescribeMaintenanceWindowsResponse' :: DescribeMaintenanceWindowsResponse -> Int
$sel:windowIdentities:DescribeMaintenanceWindowsResponse' :: DescribeMaintenanceWindowsResponse
-> Maybe [MaintenanceWindowIdentity]
$sel:nextToken:DescribeMaintenanceWindowsResponse' :: DescribeMaintenanceWindowsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MaintenanceWindowIdentity]
windowIdentities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus