{-# 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.OpenSearch.PurchaseReservedInstanceOffering
-- 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 Amazon OpenSearch Service Reserved Instances.
module Amazonka.OpenSearch.PurchaseReservedInstanceOffering
  ( -- * Creating a Request
    PurchaseReservedInstanceOffering (..),
    newPurchaseReservedInstanceOffering,

    -- * Request Lenses
    purchaseReservedInstanceOffering_instanceCount,
    purchaseReservedInstanceOffering_reservedInstanceOfferingId,
    purchaseReservedInstanceOffering_reservationName,

    -- * Destructuring the Response
    PurchaseReservedInstanceOfferingResponse (..),
    newPurchaseReservedInstanceOfferingResponse,

    -- * Response Lenses
    purchaseReservedInstanceOfferingResponse_reservationName,
    purchaseReservedInstanceOfferingResponse_reservedInstanceId,
    purchaseReservedInstanceOfferingResponse_httpStatus,
  )
where

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

-- | Container for request parameters to the
-- @PurchaseReservedInstanceOffering@ operation.
--
-- /See:/ 'newPurchaseReservedInstanceOffering' smart constructor.
data PurchaseReservedInstanceOffering = PurchaseReservedInstanceOffering'
  { -- | The number of OpenSearch instances to reserve.
    PurchaseReservedInstanceOffering -> Maybe Natural
instanceCount :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the Reserved Instance offering to purchase.
    PurchaseReservedInstanceOffering -> Text
reservedInstanceOfferingId :: Prelude.Text,
    -- | A customer-specified identifier to track this reservation.
    PurchaseReservedInstanceOffering -> Text
reservationName :: Prelude.Text
  }
  deriving (PurchaseReservedInstanceOffering
-> PurchaseReservedInstanceOffering -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedInstanceOffering
-> PurchaseReservedInstanceOffering -> Bool
$c/= :: PurchaseReservedInstanceOffering
-> PurchaseReservedInstanceOffering -> Bool
== :: PurchaseReservedInstanceOffering
-> PurchaseReservedInstanceOffering -> Bool
$c== :: PurchaseReservedInstanceOffering
-> PurchaseReservedInstanceOffering -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedInstanceOffering]
ReadPrec PurchaseReservedInstanceOffering
Int -> ReadS PurchaseReservedInstanceOffering
ReadS [PurchaseReservedInstanceOffering]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedInstanceOffering]
$creadListPrec :: ReadPrec [PurchaseReservedInstanceOffering]
readPrec :: ReadPrec PurchaseReservedInstanceOffering
$creadPrec :: ReadPrec PurchaseReservedInstanceOffering
readList :: ReadS [PurchaseReservedInstanceOffering]
$creadList :: ReadS [PurchaseReservedInstanceOffering]
readsPrec :: Int -> ReadS PurchaseReservedInstanceOffering
$creadsPrec :: Int -> ReadS PurchaseReservedInstanceOffering
Prelude.Read, Int -> PurchaseReservedInstanceOffering -> ShowS
[PurchaseReservedInstanceOffering] -> ShowS
PurchaseReservedInstanceOffering -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedInstanceOffering] -> ShowS
$cshowList :: [PurchaseReservedInstanceOffering] -> ShowS
show :: PurchaseReservedInstanceOffering -> String
$cshow :: PurchaseReservedInstanceOffering -> String
showsPrec :: Int -> PurchaseReservedInstanceOffering -> ShowS
$cshowsPrec :: Int -> PurchaseReservedInstanceOffering -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedInstanceOffering x
-> PurchaseReservedInstanceOffering
forall x.
PurchaseReservedInstanceOffering
-> Rep PurchaseReservedInstanceOffering x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedInstanceOffering x
-> PurchaseReservedInstanceOffering
$cfrom :: forall x.
PurchaseReservedInstanceOffering
-> Rep PurchaseReservedInstanceOffering x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedInstanceOffering' 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', 'purchaseReservedInstanceOffering_instanceCount' - The number of OpenSearch instances to reserve.
--
-- 'reservedInstanceOfferingId', 'purchaseReservedInstanceOffering_reservedInstanceOfferingId' - The ID of the Reserved Instance offering to purchase.
--
-- 'reservationName', 'purchaseReservedInstanceOffering_reservationName' - A customer-specified identifier to track this reservation.
newPurchaseReservedInstanceOffering ::
  -- | 'reservedInstanceOfferingId'
  Prelude.Text ->
  -- | 'reservationName'
  Prelude.Text ->
  PurchaseReservedInstanceOffering
newPurchaseReservedInstanceOffering :: Text -> Text -> PurchaseReservedInstanceOffering
newPurchaseReservedInstanceOffering
  Text
pReservedInstanceOfferingId_
  Text
pReservationName_ =
    PurchaseReservedInstanceOffering'
      { $sel:instanceCount:PurchaseReservedInstanceOffering' :: Maybe Natural
instanceCount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstanceOfferingId:PurchaseReservedInstanceOffering' :: Text
reservedInstanceOfferingId =
          Text
pReservedInstanceOfferingId_,
        $sel:reservationName:PurchaseReservedInstanceOffering' :: Text
reservationName = Text
pReservationName_
      }

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

-- | The ID of the Reserved Instance offering to purchase.
purchaseReservedInstanceOffering_reservedInstanceOfferingId :: Lens.Lens' PurchaseReservedInstanceOffering Prelude.Text
purchaseReservedInstanceOffering_reservedInstanceOfferingId :: Lens' PurchaseReservedInstanceOffering Text
purchaseReservedInstanceOffering_reservedInstanceOfferingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedInstanceOffering' {Text
reservedInstanceOfferingId :: Text
$sel:reservedInstanceOfferingId:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> Text
reservedInstanceOfferingId} -> Text
reservedInstanceOfferingId) (\s :: PurchaseReservedInstanceOffering
s@PurchaseReservedInstanceOffering' {} Text
a -> PurchaseReservedInstanceOffering
s {$sel:reservedInstanceOfferingId:PurchaseReservedInstanceOffering' :: Text
reservedInstanceOfferingId = Text
a} :: PurchaseReservedInstanceOffering)

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

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

instance
  Prelude.NFData
    PurchaseReservedInstanceOffering
  where
  rnf :: PurchaseReservedInstanceOffering -> ()
rnf PurchaseReservedInstanceOffering' {Maybe Natural
Text
reservationName :: Text
reservedInstanceOfferingId :: Text
instanceCount :: Maybe Natural
$sel:reservationName:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> Text
$sel:reservedInstanceOfferingId:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> Text
$sel:instanceCount:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> 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
reservedInstanceOfferingId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
reservationName

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

instance Data.ToJSON PurchaseReservedInstanceOffering where
  toJSON :: PurchaseReservedInstanceOffering -> Value
toJSON PurchaseReservedInstanceOffering' {Maybe Natural
Text
reservationName :: Text
reservedInstanceOfferingId :: Text
instanceCount :: Maybe Natural
$sel:reservationName:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> Text
$sel:reservedInstanceOfferingId:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> Text
$sel:instanceCount:PurchaseReservedInstanceOffering' :: PurchaseReservedInstanceOffering -> 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
"ReservedInstanceOfferingId"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
reservedInstanceOfferingId
              ),
            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 PurchaseReservedInstanceOffering where
  toPath :: PurchaseReservedInstanceOffering -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const
      ByteString
"/2021-01-01/opensearch/purchaseReservedInstanceOffering"

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

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

-- |
-- Create a value of 'PurchaseReservedInstanceOfferingResponse' 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', 'purchaseReservedInstanceOfferingResponse_reservationName' - The customer-specified identifier used to track this reservation.
--
-- 'reservedInstanceId', 'purchaseReservedInstanceOfferingResponse_reservedInstanceId' - The ID of the Reserved Instance offering that was purchased.
--
-- 'httpStatus', 'purchaseReservedInstanceOfferingResponse_httpStatus' - The response's http status code.
newPurchaseReservedInstanceOfferingResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  PurchaseReservedInstanceOfferingResponse
newPurchaseReservedInstanceOfferingResponse :: Int -> PurchaseReservedInstanceOfferingResponse
newPurchaseReservedInstanceOfferingResponse
  Int
pHttpStatus_ =
    PurchaseReservedInstanceOfferingResponse'
      { $sel:reservationName:PurchaseReservedInstanceOfferingResponse' :: Maybe Text
reservationName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstanceId:PurchaseReservedInstanceOfferingResponse' :: Maybe Text
reservedInstanceId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:PurchaseReservedInstanceOfferingResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

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

-- | The ID of the Reserved Instance offering that was purchased.
purchaseReservedInstanceOfferingResponse_reservedInstanceId :: Lens.Lens' PurchaseReservedInstanceOfferingResponse (Prelude.Maybe Prelude.Text)
purchaseReservedInstanceOfferingResponse_reservedInstanceId :: Lens' PurchaseReservedInstanceOfferingResponse (Maybe Text)
purchaseReservedInstanceOfferingResponse_reservedInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedInstanceOfferingResponse' {Maybe Text
reservedInstanceId :: Maybe Text
$sel:reservedInstanceId:PurchaseReservedInstanceOfferingResponse' :: PurchaseReservedInstanceOfferingResponse -> Maybe Text
reservedInstanceId} -> Maybe Text
reservedInstanceId) (\s :: PurchaseReservedInstanceOfferingResponse
s@PurchaseReservedInstanceOfferingResponse' {} Maybe Text
a -> PurchaseReservedInstanceOfferingResponse
s {$sel:reservedInstanceId:PurchaseReservedInstanceOfferingResponse' :: Maybe Text
reservedInstanceId = Maybe Text
a} :: PurchaseReservedInstanceOfferingResponse)

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

instance
  Prelude.NFData
    PurchaseReservedInstanceOfferingResponse
  where
  rnf :: PurchaseReservedInstanceOfferingResponse -> ()
rnf PurchaseReservedInstanceOfferingResponse' {Int
Maybe Text
httpStatus :: Int
reservedInstanceId :: Maybe Text
reservationName :: Maybe Text
$sel:httpStatus:PurchaseReservedInstanceOfferingResponse' :: PurchaseReservedInstanceOfferingResponse -> Int
$sel:reservedInstanceId:PurchaseReservedInstanceOfferingResponse' :: PurchaseReservedInstanceOfferingResponse -> Maybe Text
$sel:reservationName:PurchaseReservedInstanceOfferingResponse' :: PurchaseReservedInstanceOfferingResponse -> 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
reservedInstanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus