{-# 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.EC2.DescribeReservedInstancesModifications
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the modifications made to your Reserved Instances. If no
-- parameter is specified, information about all your Reserved Instances
-- modification requests is returned. If a modification ID is specified,
-- only information about the specific modification is returned.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html Modifying Reserved Instances>
-- in the /Amazon EC2 User Guide/.
--
-- This operation returns paginated results.
module Amazonka.EC2.DescribeReservedInstancesModifications
  ( -- * Creating a Request
    DescribeReservedInstancesModifications (..),
    newDescribeReservedInstancesModifications,

    -- * Request Lenses
    describeReservedInstancesModifications_filters,
    describeReservedInstancesModifications_nextToken,
    describeReservedInstancesModifications_reservedInstancesModificationIds,

    -- * Destructuring the Response
    DescribeReservedInstancesModificationsResponse (..),
    newDescribeReservedInstancesModificationsResponse,

    -- * Response Lenses
    describeReservedInstancesModificationsResponse_nextToken,
    describeReservedInstancesModificationsResponse_reservedInstancesModifications,
    describeReservedInstancesModificationsResponse_httpStatus,
  )
where

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

-- | Contains the parameters for DescribeReservedInstancesModifications.
--
-- /See:/ 'newDescribeReservedInstancesModifications' smart constructor.
data DescribeReservedInstancesModifications = DescribeReservedInstancesModifications'
  { -- | One or more filters.
    --
    -- -   @client-token@ - The idempotency token for the modification request.
    --
    -- -   @create-date@ - The time when the modification request was created.
    --
    -- -   @effective-date@ - The time when the modification becomes effective.
    --
    -- -   @modification-result.reserved-instances-id@ - The ID for the
    --     Reserved Instances created as part of the modification request. This
    --     ID is only available when the status of the modification is
    --     @fulfilled@.
    --
    -- -   @modification-result.target-configuration.availability-zone@ - The
    --     Availability Zone for the new Reserved Instances.
    --
    -- -   @modification-result.target-configuration.instance-count @ - The
    --     number of new Reserved Instances.
    --
    -- -   @modification-result.target-configuration.instance-type@ - The
    --     instance type of the new Reserved Instances.
    --
    -- -   @modification-result.target-configuration.platform@ - The network
    --     platform of the new Reserved Instances (@EC2-Classic@ | @EC2-VPC@).
    --
    -- -   @reserved-instances-id@ - The ID of the Reserved Instances modified.
    --
    -- -   @reserved-instances-modification-id@ - The ID of the modification
    --     request.
    --
    -- -   @status@ - The status of the Reserved Instances modification request
    --     (@processing@ | @fulfilled@ | @failed@).
    --
    -- -   @status-message@ - The reason for the status.
    --
    -- -   @update-date@ - The time when the modification request was last
    --     updated.
    DescribeReservedInstancesModifications -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | The token to retrieve the next page of results.
    DescribeReservedInstancesModifications -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | IDs for the submitted modification request.
    DescribeReservedInstancesModifications -> Maybe [Text]
reservedInstancesModificationIds :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeReservedInstancesModifications
-> DescribeReservedInstancesModifications -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedInstancesModifications
-> DescribeReservedInstancesModifications -> Bool
$c/= :: DescribeReservedInstancesModifications
-> DescribeReservedInstancesModifications -> Bool
== :: DescribeReservedInstancesModifications
-> DescribeReservedInstancesModifications -> Bool
$c== :: DescribeReservedInstancesModifications
-> DescribeReservedInstancesModifications -> Bool
Prelude.Eq, ReadPrec [DescribeReservedInstancesModifications]
ReadPrec DescribeReservedInstancesModifications
Int -> ReadS DescribeReservedInstancesModifications
ReadS [DescribeReservedInstancesModifications]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedInstancesModifications]
$creadListPrec :: ReadPrec [DescribeReservedInstancesModifications]
readPrec :: ReadPrec DescribeReservedInstancesModifications
$creadPrec :: ReadPrec DescribeReservedInstancesModifications
readList :: ReadS [DescribeReservedInstancesModifications]
$creadList :: ReadS [DescribeReservedInstancesModifications]
readsPrec :: Int -> ReadS DescribeReservedInstancesModifications
$creadsPrec :: Int -> ReadS DescribeReservedInstancesModifications
Prelude.Read, Int -> DescribeReservedInstancesModifications -> ShowS
[DescribeReservedInstancesModifications] -> ShowS
DescribeReservedInstancesModifications -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedInstancesModifications] -> ShowS
$cshowList :: [DescribeReservedInstancesModifications] -> ShowS
show :: DescribeReservedInstancesModifications -> String
$cshow :: DescribeReservedInstancesModifications -> String
showsPrec :: Int -> DescribeReservedInstancesModifications -> ShowS
$cshowsPrec :: Int -> DescribeReservedInstancesModifications -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedInstancesModifications x
-> DescribeReservedInstancesModifications
forall x.
DescribeReservedInstancesModifications
-> Rep DescribeReservedInstancesModifications x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedInstancesModifications x
-> DescribeReservedInstancesModifications
$cfrom :: forall x.
DescribeReservedInstancesModifications
-> Rep DescribeReservedInstancesModifications x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedInstancesModifications' 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', 'describeReservedInstancesModifications_filters' - One or more filters.
--
-- -   @client-token@ - The idempotency token for the modification request.
--
-- -   @create-date@ - The time when the modification request was created.
--
-- -   @effective-date@ - The time when the modification becomes effective.
--
-- -   @modification-result.reserved-instances-id@ - The ID for the
--     Reserved Instances created as part of the modification request. This
--     ID is only available when the status of the modification is
--     @fulfilled@.
--
-- -   @modification-result.target-configuration.availability-zone@ - The
--     Availability Zone for the new Reserved Instances.
--
-- -   @modification-result.target-configuration.instance-count @ - The
--     number of new Reserved Instances.
--
-- -   @modification-result.target-configuration.instance-type@ - The
--     instance type of the new Reserved Instances.
--
-- -   @modification-result.target-configuration.platform@ - The network
--     platform of the new Reserved Instances (@EC2-Classic@ | @EC2-VPC@).
--
-- -   @reserved-instances-id@ - The ID of the Reserved Instances modified.
--
-- -   @reserved-instances-modification-id@ - The ID of the modification
--     request.
--
-- -   @status@ - The status of the Reserved Instances modification request
--     (@processing@ | @fulfilled@ | @failed@).
--
-- -   @status-message@ - The reason for the status.
--
-- -   @update-date@ - The time when the modification request was last
--     updated.
--
-- 'nextToken', 'describeReservedInstancesModifications_nextToken' - The token to retrieve the next page of results.
--
-- 'reservedInstancesModificationIds', 'describeReservedInstancesModifications_reservedInstancesModificationIds' - IDs for the submitted modification request.
newDescribeReservedInstancesModifications ::
  DescribeReservedInstancesModifications
newDescribeReservedInstancesModifications :: DescribeReservedInstancesModifications
newDescribeReservedInstancesModifications =
  DescribeReservedInstancesModifications'
    { $sel:filters:DescribeReservedInstancesModifications' :: Maybe [Filter]
filters =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeReservedInstancesModifications' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: Maybe [Text]
reservedInstancesModificationIds =
        forall a. Maybe a
Prelude.Nothing
    }

-- | One or more filters.
--
-- -   @client-token@ - The idempotency token for the modification request.
--
-- -   @create-date@ - The time when the modification request was created.
--
-- -   @effective-date@ - The time when the modification becomes effective.
--
-- -   @modification-result.reserved-instances-id@ - The ID for the
--     Reserved Instances created as part of the modification request. This
--     ID is only available when the status of the modification is
--     @fulfilled@.
--
-- -   @modification-result.target-configuration.availability-zone@ - The
--     Availability Zone for the new Reserved Instances.
--
-- -   @modification-result.target-configuration.instance-count @ - The
--     number of new Reserved Instances.
--
-- -   @modification-result.target-configuration.instance-type@ - The
--     instance type of the new Reserved Instances.
--
-- -   @modification-result.target-configuration.platform@ - The network
--     platform of the new Reserved Instances (@EC2-Classic@ | @EC2-VPC@).
--
-- -   @reserved-instances-id@ - The ID of the Reserved Instances modified.
--
-- -   @reserved-instances-modification-id@ - The ID of the modification
--     request.
--
-- -   @status@ - The status of the Reserved Instances modification request
--     (@processing@ | @fulfilled@ | @failed@).
--
-- -   @status-message@ - The reason for the status.
--
-- -   @update-date@ - The time when the modification request was last
--     updated.
describeReservedInstancesModifications_filters :: Lens.Lens' DescribeReservedInstancesModifications (Prelude.Maybe [Filter])
describeReservedInstancesModifications_filters :: Lens' DescribeReservedInstancesModifications (Maybe [Filter])
describeReservedInstancesModifications_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModifications' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeReservedInstancesModifications
s@DescribeReservedInstancesModifications' {} Maybe [Filter]
a -> DescribeReservedInstancesModifications
s {$sel:filters:DescribeReservedInstancesModifications' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeReservedInstancesModifications) 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 token to retrieve the next page of results.
describeReservedInstancesModifications_nextToken :: Lens.Lens' DescribeReservedInstancesModifications (Prelude.Maybe Prelude.Text)
describeReservedInstancesModifications_nextToken :: Lens' DescribeReservedInstancesModifications (Maybe Text)
describeReservedInstancesModifications_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModifications' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedInstancesModifications
s@DescribeReservedInstancesModifications' {} Maybe Text
a -> DescribeReservedInstancesModifications
s {$sel:nextToken:DescribeReservedInstancesModifications' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedInstancesModifications)

-- | IDs for the submitted modification request.
describeReservedInstancesModifications_reservedInstancesModificationIds :: Lens.Lens' DescribeReservedInstancesModifications (Prelude.Maybe [Prelude.Text])
describeReservedInstancesModifications_reservedInstancesModificationIds :: Lens' DescribeReservedInstancesModifications (Maybe [Text])
describeReservedInstancesModifications_reservedInstancesModificationIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModifications' {Maybe [Text]
reservedInstancesModificationIds :: Maybe [Text]
$sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Text]
reservedInstancesModificationIds} -> Maybe [Text]
reservedInstancesModificationIds) (\s :: DescribeReservedInstancesModifications
s@DescribeReservedInstancesModifications' {} Maybe [Text]
a -> DescribeReservedInstancesModifications
s {$sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: Maybe [Text]
reservedInstancesModificationIds = Maybe [Text]
a} :: DescribeReservedInstancesModifications) 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

instance
  Core.AWSPager
    DescribeReservedInstancesModifications
  where
  page :: DescribeReservedInstancesModifications
-> AWSResponse DescribeReservedInstancesModifications
-> Maybe DescribeReservedInstancesModifications
page DescribeReservedInstancesModifications
rq AWSResponse DescribeReservedInstancesModifications
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeReservedInstancesModifications
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedInstancesModificationsResponse (Maybe Text)
describeReservedInstancesModificationsResponse_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 DescribeReservedInstancesModifications
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeReservedInstancesModificationsResponse
  (Maybe [ReservedInstancesModification])
describeReservedInstancesModificationsResponse_reservedInstancesModifications
            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.$ DescribeReservedInstancesModifications
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeReservedInstancesModifications (Maybe Text)
describeReservedInstancesModifications_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeReservedInstancesModifications
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedInstancesModificationsResponse (Maybe Text)
describeReservedInstancesModificationsResponse_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
    DescribeReservedInstancesModifications
  where
  type
    AWSResponse
      DescribeReservedInstancesModifications =
      DescribeReservedInstancesModificationsResponse
  request :: (Service -> Service)
-> DescribeReservedInstancesModifications
-> Request DescribeReservedInstancesModifications
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeReservedInstancesModifications
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribeReservedInstancesModifications)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [ReservedInstancesModification]
-> Int
-> DescribeReservedInstancesModificationsResponse
DescribeReservedInstancesModificationsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"nextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"reservedInstancesModificationsSet"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                        )
            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
    DescribeReservedInstancesModifications
  where
  hashWithSalt :: Int -> DescribeReservedInstancesModifications -> Int
hashWithSalt
    Int
_salt
    DescribeReservedInstancesModifications' {Maybe [Text]
Maybe [Filter]
Maybe Text
reservedInstancesModificationIds :: Maybe [Text]
nextToken :: Maybe Text
filters :: Maybe [Filter]
$sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Text]
$sel:nextToken:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe Text
$sel:filters:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Filter]
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
reservedInstancesModificationIds

instance
  Prelude.NFData
    DescribeReservedInstancesModifications
  where
  rnf :: DescribeReservedInstancesModifications -> ()
rnf DescribeReservedInstancesModifications' {Maybe [Text]
Maybe [Filter]
Maybe Text
reservedInstancesModificationIds :: Maybe [Text]
nextToken :: Maybe Text
filters :: Maybe [Filter]
$sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Text]
$sel:nextToken:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe Text
$sel:filters:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Filter]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Filter]
filters
      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]
reservedInstancesModificationIds

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

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

instance
  Data.ToQuery
    DescribeReservedInstancesModifications
  where
  toQuery :: DescribeReservedInstancesModifications -> QueryString
toQuery DescribeReservedInstancesModifications' {Maybe [Text]
Maybe [Filter]
Maybe Text
reservedInstancesModificationIds :: Maybe [Text]
nextToken :: Maybe Text
filters :: Maybe [Filter]
$sel:reservedInstancesModificationIds:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Text]
$sel:nextToken:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe Text
$sel:filters:DescribeReservedInstancesModifications' :: DescribeReservedInstancesModifications -> Maybe [Filter]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeReservedInstancesModifications" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Filter" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ReservedInstancesModificationId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
reservedInstancesModificationIds
          )
      ]

-- | Contains the output of DescribeReservedInstancesModifications.
--
-- /See:/ 'newDescribeReservedInstancesModificationsResponse' smart constructor.
data DescribeReservedInstancesModificationsResponse = DescribeReservedInstancesModificationsResponse'
  { -- | The token to use to retrieve the next page of results. This value is
    -- @null@ when there are no more results to return.
    DescribeReservedInstancesModificationsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The Reserved Instance modification information.
    DescribeReservedInstancesModificationsResponse
-> Maybe [ReservedInstancesModification]
reservedInstancesModifications :: Prelude.Maybe [ReservedInstancesModification],
    -- | The response's http status code.
    DescribeReservedInstancesModificationsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeReservedInstancesModificationsResponse
-> DescribeReservedInstancesModificationsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedInstancesModificationsResponse
-> DescribeReservedInstancesModificationsResponse -> Bool
$c/= :: DescribeReservedInstancesModificationsResponse
-> DescribeReservedInstancesModificationsResponse -> Bool
== :: DescribeReservedInstancesModificationsResponse
-> DescribeReservedInstancesModificationsResponse -> Bool
$c== :: DescribeReservedInstancesModificationsResponse
-> DescribeReservedInstancesModificationsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeReservedInstancesModificationsResponse]
ReadPrec DescribeReservedInstancesModificationsResponse
Int -> ReadS DescribeReservedInstancesModificationsResponse
ReadS [DescribeReservedInstancesModificationsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedInstancesModificationsResponse]
$creadListPrec :: ReadPrec [DescribeReservedInstancesModificationsResponse]
readPrec :: ReadPrec DescribeReservedInstancesModificationsResponse
$creadPrec :: ReadPrec DescribeReservedInstancesModificationsResponse
readList :: ReadS [DescribeReservedInstancesModificationsResponse]
$creadList :: ReadS [DescribeReservedInstancesModificationsResponse]
readsPrec :: Int -> ReadS DescribeReservedInstancesModificationsResponse
$creadsPrec :: Int -> ReadS DescribeReservedInstancesModificationsResponse
Prelude.Read, Int -> DescribeReservedInstancesModificationsResponse -> ShowS
[DescribeReservedInstancesModificationsResponse] -> ShowS
DescribeReservedInstancesModificationsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedInstancesModificationsResponse] -> ShowS
$cshowList :: [DescribeReservedInstancesModificationsResponse] -> ShowS
show :: DescribeReservedInstancesModificationsResponse -> String
$cshow :: DescribeReservedInstancesModificationsResponse -> String
showsPrec :: Int -> DescribeReservedInstancesModificationsResponse -> ShowS
$cshowsPrec :: Int -> DescribeReservedInstancesModificationsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedInstancesModificationsResponse x
-> DescribeReservedInstancesModificationsResponse
forall x.
DescribeReservedInstancesModificationsResponse
-> Rep DescribeReservedInstancesModificationsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedInstancesModificationsResponse x
-> DescribeReservedInstancesModificationsResponse
$cfrom :: forall x.
DescribeReservedInstancesModificationsResponse
-> Rep DescribeReservedInstancesModificationsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedInstancesModificationsResponse' 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', 'describeReservedInstancesModificationsResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
--
-- 'reservedInstancesModifications', 'describeReservedInstancesModificationsResponse_reservedInstancesModifications' - The Reserved Instance modification information.
--
-- 'httpStatus', 'describeReservedInstancesModificationsResponse_httpStatus' - The response's http status code.
newDescribeReservedInstancesModificationsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeReservedInstancesModificationsResponse
newDescribeReservedInstancesModificationsResponse :: Int -> DescribeReservedInstancesModificationsResponse
newDescribeReservedInstancesModificationsResponse
  Int
