{-# 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.Redshift.DescribeReservedNodeExchangeStatus
-- 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 exchange status details and associated metadata for a
-- reserved-node exchange. Statuses include such values as in progress and
-- requested.
--
-- This operation returns paginated results.
module Amazonka.Redshift.DescribeReservedNodeExchangeStatus
  ( -- * Creating a Request
    DescribeReservedNodeExchangeStatus (..),
    newDescribeReservedNodeExchangeStatus,

    -- * Request Lenses
    describeReservedNodeExchangeStatus_marker,
    describeReservedNodeExchangeStatus_maxRecords,
    describeReservedNodeExchangeStatus_reservedNodeExchangeRequestId,
    describeReservedNodeExchangeStatus_reservedNodeId,

    -- * Destructuring the Response
    DescribeReservedNodeExchangeStatusResponse (..),
    newDescribeReservedNodeExchangeStatusResponse,

    -- * Response Lenses
    describeReservedNodeExchangeStatusResponse_marker,
    describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails,
    describeReservedNodeExchangeStatusResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeReservedNodeExchangeStatus' smart constructor.
data DescribeReservedNodeExchangeStatus = DescribeReservedNodeExchangeStatus'
  { -- | An optional pagination token provided by a previous
    -- @DescribeReservedNodeExchangeStatus@ request. If this parameter is
    -- specified, the response includes only records beyond the marker, up to
    -- the value specified by the @MaxRecords@ parameter. You can retrieve the
    -- next set of response records by providing the returned marker value in
    -- the @Marker@ parameter and retrying the request.
    DescribeReservedNodeExchangeStatus -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of response records to return in each call. If the
    -- number of remaining response records exceeds the specified @MaxRecords@
    -- value, a value is returned in a @Marker@ field of the response. You can
    -- retrieve the next set of records by retrying the command with the
    -- returned marker value.
    DescribeReservedNodeExchangeStatus -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | The identifier of the reserved-node exchange request.
    DescribeReservedNodeExchangeStatus -> Maybe Text
reservedNodeExchangeRequestId :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the source reserved node in a reserved-node exchange
    -- request.
    DescribeReservedNodeExchangeStatus -> Maybe Text
reservedNodeId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeReservedNodeExchangeStatus
-> DescribeReservedNodeExchangeStatus -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedNodeExchangeStatus
-> DescribeReservedNodeExchangeStatus -> Bool
$c/= :: DescribeReservedNodeExchangeStatus
-> DescribeReservedNodeExchangeStatus -> Bool
== :: DescribeReservedNodeExchangeStatus
-> DescribeReservedNodeExchangeStatus -> Bool
$c== :: DescribeReservedNodeExchangeStatus
-> DescribeReservedNodeExchangeStatus -> Bool
Prelude.Eq, ReadPrec [DescribeReservedNodeExchangeStatus]
ReadPrec DescribeReservedNodeExchangeStatus
Int -> ReadS DescribeReservedNodeExchangeStatus
ReadS [DescribeReservedNodeExchangeStatus]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedNodeExchangeStatus]
$creadListPrec :: ReadPrec [DescribeReservedNodeExchangeStatus]
readPrec :: ReadPrec DescribeReservedNodeExchangeStatus
$creadPrec :: ReadPrec DescribeReservedNodeExchangeStatus
readList :: ReadS [DescribeReservedNodeExchangeStatus]
$creadList :: ReadS [DescribeReservedNodeExchangeStatus]
readsPrec :: Int -> ReadS DescribeReservedNodeExchangeStatus
$creadsPrec :: Int -> ReadS DescribeReservedNodeExchangeStatus
Prelude.Read, Int -> DescribeReservedNodeExchangeStatus -> ShowS
[DescribeReservedNodeExchangeStatus] -> ShowS
DescribeReservedNodeExchangeStatus -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedNodeExchangeStatus] -> ShowS
$cshowList :: [DescribeReservedNodeExchangeStatus] -> ShowS
show :: DescribeReservedNodeExchangeStatus -> String
$cshow :: DescribeReservedNodeExchangeStatus -> String
showsPrec :: Int -> DescribeReservedNodeExchangeStatus -> ShowS
$cshowsPrec :: Int -> DescribeReservedNodeExchangeStatus -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedNodeExchangeStatus x
-> DescribeReservedNodeExchangeStatus
forall x.
DescribeReservedNodeExchangeStatus
-> Rep DescribeReservedNodeExchangeStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedNodeExchangeStatus x
-> DescribeReservedNodeExchangeStatus
$cfrom :: forall x.
DescribeReservedNodeExchangeStatus
-> Rep DescribeReservedNodeExchangeStatus x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedNodeExchangeStatus' 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:
--
-- 'marker', 'describeReservedNodeExchangeStatus_marker' - An optional pagination token provided by a previous
-- @DescribeReservedNodeExchangeStatus@ request. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by the @MaxRecords@ parameter. You can retrieve the
-- next set of response records by providing the returned marker value in
-- the @Marker@ parameter and retrying the request.
--
-- 'maxRecords', 'describeReservedNodeExchangeStatus_maxRecords' - The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @Marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
--
-- 'reservedNodeExchangeRequestId', 'describeReservedNodeExchangeStatus_reservedNodeExchangeRequestId' - The identifier of the reserved-node exchange request.
--
-- 'reservedNodeId', 'describeReservedNodeExchangeStatus_reservedNodeId' - The identifier of the source reserved node in a reserved-node exchange
-- request.
newDescribeReservedNodeExchangeStatus ::
  DescribeReservedNodeExchangeStatus
newDescribeReservedNodeExchangeStatus :: DescribeReservedNodeExchangeStatus
newDescribeReservedNodeExchangeStatus =
  DescribeReservedNodeExchangeStatus'
    { $sel:marker:DescribeReservedNodeExchangeStatus' :: Maybe Text
marker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeReservedNodeExchangeStatus' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: Maybe Text
reservedNodeExchangeRequestId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: Maybe Text
reservedNodeId = forall a. Maybe a
Prelude.Nothing
    }

-- | An optional pagination token provided by a previous
-- @DescribeReservedNodeExchangeStatus@ request. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by the @MaxRecords@ parameter. You can retrieve the
-- next set of response records by providing the returned marker value in
-- the @Marker@ parameter and retrying the request.
describeReservedNodeExchangeStatus_marker :: Lens.Lens' DescribeReservedNodeExchangeStatus (Prelude.Maybe Prelude.Text)
describeReservedNodeExchangeStatus_marker :: Lens' DescribeReservedNodeExchangeStatus (Maybe Text)
describeReservedNodeExchangeStatus_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatus' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeReservedNodeExchangeStatus
s@DescribeReservedNodeExchangeStatus' {} Maybe Text
a -> DescribeReservedNodeExchangeStatus
s {$sel:marker:DescribeReservedNodeExchangeStatus' :: Maybe Text
marker = Maybe Text
a} :: DescribeReservedNodeExchangeStatus)

-- | The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @Marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
describeReservedNodeExchangeStatus_maxRecords :: Lens.Lens' DescribeReservedNodeExchangeStatus (Prelude.Maybe Prelude.Int)
describeReservedNodeExchangeStatus_maxRecords :: Lens' DescribeReservedNodeExchangeStatus (Maybe Int)
describeReservedNodeExchangeStatus_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatus' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeReservedNodeExchangeStatus
s@DescribeReservedNodeExchangeStatus' {} Maybe Int
a -> DescribeReservedNodeExchangeStatus
s {$sel:maxRecords:DescribeReservedNodeExchangeStatus' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeReservedNodeExchangeStatus)

-- | The identifier of the reserved-node exchange request.
describeReservedNodeExchangeStatus_reservedNodeExchangeRequestId :: Lens.Lens' DescribeReservedNodeExchangeStatus (Prelude.Maybe Prelude.Text)
describeReservedNodeExchangeStatus_reservedNodeExchangeRequestId :: Lens' DescribeReservedNodeExchangeStatus (Maybe Text)
describeReservedNodeExchangeStatus_reservedNodeExchangeRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatus' {Maybe Text
reservedNodeExchangeRequestId :: Maybe Text
$sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
reservedNodeExchangeRequestId} -> Maybe Text
reservedNodeExchangeRequestId) (\s :: DescribeReservedNodeExchangeStatus
s@DescribeReservedNodeExchangeStatus' {} Maybe Text
a -> DescribeReservedNodeExchangeStatus
s {$sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: Maybe Text
reservedNodeExchangeRequestId = Maybe Text
a} :: DescribeReservedNodeExchangeStatus)

-- | The identifier of the source reserved node in a reserved-node exchange
-- request.
describeReservedNodeExchangeStatus_reservedNodeId :: Lens.Lens' DescribeReservedNodeExchangeStatus (Prelude.Maybe Prelude.Text)
describeReservedNodeExchangeStatus_reservedNodeId :: Lens' DescribeReservedNodeExchangeStatus (Maybe Text)
describeReservedNodeExchangeStatus_reservedNodeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatus' {Maybe Text
reservedNodeId :: Maybe Text
$sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
reservedNodeId} -> Maybe Text
reservedNodeId) (\s :: DescribeReservedNodeExchangeStatus
s@DescribeReservedNodeExchangeStatus' {} Maybe Text
a -> DescribeReservedNodeExchangeStatus
s {$sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: Maybe Text
reservedNodeId = Maybe Text
a} :: DescribeReservedNodeExchangeStatus)

instance
  Core.AWSPager
    DescribeReservedNodeExchangeStatus
  where
  page :: DescribeReservedNodeExchangeStatus
-> AWSResponse DescribeReservedNodeExchangeStatus
-> Maybe DescribeReservedNodeExchangeStatus
page DescribeReservedNodeExchangeStatus
rq AWSResponse DescribeReservedNodeExchangeStatus
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeReservedNodeExchangeStatus
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedNodeExchangeStatusResponse (Maybe Text)
describeReservedNodeExchangeStatusResponse_marker
            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 DescribeReservedNodeExchangeStatus
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeReservedNodeExchangeStatusResponse
  (Maybe [ReservedNodeExchangeStatus])
describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails
            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.$ DescribeReservedNodeExchangeStatus
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeReservedNodeExchangeStatus (Maybe Text)
describeReservedNodeExchangeStatus_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeReservedNodeExchangeStatus
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeReservedNodeExchangeStatusResponse (Maybe Text)
describeReservedNodeExchangeStatusResponse_marker
          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
    DescribeReservedNodeExchangeStatus
  where
  type
    AWSResponse DescribeReservedNodeExchangeStatus =
      DescribeReservedNodeExchangeStatusResponse
  request :: (Service -> Service)
-> DescribeReservedNodeExchangeStatus
-> Request DescribeReservedNodeExchangeStatus
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 DescribeReservedNodeExchangeStatus
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeReservedNodeExchangeStatus)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeReservedNodeExchangeStatusResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [ReservedNodeExchangeStatus]
-> Int
-> DescribeReservedNodeExchangeStatusResponse
DescribeReservedNodeExchangeStatusResponse'
            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
"Marker")
            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
"ReservedNodeExchangeStatusDetails"
                            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
"ReservedNodeExchangeStatus")
                        )
            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
    DescribeReservedNodeExchangeStatus
  where
  hashWithSalt :: Int -> DescribeReservedNodeExchangeStatus -> Int
hashWithSalt
    Int
_salt
    DescribeReservedNodeExchangeStatus' {Maybe Int
Maybe Text
reservedNodeId :: Maybe Text
reservedNodeExchangeRequestId :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
$sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:maxRecords:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Int
$sel:marker:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservedNodeExchangeRequestId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservedNodeId

instance
  Prelude.NFData
    DescribeReservedNodeExchangeStatus
  where
  rnf :: DescribeReservedNodeExchangeStatus -> ()
rnf DescribeReservedNodeExchangeStatus' {Maybe Int
Maybe Text
reservedNodeId :: Maybe Text
reservedNodeExchangeRequestId :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
$sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:maxRecords:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Int
$sel:marker:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservedNodeExchangeRequestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservedNodeId

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

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

instance
  Data.ToQuery
    DescribeReservedNodeExchangeStatus
  where
  toQuery :: DescribeReservedNodeExchangeStatus -> QueryString
toQuery DescribeReservedNodeExchangeStatus' {Maybe Int
Maybe Text
reservedNodeId :: Maybe Text
reservedNodeExchangeRequestId :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
$sel:reservedNodeId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:reservedNodeExchangeRequestId:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
$sel:maxRecords:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Int
$sel:marker:DescribeReservedNodeExchangeStatus' :: DescribeReservedNodeExchangeStatus -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeReservedNodeExchangeStatus" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2012-12-01" :: Prelude.ByteString),
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxRecords,
        ByteString
"ReservedNodeExchangeRequestId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
reservedNodeExchangeRequestId,
        ByteString
"ReservedNodeId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
reservedNodeId
      ]

-- | /See:/ 'newDescribeReservedNodeExchangeStatusResponse' smart constructor.
data DescribeReservedNodeExchangeStatusResponse = DescribeReservedNodeExchangeStatusResponse'
  { -- | A pagination token provided by a previous
    -- @DescribeReservedNodeExchangeStatus@ request.
    DescribeReservedNodeExchangeStatusResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The details of the reserved-node exchange request, including the status,
    -- request time, source reserved-node identifier, and additional details.
    DescribeReservedNodeExchangeStatusResponse
-> Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails :: Prelude.Maybe [ReservedNodeExchangeStatus],
    -- | The response's http status code.
    DescribeReservedNodeExchangeStatusResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeReservedNodeExchangeStatusResponse
-> DescribeReservedNodeExchangeStatusResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeReservedNodeExchangeStatusResponse
-> DescribeReservedNodeExchangeStatusResponse -> Bool
$c/= :: DescribeReservedNodeExchangeStatusResponse
-> DescribeReservedNodeExchangeStatusResponse -> Bool
== :: DescribeReservedNodeExchangeStatusResponse
-> DescribeReservedNodeExchangeStatusResponse -> Bool
$c== :: DescribeReservedNodeExchangeStatusResponse
-> DescribeReservedNodeExchangeStatusResponse -> Bool
Prelude.Eq, ReadPrec [DescribeReservedNodeExchangeStatusResponse]
ReadPrec DescribeReservedNodeExchangeStatusResponse
Int -> ReadS DescribeReservedNodeExchangeStatusResponse
ReadS [DescribeReservedNodeExchangeStatusResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeReservedNodeExchangeStatusResponse]
$creadListPrec :: ReadPrec [DescribeReservedNodeExchangeStatusResponse]
readPrec :: ReadPrec DescribeReservedNodeExchangeStatusResponse
$creadPrec :: ReadPrec DescribeReservedNodeExchangeStatusResponse
readList :: ReadS [DescribeReservedNodeExchangeStatusResponse]
$creadList :: ReadS [DescribeReservedNodeExchangeStatusResponse]
readsPrec :: Int -> ReadS DescribeReservedNodeExchangeStatusResponse
$creadsPrec :: Int -> ReadS DescribeReservedNodeExchangeStatusResponse
Prelude.Read, Int -> DescribeReservedNodeExchangeStatusResponse -> ShowS
[DescribeReservedNodeExchangeStatusResponse] -> ShowS
DescribeReservedNodeExchangeStatusResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeReservedNodeExchangeStatusResponse] -> ShowS
$cshowList :: [DescribeReservedNodeExchangeStatusResponse] -> ShowS
show :: DescribeReservedNodeExchangeStatusResponse -> String
$cshow :: DescribeReservedNodeExchangeStatusResponse -> String
showsPrec :: Int -> DescribeReservedNodeExchangeStatusResponse -> ShowS
$cshowsPrec :: Int -> DescribeReservedNodeExchangeStatusResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeReservedNodeExchangeStatusResponse x
-> DescribeReservedNodeExchangeStatusResponse
forall x.
DescribeReservedNodeExchangeStatusResponse
-> Rep DescribeReservedNodeExchangeStatusResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeReservedNodeExchangeStatusResponse x
-> DescribeReservedNodeExchangeStatusResponse
$cfrom :: forall x.
DescribeReservedNodeExchangeStatusResponse
-> Rep DescribeReservedNodeExchangeStatusResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeReservedNodeExchangeStatusResponse' 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:
--
-- 'marker', 'describeReservedNodeExchangeStatusResponse_marker' - A pagination token provided by a previous
-- @DescribeReservedNodeExchangeStatus@ request.
--
-- 'reservedNodeExchangeStatusDetails', 'describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails' - The details of the reserved-node exchange request, including the status,
-- request time, source reserved-node identifier, and additional details.
--
-- 'httpStatus', 'describeReservedNodeExchangeStatusResponse_httpStatus' - The response's http status code.
newDescribeReservedNodeExchangeStatusResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeReservedNodeExchangeStatusResponse
newDescribeReservedNodeExchangeStatusResponse :: Int -> DescribeReservedNodeExchangeStatusResponse
newDescribeReservedNodeExchangeStatusResponse
  Int
pHttpStatus_ =
    DescribeReservedNodeExchangeStatusResponse'
      { $sel:marker:DescribeReservedNodeExchangeStatusResponse' :: Maybe Text
marker =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedNodeExchangeStatusDetails:DescribeReservedNodeExchangeStatusResponse' :: Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeReservedNodeExchangeStatusResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | A pagination token provided by a previous
-- @DescribeReservedNodeExchangeStatus@ request.
describeReservedNodeExchangeStatusResponse_marker :: Lens.Lens' DescribeReservedNodeExchangeStatusResponse (Prelude.Maybe Prelude.Text)
describeReservedNodeExchangeStatusResponse_marker :: Lens' DescribeReservedNodeExchangeStatusResponse (Maybe Text)
describeReservedNodeExchangeStatusResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatusResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeReservedNodeExchangeStatusResponse
s@DescribeReservedNodeExchangeStatusResponse' {} Maybe Text
a -> DescribeReservedNodeExchangeStatusResponse
s {$sel:marker:DescribeReservedNodeExchangeStatusResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeReservedNodeExchangeStatusResponse)

-- | The details of the reserved-node exchange request, including the status,
-- request time, source reserved-node identifier, and additional details.
describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails :: Lens.Lens' DescribeReservedNodeExchangeStatusResponse (Prelude.Maybe [ReservedNodeExchangeStatus])
describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails :: Lens'
  DescribeReservedNodeExchangeStatusResponse
  (Maybe [ReservedNodeExchangeStatus])
describeReservedNodeExchangeStatusResponse_reservedNodeExchangeStatusDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatusResponse' {Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails :: Maybe [ReservedNodeExchangeStatus]
$sel:reservedNodeExchangeStatusDetails:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse
-> Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails} -> Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails) (\s :: DescribeReservedNodeExchangeStatusResponse
s@DescribeReservedNodeExchangeStatusResponse' {} Maybe [ReservedNodeExchangeStatus]
a -> DescribeReservedNodeExchangeStatusResponse
s {$sel:reservedNodeExchangeStatusDetails:DescribeReservedNodeExchangeStatusResponse' :: Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails = Maybe [ReservedNodeExchangeStatus]
a} :: DescribeReservedNodeExchangeStatusResponse) 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.
describeReservedNodeExchangeStatusResponse_httpStatus :: Lens.Lens' DescribeReservedNodeExchangeStatusResponse Prelude.Int
describeReservedNodeExchangeStatusResponse_httpStatus :: Lens' DescribeReservedNodeExchangeStatusResponse Int
describeReservedNodeExchangeStatusResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeReservedNodeExchangeStatusResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeReservedNodeExchangeStatusResponse
s@DescribeReservedNodeExchangeStatusResponse' {} Int
a -> DescribeReservedNodeExchangeStatusResponse
s {$sel:httpStatus:DescribeReservedNodeExchangeStatusResponse' :: Int
httpStatus = Int
a} :: DescribeReservedNodeExchangeStatusResponse)

instance
  Prelude.NFData
    DescribeReservedNodeExchangeStatusResponse
  where
  rnf :: DescribeReservedNodeExchangeStatusResponse -> ()
rnf DescribeReservedNodeExchangeStatusResponse' {Int
Maybe [ReservedNodeExchangeStatus]
Maybe Text
httpStatus :: Int
reservedNodeExchangeStatusDetails :: Maybe [ReservedNodeExchangeStatus]
marker :: Maybe Text
$sel:httpStatus:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse -> Int
$sel:reservedNodeExchangeStatusDetails:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse
-> Maybe [ReservedNodeExchangeStatus]
$sel:marker:DescribeReservedNodeExchangeStatusResponse' :: DescribeReservedNodeExchangeStatusResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservedNodeExchangeStatus]
reservedNodeExchangeStatusDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus