{-# 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.PurchaseReservedElasticsearchInstanceOffering
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Allows you to purchase reserved Elasticsearch instances.
module Amazonka.ElasticSearch.PurchaseReservedElasticsearchInstanceOffering
  ( -- * Creating a Request
    PurchaseReservedElasticsearchInstanceOffering (..),
    newPurchaseReservedElasticsearchInstanceOffering,

    -- * Request Lenses
    purchaseReservedElasticsearchInstanceOffering_instanceCount,
    purchaseReservedElasticsearchInstanceOffering_reservedElasticsearchInstanceOfferingId,
    purchaseReservedElasticsearchInstanceOffering_reservationName,

    -- * Destructuring the Response
    PurchaseReservedElasticsearchInstanceOfferingResponse (..),
    newPurchaseReservedElasticsearchInstanceOfferingResponse,

    -- * Response Lenses
    purchaseReservedElasticsearchInstanceOfferingResponse_reservationName,
    purchaseReservedElasticsearchInstanceOfferingResponse_reservedElasticsearchInstanceId,
    purchaseReservedElasticsearchInstanceOfferingResponse_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
-- @PurchaseReservedElasticsearchInstanceOffering@
--
-- /See:/ 'newPurchaseReservedElasticsearchInstanceOffering' smart constructor.
data PurchaseReservedElasticsearchInstanceOffering = PurchaseReservedElasticsearchInstanceOffering'
  { -- | The number of Elasticsearch instances to reserve.
    PurchaseReservedElasticsearchInstanceOffering -> Maybe Natural
instanceCount :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the reserved Elasticsearch instance offering to purchase.
    PurchaseReservedElasticsearchInstanceOffering -> Text
reservedElasticsearchInstanceOfferingId :: Prelude.Text,
    -- | A customer-specified identifier to track this reservation.
    PurchaseReservedElasticsearchInstanceOffering -> Text
reservationName :: Prelude.Text
  }
  deriving (PurchaseReservedElasticsearchInstanceOffering
-> PurchaseReservedElasticsearchInstanceOffering -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedElasticsearchInstanceOffering
-> PurchaseReservedElasticsearchInstanceOffering -> Bool
$c/= :: PurchaseReservedElasticsearchInstanceOffering
-> PurchaseReservedElasticsearchInstanceOffering -> Bool
== :: PurchaseReservedElasticsearchInstanceOffering
-> PurchaseReservedElasticsearchInstanceOffering -> Bool
$c== :: PurchaseReservedElasticsearchInstanceOffering
-> PurchaseReservedElasticsearchInstanceOffering -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedElasticsearchInstanceOffering]
ReadPrec PurchaseReservedElasticsearchInstanceOffering
Int -> ReadS PurchaseReservedElasticsearchInstanceOffering
ReadS [PurchaseReservedElasticsearchInstanceOffering]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedElasticsearchInstanceOffering]
$creadListPrec :: ReadPrec [PurchaseReservedElasticsearchInstanceOffering]
readPrec :: ReadPrec PurchaseReservedElasticsearchInstanceOffering
$creadPrec :: ReadPrec PurchaseReservedElasticsearchInstanceOffering
readList :: ReadS [PurchaseReservedElasticsearchInstanceOffering]
$creadList :: ReadS [PurchaseReservedElasticsearchInstanceOffering]
readsPrec :: Int -> ReadS PurchaseReservedElasticsearchInstanceOffering
$creadsPrec :: Int -> ReadS PurchaseReservedElasticsearchInstanceOffering
Prelude.Read, Int -> PurchaseReservedElasticsearchInstanceOffering -> ShowS
[PurchaseReservedElasticsearchInstanceOffering] -> ShowS
PurchaseReservedElasticsearchInstanceOffering -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedElasticsearchInstanceOffering] -> ShowS
$cshowList :: [PurchaseReservedElasticsearchInstanceOffering] -> ShowS
show :: PurchaseReservedElasticsearchInstanceOffering -> String
$cshow :: PurchaseReservedElasticsearchInstanceOffering -> String
showsPrec :: Int -> PurchaseReservedElasticsearchInstanceOffering -> ShowS
$cshowsPrec :: Int -> PurchaseReservedElasticsearchInstanceOffering -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedElasticsearchInstanceOffering x
-> PurchaseReservedElasticsearchInstanceOffering
forall x.
PurchaseReservedElasticsearchInstanceOffering
-> Rep PurchaseReservedElasticsearchInstanceOffering x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedElasticsearchInstanceOffering x
-> PurchaseReservedElasticsearchInstanceOffering
$cfrom :: forall x.
PurchaseReservedElasticsearchInstanceOffering
-> Rep PurchaseReservedElasticsearchInstanceOffering x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedElasticsearchInstanceOffering' 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:
--
-- 'instanceCount', 'purchaseReservedElasticsearchInstanceOffering_instanceCount' - The number of Elasticsearch instances to reserve.
--
-- 'reservedElasticsearchInstanceOfferingId', 'purchaseReservedElasticsearchInstanceOffering_reservedElasticsearchInstanceOfferingId' - The ID of the reserved Elasticsearch instance offering to purchase.
--
-- 'reservationName', 'purchaseReservedElasticsearchInstanceOffering_reservationName' - A customer-specified identifier to track this reservation.
newPurchaseReservedElasticsearchInstanceOffering ::
  -- | 'reservedElasticsearchInstanceOfferingId'
  Prelude.Text ->
  -- | 'reservationName'
  Prelude.Text ->
  PurchaseReservedElasticsearchInstanceOffering
newPurchaseReservedElasticsearchInstanceOffering :: Text -> Text -> PurchaseReservedElasticsearchInstanceOffering
newPurchaseReservedElasticsearchInstanceOffering
  Text
pReservedElasticsearchInstanceOfferingId_
  Text
pReservationName_ =
    PurchaseReservedElasticsearchInstanceOffering'
      { $sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: Maybe Natural
instanceCount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: Text
reservedElasticsearchInstanceOfferingId =
          Text
pReservedElasticsearchInstanceOfferingId_,
        $sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: Text
reservationName =
          Text
pReservationName_
      }

-- | The number of Elasticsearch instances to reserve.
purchaseReservedElasticsearchInstanceOffering_instanceCount :: Lens.Lens' PurchaseReservedElasticsearchInstanceOffering (Prelude.Maybe Prelude.Natural)
purchaseReservedElasticsearchInstanceOffering_instanceCount :: Lens' PurchaseReservedElasticsearchInstanceOffering (Maybe Natural)
purchaseReservedElasticsearchInstanceOffering_instanceCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedElasticsearchInstanceOffering' {Maybe Natural
instanceCount :: Maybe Natural
$sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Maybe Natural
instanceCount} -> Maybe Natural
instanceCount) (\s :: PurchaseReservedElasticsearchInstanceOffering
s@PurchaseReservedElasticsearchInstanceOffering' {} Maybe Natural
a -> PurchaseReservedElasticsearchInstanceOffering
s {$sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: Maybe Natural
instanceCount = Maybe Natural
a} :: PurchaseReservedElasticsearchInstanceOffering)

-- | The ID of the reserved Elasticsearch instance offering to purchase.
purchaseReservedElasticsearchInstanceOffering_reservedElasticsearchInstanceOfferingId :: Lens.Lens' PurchaseReservedElasticsearchInstanceOffering Prelude.Text
purchaseReservedElasticsearchInstanceOffering_reservedElasticsearchInstanceOfferingId :: Lens' PurchaseReservedElasticsearchInstanceOffering Text
purchaseReservedElasticsearchInstanceOffering_reservedElasticsearchInstanceOfferingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedElasticsearchInstanceOffering' {Text
reservedElasticsearchInstanceOfferingId :: Text
$sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
reservedElasticsearchInstanceOfferingId} -> Text
reservedElasticsearchInstanceOfferingId) (\s :: PurchaseReservedElasticsearchInstanceOffering
s@PurchaseReservedElasticsearchInstanceOffering' {} Text
a -> PurchaseReservedElasticsearchInstanceOffering
s {$sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: Text
reservedElasticsearchInstanceOfferingId = Text
a} :: PurchaseReservedElasticsearchInstanceOffering)

-- | A customer-specified identifier to track this reservation.
purchaseReservedElasticsearchInstanceOffering_reservationName :: Lens.Lens' PurchaseReservedElasticsearchInstanceOffering Prelude.Text
purchaseReservedElasticsearchInstanceOffering_reservationName :: Lens' PurchaseReservedElasticsearchInstanceOffering Text
purchaseReservedElasticsearchInstanceOffering_reservationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedElasticsearchInstanceOffering' {Text
reservationName :: Text
$sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
reservationName} -> Text
reservationName) (\s :: PurchaseReservedElasticsearchInstanceOffering
s@PurchaseReservedElasticsearchInstanceOffering' {} Text
a -> PurchaseReservedElasticsearchInstanceOffering
s {$sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: Text
reservationName = Text
a} :: PurchaseReservedElasticsearchInstanceOffering)

instance
  Core.AWSRequest
    PurchaseReservedElasticsearchInstanceOffering
  where
  type
    AWSResponse
      PurchaseReservedElasticsearchInstanceOffering =
      PurchaseReservedElasticsearchInstanceOfferingResponse
  request :: (Service -> Service)
-> PurchaseReservedElasticsearchInstanceOffering
-> Request PurchaseReservedElasticsearchInstanceOffering
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 PurchaseReservedElasticsearchInstanceOffering
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse PurchaseReservedElasticsearchInstanceOffering)))
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 Text
-> Int
-> PurchaseReservedElasticsearchInstanceOfferingResponse
PurchaseReservedElasticsearchInstanceOfferingResponse'
            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
"ReservationName")
            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
"ReservedElasticsearchInstanceId")
            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
    PurchaseReservedElasticsearchInstanceOffering
  where
  hashWithSalt :: Int -> PurchaseReservedElasticsearchInstanceOffering -> Int
hashWithSalt
    Int
_salt
    PurchaseReservedElasticsearchInstanceOffering' {Maybe Natural
Text
reservationName :: Text
reservedElasticsearchInstanceOfferingId :: Text
instanceCount :: Maybe Natural
$sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Maybe Natural
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
instanceCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
reservedElasticsearchInstanceOfferingId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
reservationName

instance
  Prelude.NFData
    PurchaseReservedElasticsearchInstanceOffering
  where
  rnf :: PurchaseReservedElasticsearchInstanceOffering -> ()
rnf
    PurchaseReservedElasticsearchInstanceOffering' {Maybe Natural
Text
reservationName :: Text
reservedElasticsearchInstanceOfferingId :: Text
instanceCount :: Maybe Natural
$sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Maybe Natural
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
instanceCount
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
reservedElasticsearchInstanceOfferingId
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
reservationName

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

instance
  Data.ToJSON
    PurchaseReservedElasticsearchInstanceOffering
  where
  toJSON :: PurchaseReservedElasticsearchInstanceOffering -> Value
toJSON
    PurchaseReservedElasticsearchInstanceOffering' {Maybe Natural
Text
reservationName :: Text
reservedElasticsearchInstanceOfferingId :: Text
instanceCount :: Maybe Natural
$sel:reservationName:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:reservedElasticsearchInstanceOfferingId:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Text
$sel:instanceCount:PurchaseReservedElasticsearchInstanceOffering' :: PurchaseReservedElasticsearchInstanceOffering -> Maybe Natural
..} =
      [Pair] -> Value
Data.object
        ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
            [ (Key
"InstanceCount" 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
instanceCount,
              forall a. a -> Maybe a
Prelude.Just
                ( Key
"ReservedElasticsearchInstanceOfferingId"
                    forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
reservedElasticsearchInstanceOfferingId
                ),
              forall a. a -> Maybe a
Prelude.Just
                (Key
"ReservationName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
reservationName)
            ]
        )

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

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

-- | Represents the output of a
-- @PurchaseReservedElasticsearchInstanceOffering@ operation.
--
-- /See:/ 'newPurchaseReservedElasticsearchInstanceOfferingResponse' smart constructor.
data PurchaseReservedElasticsearchInstanceOfferingResponse = PurchaseReservedElasticsearchInstanceOfferingResponse'
  { -- | The customer-specified identifier used to track this reservation.
    PurchaseReservedElasticsearchInstanceOfferingResponse -> Maybe Text
reservationName :: Prelude.Maybe Prelude.Text,
    -- | Details of the reserved Elasticsearch instance which was purchased.
    PurchaseReservedElasticsearchInstanceOfferingResponse -> Maybe Text
reservedElasticsearchInstanceId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    PurchaseReservedElasticsearchInstanceOfferingResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (PurchaseReservedElasticsearchInstanceOfferingResponse
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedElasticsearchInstanceOfferingResponse
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> Bool
$c/= :: PurchaseReservedElasticsearchInstanceOfferingResponse
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> Bool
== :: PurchaseReservedElasticsearchInstanceOfferingResponse
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> Bool
$c== :: PurchaseReservedElasticsearchInstanceOfferingResponse
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedElasticsearchInstanceOfferingResponse]
ReadPrec PurchaseReservedElasticsearchInstanceOfferingResponse
Int -> ReadS PurchaseReservedElasticsearchInstanceOfferingResponse
ReadS [PurchaseReservedElasticsearchInstanceOfferingResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedElasticsearchInstanceOfferingResponse]
$creadListPrec :: ReadPrec [PurchaseReservedElasticsearchInstanceOfferingResponse]
readPrec :: ReadPrec PurchaseReservedElasticsearchInstanceOfferingResponse
$creadPrec :: ReadPrec PurchaseReservedElasticsearchInstanceOfferingResponse
readList :: ReadS [PurchaseReservedElasticsearchInstanceOfferingResponse]
$creadList :: ReadS [PurchaseReservedElasticsearchInstanceOfferingResponse]
readsPrec :: Int -> ReadS PurchaseReservedElasticsearchInstanceOfferingResponse
$creadsPrec :: Int -> ReadS PurchaseReservedElasticsearchInstanceOfferingResponse
Prelude.Read, Int
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> ShowS
[PurchaseReservedElasticsearchInstanceOfferingResponse] -> ShowS
PurchaseReservedElasticsearchInstanceOfferingResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedElasticsearchInstanceOfferingResponse] -> ShowS
$cshowList :: [PurchaseReservedElasticsearchInstanceOfferingResponse] -> ShowS
show :: PurchaseReservedElasticsearchInstanceOfferingResponse -> String
$cshow :: PurchaseReservedElasticsearchInstanceOfferingResponse -> String
showsPrec :: Int
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> ShowS
$cshowsPrec :: Int
-> PurchaseReservedElasticsearchInstanceOfferingResponse -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedElasticsearchInstanceOfferingResponse x
-> PurchaseReservedElasticsearchInstanceOfferingResponse
forall x.
PurchaseReservedElasticsearchInstanceOfferingResponse
-> Rep PurchaseReservedElasticsearchInstanceOfferingResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedElasticsearchInstanceOfferingResponse x
-> PurchaseReservedElasticsearchInstanceOfferingResponse
$cfrom :: forall x.
PurchaseReservedElasticsearchInstanceOfferingResponse
-> Rep PurchaseReservedElasticsearchInstanceOfferingResponse x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedElasticsearchInstanceOfferingResponse' 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:
--
-- 'reservationName', 'purchaseReservedElasticsearchInstanceOfferingResponse_reservationName' - The customer-specified identifier used to track this reservation.
--
-- 'reservedElasticsearchInstanceId', 'purchaseReservedElasticsearchInstanceOfferingResponse_reservedElasticsearchInstanceId' - Details of the reserved Elasticsearch instance which was purchased.
--
-- 'httpStatus', 'purchaseReservedElasticsearchInstanceOfferingResponse_httpStatus' - The response's http status code.
newPurchaseReservedElasticsearchInstanceOfferingResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  PurchaseReservedElasticsearchInstanceOfferingResponse
newPurchaseReservedElasticsearchInstanceOfferingResponse :: Int -> PurchaseReservedElasticsearchInstanceOfferingResponse
newPurchaseReservedElasticsearchInstanceOfferingResponse
  Int
pHttpStatus_ =
    PurchaseReservedElasticsearchInstanceOfferingResponse'
      { $sel:reservationName:PurchaseReservedElasticsearchInstanceOfferingResponse' :: Maybe Text
reservationName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedElasticsearchInstanceId:PurchaseReservedElasticsearchInstanceOfferingResponse' :: Maybe Text
reservedElasticsearchInstanceId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:PurchaseReservedElasticsearchInstanceOfferingResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | The customer-specified identifier used to track this reservation.
purchaseReservedElasticsearchInstanceOfferingResponse_reservationName :: Lens.Lens' PurchaseReservedElasticsearchInstanceOfferingResponse (Prelude.Maybe Prelude.Text)
purchaseReservedElasticsearchInstanceOfferingResponse_reservationName :: Lens'
  PurchaseReservedElasticsearchInstanceOfferingResponse (Maybe Text)
purchaseReservedElasticsearchInstanceOfferingResponse_reservationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedElasticsearchInstanceOfferingResponse' {Maybe Text
reservationName :: Maybe Text
$sel:reservationName:PurchaseReservedElasticsearchInstanceOfferingResponse' :: PurchaseReservedElasticsearchInstanceOfferingResponse -> Maybe Text
reservationName} -> Maybe Text
reservationName) (\s :: PurchaseReservedElasticsearchInstanceOfferingResponse
s@PurchaseReservedElasticsearchInstanceOfferingResponse' {} Maybe Text
a -> PurchaseReservedElasticsearchInstanceOfferingResponse
s {$sel:reservationName:PurchaseReservedElasticsearchInstanceOfferingResponse' :: Maybe Text
reservationName = Maybe Text
a} :: PurchaseReservedElasticsearchInstanceOfferingResponse)

-- | Details of the reserved Elasticsearch instance which was purchased.
purchaseReservedElasticsearchInstanceOfferingResponse_reservedElasticsearchInstanceId :: Lens.Lens' PurchaseReservedElasticsearchInstanceOfferingResponse (Prelude.Maybe Prelude.Text)
purchaseReservedElasticsearchInstanceOfferingResponse_reservedElasticsearchInstanceId :: Lens'
  PurchaseReservedElasticsearchInstanceOfferingResponse (Maybe Text)
purchaseReservedElasticsearchInstanceOfferingResponse_reservedElasticsearchInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedElasticsearchInstanceOfferingResponse' {Maybe Text
reservedElasticsearchInstanceId :: Maybe Text
$sel:reservedElasticsearchInstanceId:PurchaseReservedElasticsearchInstanceOfferingResponse' :: PurchaseReservedElasticsearchInstanceOfferingResponse -> Maybe Text
reservedElasticsearchInstanceId} -> Maybe Text
reservedElasticsearchInstanceId) (\s :: PurchaseReservedElasticsearchInstanceOfferingResponse
s@PurchaseReservedElasticsearchInstanceOfferingResponse' {} Maybe Text
a -> PurchaseReservedElasticsearchInstanceOfferingResponse
s {$sel:reservedElasticsearchInstanceId:PurchaseReservedElasticsearchInstanceOfferingResponse' :: Maybe Text
reservedElasticsearchInstanceId = Maybe Text
a} :: PurchaseReservedElasticsearchInstanceOfferingResponse)

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

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