pHttpStatus_ =
    DescribeReservedInstancesModificationsResponse'
      { $sel:nextToken:DescribeReservedInstancesModificationsResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstancesModifications:DescribeReservedInstancesModificationsResponse' :: Maybe [ReservedInstancesModification]
reservedInstancesModifications =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeReservedInstancesModificationsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
describeReservedInstancesModificationsResponse_nextToken :: Lens.Lens' DescribeReservedInstancesModificationsResponse (Prelude.Maybe Prelude.Text)
describeReservedInstancesModificationsResponse_nextToken :: Lens' DescribeReservedInstancesModificationsResponse (Maybe Text)
describeReservedInstancesModificationsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModificationsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeReservedInstancesModificationsResponse' :: DescribeReservedInstancesModificationsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeReservedInstancesModificationsResponse
s@DescribeReservedInstancesModificationsResponse' {} Maybe Text
a -> DescribeReservedInstancesModificationsResponse
s {$sel:nextToken:DescribeReservedInstancesModificationsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeReservedInstancesModificationsResponse)

-- | The Reserved Instance modification information.
describeReservedInstancesModificationsResponse_reservedInstancesModifications :: Lens.Lens' DescribeReservedInstancesModificationsResponse (Prelude.Maybe [ReservedInstancesModification])
describeReservedInstancesModificationsResponse_reservedInstancesModifications :: Lens'
  DescribeReservedInstancesModificationsResponse
  (Maybe [ReservedInstancesModification])
describeReservedInstancesModificationsResponse_reservedInstancesModifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModificationsResponse' {Maybe [ReservedInstancesModification]
reservedInstancesModifications :: Maybe [ReservedInstancesModification]
$sel:reservedInstancesModifications:DescribeReservedInstancesModificationsResponse' :: DescribeReservedInstancesModificationsResponse
-> Maybe [ReservedInstancesModification]
reservedInstancesModifications} -> Maybe [ReservedInstancesModification]
reservedInstancesModifications) (\s :: DescribeReservedInstancesModificationsResponse
s@DescribeReservedInstancesModificationsResponse' {} Maybe [ReservedInstancesModification]
a -> DescribeReservedInstancesModificationsResponse
s {$sel:reservedInstancesModifications:DescribeReservedInstancesModificationsResponse' :: Maybe [ReservedInstancesModification]
reservedInstancesModifications = Maybe [ReservedInstancesModification]
a} :: DescribeReservedInstancesModificationsResponse) 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.
describeReservedInstancesModificationsResponse_httpStatus :: Lens.Lens' DescribeReservedInstancesModificationsResponse Prelude.Int
describeReservedInstancesModificationsResponse_httpStatus :: Lens' DescribeReservedInstancesModificationsResponse Int
describeReservedInstancesModificationsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedInstancesModificationsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeReservedInstancesModificationsResponse' :: DescribeReservedInstancesModificationsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeReservedInstancesModificationsResponse
s@DescribeReservedInstancesModificationsResponse' {} Int
a -> DescribeReservedInstancesModificationsResponse
s {$sel:httpStatus:DescribeReservedInstancesModificationsResponse' :: Int
httpStatus = Int
a} :: DescribeReservedInstancesModificationsResponse)

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