{-# 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.ElasticSearch.DescribeReservedElasticsearchInstances
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about reserved Elasticsearch instances for this
-- account.
--
-- This operation returns paginated results.
module Amazonka.ElasticSearch.DescribeReservedElasticsearchInstances
  ( -- * Creating a Request
    DescribeReservedElasticsearchInstances (..),
    newDescribeReservedElasticsearchInstances,

    -- * Request Lenses
    describeReservedElasticsearchInstances_maxResults,
    describeReservedElasticsearchInstances_nextToken,
    describeReservedElasticsearchInstances_reservedElasticsearchInstanceId,

    -- * Destructuring the Response
    DescribeReservedElasticsearchInstancesResponse (..),
    newDescribeReservedElasticsearchInstancesResponse,

    -- * Response Lenses
    describeReservedElasticsearchInstancesResponse_nextToken,
    describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances,
    describeReservedElasticsearchInstancesResponse_httpStatus,
  )
where

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

-- | Container for parameters to @DescribeReservedElasticsearchInstances@
--
-- /See:/ 'newDescribeReservedElasticsearchInstances' smart constructor.
data DescribeReservedElasticsearchInstances = DescribeReservedElasticsearchInstances'
  { -- | Set this value to limit the number of results returned. If not
    -- specified, defaults to 100.
    DescribeReservedElasticsearchInstances -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | NextToken should be sent in case if earlier API call produced result
    -- containing NextToken. It is used for pagination.
    DescribeReservedElasticsearchInstances -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The reserved instance identifier filter value. Use this parameter to
    -- show only the reservation that matches the specified reserved
    -- Elasticsearch instance ID.
    DescribeReservedElasticsearchInstances -> Maybe Text
reservedElasticsearchInstanceId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeReservedElasticsearchInstances
-> DescribeReservedElasticsearchInstances -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedElasticsearchInstances
-> DescribeReservedElasticsearchInstances -> Bool
$c/= :: DescribeReservedElasticsearchInstances
-> DescribeReservedElasticsearchInstances -> Bool
== :: DescribeReservedElasticsearchInstances
-> DescribeReservedElasticsearchInstances -> Bool
$c== :: DescribeReservedElasticsearchInstances
-> DescribeReservedElasticsearchInstances -> Bool
Prelude.Eq, ReadPrec [DescribeReservedElasticsearchInstances]
ReadPrec DescribeReservedElasticsearchInstances
Int -> ReadS DescribeReservedElasticsearchInstances
ReadS [DescribeReservedElasticsearchInstances]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedElasticsearchInstances]
$creadListPrec :: ReadPrec [DescribeReservedElasticsearchInstances]
readPrec :: ReadPrec DescribeReservedElasticsearchInstances
$creadPrec :: ReadPrec DescribeReservedElasticsearchInstances
readList :: ReadS [DescribeReservedElasticsearchInstances]
$creadList :: ReadS [DescribeReservedElasticsearchInstances]
readsPrec :: Int -> ReadS DescribeReservedElasticsearchInstances
$creadsPrec :: Int -> ReadS DescribeReservedElasticsearchInstances
Prelude.Read, Int -> DescribeReservedElasticsearchInstances -> ShowS
[DescribeReservedElasticsearchInstances] -> ShowS
DescribeReservedElasticsearchInstances -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedElasticsearchInstances] -> ShowS
$cshowList :: [DescribeReservedElasticsearchInstances] -> ShowS
show :: DescribeReservedElasticsearchInstances -> String
$cshow :: DescribeReservedElasticsearchInstances -> String
showsPrec :: Int -> DescribeReservedElasticsearchInstances -> ShowS
$cshowsPrec :: Int -> DescribeReservedElasticsearchInstances -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedElasticsearchInstances x
-> DescribeReservedElasticsearchInstances
forall x.
DescribeReservedElasticsearchInstances
-> Rep DescribeReservedElasticsearchInstances x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedElasticsearchInstances x
-> DescribeReservedElasticsearchInstances
$cfrom :: forall x.
DescribeReservedElasticsearchInstances
-> Rep DescribeReservedElasticsearchInstances x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedElasticsearchInstances' 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:
--
-- 'maxResults', 'describeReservedElasticsearchInstances_maxResults' - Set this value to limit the number of results returned. If not
-- specified, defaults to 100.
--
-- 'nextToken', 'describeReservedElasticsearchInstances_nextToken' - NextToken should be sent in case if earlier API call produced result
-- containing NextToken. It is used for pagination.
--
-- 'reservedElasticsearchInstanceId', 'describeReservedElasticsearchInstances_reservedElasticsearchInstanceId' - The reserved instance identifier filter value. Use this parameter to
-- show only the reservation that matches the specified reserved
-- Elasticsearch instance ID.
newDescribeReservedElasticsearchInstances ::
  DescribeReservedElasticsearchInstances
newDescribeReservedElasticsearchInstances :: DescribeReservedElasticsearchInstances
newDescribeReservedElasticsearchInstances =
  DescribeReservedElasticsearchInstances'
    { $sel:maxResults:DescribeReservedElasticsearchInstances' :: Maybe Int
maxResults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeReservedElasticsearchInstances' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: Maybe Text
reservedElasticsearchInstanceId =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Set this value to limit the number of results returned. If not
-- specified, defaults to 100.
describeReservedElasticsearchInstances_maxResults :: Lens.Lens' DescribeReservedElasticsearchInstances (Prelude.Maybe Prelude.Int)
describeReservedElasticsearchInstances_maxResults :: Lens' DescribeReservedElasticsearchInstances (Maybe Int)
describeReservedElasticsearchInstances_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstances' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: DescribeReservedElasticsearchInstances
s@DescribeReservedElasticsearchInstances' {} Maybe Int
a -> DescribeReservedElasticsearchInstances
s {$sel:maxResults:DescribeReservedElasticsearchInstances' :: Maybe Int
maxResults = Maybe Int
a} :: DescribeReservedElasticsearchInstances)

-- | NextToken should be sent in case if earlier API call produced result
-- containing NextToken. It is used for pagination.
describeReservedElasticsearchInstances_nextToken :: Lens.Lens' DescribeReservedElasticsearchInstances (Prelude.Maybe Prelude.Text)
describeReservedElasticsearchInstances_nextToken :: Lens' DescribeReservedElasticsearchInstances (Maybe Text)
describeReservedElasticsearchInstances_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstances' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedElasticsearchInstances
s@DescribeReservedElasticsearchInstances' {} Maybe Text
a -> DescribeReservedElasticsearchInstances
s {$sel:nextToken:DescribeReservedElasticsearchInstances' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedElasticsearchInstances)

-- | The reserved instance identifier filter value. Use this parameter to
-- show only the reservation that matches the specified reserved
-- Elasticsearch instance ID.
describeReservedElasticsearchInstances_reservedElasticsearchInstanceId :: Lens.Lens' DescribeReservedElasticsearchInstances (Prelude.Maybe Prelude.Text)
describeReservedElasticsearchInstances_reservedElasticsearchInstanceId :: Lens' DescribeReservedElasticsearchInstances (Maybe Text)
describeReservedElasticsearchInstances_reservedElasticsearchInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstances' {Maybe Text
reservedElasticsearchInstanceId :: Maybe Text
$sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
reservedElasticsearchInstanceId} -> Maybe Text
reservedElasticsearchInstanceId) (\s :: DescribeReservedElasticsearchInstances
s@DescribeReservedElasticsearchInstances' {} Maybe Text
a -> DescribeReservedElasticsearchInstances
s {$sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: Maybe Text
reservedElasticsearchInstanceId = Maybe Text
a} :: DescribeReservedElasticsearchInstances)

instance
  Core.AWSPager
    DescribeReservedElasticsearchInstances
  where
  page :: DescribeReservedElasticsearchInstances
-> AWSResponse DescribeReservedElasticsearchInstances
-> Maybe DescribeReservedElasticsearchInstances
page DescribeReservedElasticsearchInstances
rq AWSResponse DescribeReservedElasticsearchInstances
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeReservedElasticsearchInstances
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedElasticsearchInstancesResponse (Maybe Text)
describeReservedElasticsearchInstancesResponse_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 DescribeReservedElasticsearchInstances
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeReservedElasticsearchInstancesResponse
  (Maybe [ReservedElasticsearchInstance])
describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances
            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.$ DescribeReservedElasticsearchInstances
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeReservedElasticsearchInstances (Maybe Text)
describeReservedElasticsearchInstances_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeReservedElasticsearchInstances
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedElasticsearchInstancesResponse (Maybe Text)
describeReservedElasticsearchInstancesResponse_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
    DescribeReservedElasticsearchInstances
  where
  type
    AWSResponse
      DescribeReservedElasticsearchInstances =
      DescribeReservedElasticsearchInstancesResponse
  request :: (Service -> Service)
-> DescribeReservedElasticsearchInstances
-> Request DescribeReservedElasticsearchInstances
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeReservedElasticsearchInstances
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribeReservedElasticsearchInstances)))
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 [ReservedElasticsearchInstance]
-> Int
-> DescribeReservedElasticsearchInstancesResponse
DescribeReservedElasticsearchInstancesResponse'
            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
"ReservedElasticsearchInstances"
                            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
    DescribeReservedElasticsearchInstances
  where
  hashWithSalt :: Int -> DescribeReservedElasticsearchInstances -> Int
hashWithSalt
    Int
_salt
    DescribeReservedElasticsearchInstances' {Maybe Int
Maybe Text
reservedElasticsearchInstanceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:nextToken:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:maxResults:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Int
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservedElasticsearchInstanceId

instance
  Prelude.NFData
    DescribeReservedElasticsearchInstances
  where
  rnf :: DescribeReservedElasticsearchInstances -> ()
rnf DescribeReservedElasticsearchInstances' {Maybe Int
Maybe Text
reservedElasticsearchInstanceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:nextToken:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:maxResults:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
reservedElasticsearchInstanceId

instance
  Data.ToHeaders
    DescribeReservedElasticsearchInstances
  where
  toHeaders :: DescribeReservedElasticsearchInstances -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance
  Data.ToPath
    DescribeReservedElasticsearchInstances
  where
  toPath :: DescribeReservedElasticsearchInstances -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const ByteString
"/2015-01-01/es/reservedInstances"

instance
  Data.ToQuery
    DescribeReservedElasticsearchInstances
  where
  toQuery :: DescribeReservedElasticsearchInstances -> QueryString
toQuery DescribeReservedElasticsearchInstances' {Maybe Int
Maybe Text
reservedElasticsearchInstanceId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:reservedElasticsearchInstanceId:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:nextToken:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Text
$sel:maxResults:DescribeReservedElasticsearchInstances' :: DescribeReservedElasticsearchInstances -> Maybe Int
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"reservationId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
reservedElasticsearchInstanceId
      ]

-- | Container for results from @DescribeReservedElasticsearchInstances@
--
-- /See:/ 'newDescribeReservedElasticsearchInstancesResponse' smart constructor.
data DescribeReservedElasticsearchInstancesResponse = DescribeReservedElasticsearchInstancesResponse'
  { -- | Provides an identifier to allow retrieval of paginated results.
    DescribeReservedElasticsearchInstancesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | List of reserved Elasticsearch instances.
    DescribeReservedElasticsearchInstancesResponse
-> Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances :: Prelude.Maybe [ReservedElasticsearchInstance],
    -- | The response's http status code.
    DescribeReservedElasticsearchInstancesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeReservedElasticsearchInstancesResponse
-> DescribeReservedElasticsearchInstancesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedElasticsearchInstancesResponse
-> DescribeReservedElasticsearchInstancesResponse -> Bool
$c/= :: DescribeReservedElasticsearchInstancesResponse
-> DescribeReservedElasticsearchInstancesResponse -> Bool
== :: DescribeReservedElasticsearchInstancesResponse
-> DescribeReservedElasticsearchInstancesResponse -> Bool
$c== :: DescribeReservedElasticsearchInstancesResponse
-> DescribeReservedElasticsearchInstancesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeReservedElasticsearchInstancesResponse]
ReadPrec DescribeReservedElasticsearchInstancesResponse
Int -> ReadS DescribeReservedElasticsearchInstancesResponse
ReadS [DescribeReservedElasticsearchInstancesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedElasticsearchInstancesResponse]
$creadListPrec :: ReadPrec [DescribeReservedElasticsearchInstancesResponse]
readPrec :: ReadPrec DescribeReservedElasticsearchInstancesResponse
$creadPrec :: ReadPrec DescribeReservedElasticsearchInstancesResponse
readList :: ReadS [DescribeReservedElasticsearchInstancesResponse]
$creadList :: ReadS [DescribeReservedElasticsearchInstancesResponse]
readsPrec :: Int -> ReadS DescribeReservedElasticsearchInstancesResponse
$creadsPrec :: Int -> ReadS DescribeReservedElasticsearchInstancesResponse
Prelude.Read, Int -> DescribeReservedElasticsearchInstancesResponse -> ShowS
[DescribeReservedElasticsearchInstancesResponse] -> ShowS
DescribeReservedElasticsearchInstancesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedElasticsearchInstancesResponse] -> ShowS
$cshowList :: [DescribeReservedElasticsearchInstancesResponse] -> ShowS
show :: DescribeReservedElasticsearchInstancesResponse -> String
$cshow :: DescribeReservedElasticsearchInstancesResponse -> String
showsPrec :: Int -> DescribeReservedElasticsearchInstancesResponse -> ShowS
$cshowsPrec :: Int -> DescribeReservedElasticsearchInstancesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedElasticsearchInstancesResponse x
-> DescribeReservedElasticsearchInstancesResponse
forall x.
DescribeReservedElasticsearchInstancesResponse
-> Rep DescribeReservedElasticsearchInstancesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedElasticsearchInstancesResponse x
-> DescribeReservedElasticsearchInstancesResponse
$cfrom :: forall x.
DescribeReservedElasticsearchInstancesResponse
-> Rep DescribeReservedElasticsearchInstancesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedElasticsearchInstancesResponse' 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', 'describeReservedElasticsearchInstancesResponse_nextToken' - Provides an identifier to allow retrieval of paginated results.
--
-- 'reservedElasticsearchInstances', 'describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances' - List of reserved Elasticsearch instances.
--
-- 'httpStatus', 'describeReservedElasticsearchInstancesResponse_httpStatus' - The response's http status code.
newDescribeReservedElasticsearchInstancesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeReservedElasticsearchInstancesResponse
newDescribeReservedElasticsearchInstancesResponse :: Int -> DescribeReservedElasticsearchInstancesResponse
newDescribeReservedElasticsearchInstancesResponse
  Int
pHttpStatus_ =
    DescribeReservedElasticsearchInstancesResponse'
      { $sel:nextToken:DescribeReservedElasticsearchInstancesResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedElasticsearchInstances:DescribeReservedElasticsearchInstancesResponse' :: Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeReservedElasticsearchInstancesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Provides an identifier to allow retrieval of paginated results.
describeReservedElasticsearchInstancesResponse_nextToken :: Lens.Lens' DescribeReservedElasticsearchInstancesResponse (Prelude.Maybe Prelude.Text)
describeReservedElasticsearchInstancesResponse_nextToken :: Lens' DescribeReservedElasticsearchInstancesResponse (Maybe Text)
describeReservedElasticsearchInstancesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstancesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedElasticsearchInstancesResponse
s@DescribeReservedElasticsearchInstancesResponse' {} Maybe Text
a -> DescribeReservedElasticsearchInstancesResponse
s {$sel:nextToken:DescribeReservedElasticsearchInstancesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedElasticsearchInstancesResponse)

-- | List of reserved Elasticsearch instances.
describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances :: Lens.Lens' DescribeReservedElasticsearchInstancesResponse (Prelude.Maybe [ReservedElasticsearchInstance])
describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances :: Lens'
  DescribeReservedElasticsearchInstancesResponse
  (Maybe [ReservedElasticsearchInstance])
describeReservedElasticsearchInstancesResponse_reservedElasticsearchInstances = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstancesResponse' {Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances :: Maybe [ReservedElasticsearchInstance]
$sel:reservedElasticsearchInstances:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse
-> Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances} -> Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances) (\s :: DescribeReservedElasticsearchInstancesResponse
s@DescribeReservedElasticsearchInstancesResponse' {} Maybe [ReservedElasticsearchInstance]
a -> DescribeReservedElasticsearchInstancesResponse
s {$sel:reservedElasticsearchInstances:DescribeReservedElasticsearchInstancesResponse' :: Maybe [ReservedElasticsearchInstance]
reservedElasticsearchInstances = Maybe [ReservedElasticsearchInstance]
a} :: DescribeReservedElasticsearchInstancesResponse) 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.
describeReservedElasticsearchInstancesResponse_httpStatus :: Lens.Lens' DescribeReservedElasticsearchInstancesResponse Prelude.Int
describeReservedElasticsearchInstancesResponse_httpStatus :: Lens' DescribeReservedElasticsearchInstancesResponse Int
describeReservedElasticsearchInstancesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedElasticsearchInstancesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeReservedElasticsearchInstancesResponse
s@DescribeReservedElasticsearchInstancesResponse' {} Int
a -> DescribeReservedElasticsearchInstancesResponse
s {$sel:httpStatus:DescribeReservedElasticsearchInstancesResponse' :: Int
httpStatus = Int
a} :: DescribeReservedElasticsearchInstancesResponse)

instance
  Prelude.NFData
    DescribeReservedElasticsearchInstancesResponse
  where
  rnf :: DescribeReservedElasticsearchInstancesResponse -> ()
rnf
    DescribeReservedElasticsearchInstancesResponse' {Int
Maybe [ReservedElasticsearchInstance]
Maybe Text
httpStatus :: Int
reservedElasticsearchInstances :: Maybe [ReservedElasticsearchInstance]
nextToken :: Maybe Text
$sel:httpStatus:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse -> Int
$sel:reservedElasticsearchInstances:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse
-> Maybe [ReservedElasticsearchInstance]
$sel:nextToken:DescribeReservedElasticsearchInstancesResponse' :: DescribeReservedElasticsearchInstancesResponse -> 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 [ReservedElasticsearchInstance]
reservedElasticsearchInstances
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus