{-# 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.DocumentDB.DescribeOrderableDBInstanceOptions
-- 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 a list of orderable instance options for the specified engine.
--
-- This operation returns paginated results.
module Amazonka.DocumentDB.DescribeOrderableDBInstanceOptions
  ( -- * Creating a Request
    DescribeOrderableDBInstanceOptions (..),
    newDescribeOrderableDBInstanceOptions,

    -- * Request Lenses
    describeOrderableDBInstanceOptions_dbInstanceClass,
    describeOrderableDBInstanceOptions_engineVersion,
    describeOrderableDBInstanceOptions_filters,
    describeOrderableDBInstanceOptions_licenseModel,
    describeOrderableDBInstanceOptions_marker,
    describeOrderableDBInstanceOptions_maxRecords,
    describeOrderableDBInstanceOptions_vpc,
    describeOrderableDBInstanceOptions_engine,

    -- * Destructuring the Response
    DescribeOrderableDBInstanceOptionsResponse (..),
    newDescribeOrderableDBInstanceOptionsResponse,

    -- * Response Lenses
    describeOrderableDBInstanceOptionsResponse_marker,
    describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions,
    describeOrderableDBInstanceOptionsResponse_httpStatus,
  )
where

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

-- | Represents the input to DescribeOrderableDBInstanceOptions.
--
-- /See:/ 'newDescribeOrderableDBInstanceOptions' smart constructor.
data DescribeOrderableDBInstanceOptions = DescribeOrderableDBInstanceOptions'
  { -- | The instance class filter value. Specify this parameter to show only the
    -- available offerings that match the specified instance class.
    DescribeOrderableDBInstanceOptions -> Maybe Text
dbInstanceClass :: Prelude.Maybe Prelude.Text,
    -- | The engine version filter value. Specify this parameter to show only the
    -- available offerings that match the specified engine version.
    DescribeOrderableDBInstanceOptions -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | This parameter is not currently supported.
    DescribeOrderableDBInstanceOptions -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | The license model filter value. Specify this parameter to show only the
    -- available offerings that match the specified license model.
    DescribeOrderableDBInstanceOptions -> Maybe Text
licenseModel :: Prelude.Maybe Prelude.Text,
    -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeOrderableDBInstanceOptions -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of records to include in the response. If more
    -- records exist than the specified @MaxRecords@ value, a pagination token
    -- (marker) is included in the response so that the remaining results can
    -- be retrieved.
    --
    -- Default: 100
    --
    -- Constraints: Minimum 20, maximum 100.
    DescribeOrderableDBInstanceOptions -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | The virtual private cloud (VPC) filter value. Specify this parameter to
    -- show only the available VPC or non-VPC offerings.
    DescribeOrderableDBInstanceOptions -> Maybe Bool
vpc :: Prelude.Maybe Prelude.Bool,
    -- | The name of the engine to retrieve instance options for.
    DescribeOrderableDBInstanceOptions -> Text
engine :: Prelude.Text
  }
  deriving (DescribeOrderableDBInstanceOptions
-> DescribeOrderableDBInstanceOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeOrderableDBInstanceOptions
-> DescribeOrderableDBInstanceOptions -> Bool
$c/= :: DescribeOrderableDBInstanceOptions
-> DescribeOrderableDBInstanceOptions -> Bool
== :: DescribeOrderableDBInstanceOptions
-> DescribeOrderableDBInstanceOptions -> Bool
$c== :: DescribeOrderableDBInstanceOptions
-> DescribeOrderableDBInstanceOptions -> Bool
Prelude.Eq, ReadPrec [DescribeOrderableDBInstanceOptions]
ReadPrec DescribeOrderableDBInstanceOptions
Int -> ReadS DescribeOrderableDBInstanceOptions
ReadS [DescribeOrderableDBInstanceOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeOrderableDBInstanceOptions]
$creadListPrec :: ReadPrec [DescribeOrderableDBInstanceOptions]
readPrec :: ReadPrec DescribeOrderableDBInstanceOptions
$creadPrec :: ReadPrec DescribeOrderableDBInstanceOptions
readList :: ReadS [DescribeOrderableDBInstanceOptions]
$creadList :: ReadS [DescribeOrderableDBInstanceOptions]
readsPrec :: Int -> ReadS DescribeOrderableDBInstanceOptions
$creadsPrec :: Int -> ReadS DescribeOrderableDBInstanceOptions
Prelude.Read, Int -> DescribeOrderableDBInstanceOptions -> ShowS
[DescribeOrderableDBInstanceOptions] -> ShowS
DescribeOrderableDBInstanceOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeOrderableDBInstanceOptions] -> ShowS
$cshowList :: [DescribeOrderableDBInstanceOptions] -> ShowS
show :: DescribeOrderableDBInstanceOptions -> String
$cshow :: DescribeOrderableDBInstanceOptions -> String
showsPrec :: Int -> DescribeOrderableDBInstanceOptions -> ShowS
$cshowsPrec :: Int -> DescribeOrderableDBInstanceOptions -> ShowS
Prelude.Show, forall x.
Rep DescribeOrderableDBInstanceOptions x
-> DescribeOrderableDBInstanceOptions
forall x.
DescribeOrderableDBInstanceOptions
-> Rep DescribeOrderableDBInstanceOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeOrderableDBInstanceOptions x
-> DescribeOrderableDBInstanceOptions
$cfrom :: forall x.
DescribeOrderableDBInstanceOptions
-> Rep DescribeOrderableDBInstanceOptions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeOrderableDBInstanceOptions' 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:
--
-- 'dbInstanceClass', 'describeOrderableDBInstanceOptions_dbInstanceClass' - The instance class filter value. Specify this parameter to show only the
-- available offerings that match the specified instance class.
--
-- 'engineVersion', 'describeOrderableDBInstanceOptions_engineVersion' - The engine version filter value. Specify this parameter to show only the
-- available offerings that match the specified engine version.
--
-- 'filters', 'describeOrderableDBInstanceOptions_filters' - This parameter is not currently supported.
--
-- 'licenseModel', 'describeOrderableDBInstanceOptions_licenseModel' - The license model filter value. Specify this parameter to show only the
-- available offerings that match the specified license model.
--
-- 'marker', 'describeOrderableDBInstanceOptions_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'maxRecords', 'describeOrderableDBInstanceOptions_maxRecords' - The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- (marker) is included in the response so that the remaining results can
-- be retrieved.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
--
-- 'vpc', 'describeOrderableDBInstanceOptions_vpc' - The virtual private cloud (VPC) filter value. Specify this parameter to
-- show only the available VPC or non-VPC offerings.
--
-- 'engine', 'describeOrderableDBInstanceOptions_engine' - The name of the engine to retrieve instance options for.
newDescribeOrderableDBInstanceOptions ::
  -- | 'engine'
  Prelude.Text ->
  DescribeOrderableDBInstanceOptions
newDescribeOrderableDBInstanceOptions :: Text -> DescribeOrderableDBInstanceOptions
newDescribeOrderableDBInstanceOptions Text
pEngine_ =
  DescribeOrderableDBInstanceOptions'
    { $sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: Maybe Text
dbInstanceClass =
        forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:DescribeOrderableDBInstanceOptions' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeOrderableDBInstanceOptions' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseModel:DescribeOrderableDBInstanceOptions' :: Maybe Text
licenseModel = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeOrderableDBInstanceOptions' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeOrderableDBInstanceOptions' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:vpc:DescribeOrderableDBInstanceOptions' :: Maybe Bool
vpc = forall a. Maybe a
Prelude.Nothing,
      $sel:engine:DescribeOrderableDBInstanceOptions' :: Text
engine = Text
pEngine_
    }

-- | The instance class filter value. Specify this parameter to show only the
-- available offerings that match the specified instance class.
describeOrderableDBInstanceOptions_dbInstanceClass :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
describeOrderableDBInstanceOptions_dbInstanceClass :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
describeOrderableDBInstanceOptions_dbInstanceClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Text
dbInstanceClass :: Maybe Text
$sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
dbInstanceClass} -> Maybe Text
dbInstanceClass) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Text
a -> DescribeOrderableDBInstanceOptions
s {$sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: Maybe Text
dbInstanceClass = Maybe Text
a} :: DescribeOrderableDBInstanceOptions)

-- | The engine version filter value. Specify this parameter to show only the
-- available offerings that match the specified engine version.
describeOrderableDBInstanceOptions_engineVersion :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
describeOrderableDBInstanceOptions_engineVersion :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
describeOrderableDBInstanceOptions_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Text
a -> DescribeOrderableDBInstanceOptions
s {$sel:engineVersion:DescribeOrderableDBInstanceOptions' :: Maybe Text
engineVersion = Maybe Text
a} :: DescribeOrderableDBInstanceOptions)

-- | This parameter is not currently supported.
describeOrderableDBInstanceOptions_filters :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe [Filter])
describeOrderableDBInstanceOptions_filters :: Lens' DescribeOrderableDBInstanceOptions (Maybe [Filter])
describeOrderableDBInstanceOptions_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe [Filter]
a -> DescribeOrderableDBInstanceOptions
s {$sel:filters:DescribeOrderableDBInstanceOptions' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeOrderableDBInstanceOptions) 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 license model filter value. Specify this parameter to show only the
-- available offerings that match the specified license model.
describeOrderableDBInstanceOptions_licenseModel :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
describeOrderableDBInstanceOptions_licenseModel :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
describeOrderableDBInstanceOptions_licenseModel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Text
licenseModel :: Maybe Text
$sel:licenseModel:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
licenseModel} -> Maybe Text
licenseModel) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Text
a -> DescribeOrderableDBInstanceOptions
s {$sel:licenseModel:DescribeOrderableDBInstanceOptions' :: Maybe Text
licenseModel = Maybe Text
a} :: DescribeOrderableDBInstanceOptions)

-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
describeOrderableDBInstanceOptions_marker :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Text)
describeOrderableDBInstanceOptions_marker :: Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
describeOrderableDBInstanceOptions_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Text
a -> DescribeOrderableDBInstanceOptions
s {$sel:marker:DescribeOrderableDBInstanceOptions' :: Maybe Text
marker = Maybe Text
a} :: DescribeOrderableDBInstanceOptions)

-- | The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- (marker) is included in the response so that the remaining results can
-- be retrieved.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
describeOrderableDBInstanceOptions_maxRecords :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Int)
describeOrderableDBInstanceOptions_maxRecords :: Lens' DescribeOrderableDBInstanceOptions (Maybe Int)
describeOrderableDBInstanceOptions_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Int
a -> DescribeOrderableDBInstanceOptions
s {$sel:maxRecords:DescribeOrderableDBInstanceOptions' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeOrderableDBInstanceOptions)

-- | The virtual private cloud (VPC) filter value. Specify this parameter to
-- show only the available VPC or non-VPC offerings.
describeOrderableDBInstanceOptions_vpc :: Lens.Lens' DescribeOrderableDBInstanceOptions (Prelude.Maybe Prelude.Bool)
describeOrderableDBInstanceOptions_vpc :: Lens' DescribeOrderableDBInstanceOptions (Maybe Bool)
describeOrderableDBInstanceOptions_vpc = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Maybe Bool
vpc :: Maybe Bool
$sel:vpc:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Bool
vpc} -> Maybe Bool
vpc) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Maybe Bool
a -> DescribeOrderableDBInstanceOptions
s {$sel:vpc:DescribeOrderableDBInstanceOptions' :: Maybe Bool
vpc = Maybe Bool
a} :: DescribeOrderableDBInstanceOptions)

-- | The name of the engine to retrieve instance options for.
describeOrderableDBInstanceOptions_engine :: Lens.Lens' DescribeOrderableDBInstanceOptions Prelude.Text
describeOrderableDBInstanceOptions_engine :: Lens' DescribeOrderableDBInstanceOptions Text
describeOrderableDBInstanceOptions_engine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptions' {Text
engine :: Text
$sel:engine:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Text
engine} -> Text
engine) (\s :: DescribeOrderableDBInstanceOptions
s@DescribeOrderableDBInstanceOptions' {} Text
a -> DescribeOrderableDBInstanceOptions
s {$sel:engine:DescribeOrderableDBInstanceOptions' :: Text
engine = Text
a} :: DescribeOrderableDBInstanceOptions)

instance
  Core.AWSPager
    DescribeOrderableDBInstanceOptions
  where
  page :: DescribeOrderableDBInstanceOptions
-> AWSResponse DescribeOrderableDBInstanceOptions
-> Maybe DescribeOrderableDBInstanceOptions
page DescribeOrderableDBInstanceOptions
rq AWSResponse DescribeOrderableDBInstanceOptions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeOrderableDBInstanceOptions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeOrderableDBInstanceOptionsResponse (Maybe Text)
describeOrderableDBInstanceOptionsResponse_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 DescribeOrderableDBInstanceOptions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeOrderableDBInstanceOptionsResponse
  (Maybe [OrderableDBInstanceOption])
describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions
            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.$ DescribeOrderableDBInstanceOptions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeOrderableDBInstanceOptions (Maybe Text)
describeOrderableDBInstanceOptions_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeOrderableDBInstanceOptions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeOrderableDBInstanceOptionsResponse (Maybe Text)
describeOrderableDBInstanceOptionsResponse_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
    DescribeOrderableDBInstanceOptions
  where
  type
    AWSResponse DescribeOrderableDBInstanceOptions =
      DescribeOrderableDBInstanceOptionsResponse
  request :: (Service -> Service)
-> DescribeOrderableDBInstanceOptions
-> Request DescribeOrderableDBInstanceOptions
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 DescribeOrderableDBInstanceOptions
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeOrderableDBInstanceOptions)))
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
"DescribeOrderableDBInstanceOptionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [OrderableDBInstanceOption]
-> Int
-> DescribeOrderableDBInstanceOptionsResponse
DescribeOrderableDBInstanceOptionsResponse'
            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
"OrderableDBInstanceOptions"
                            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
"OrderableDBInstanceOption")
                        )
            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
    DescribeOrderableDBInstanceOptions
  where
  hashWithSalt :: Int -> DescribeOrderableDBInstanceOptions -> Int
hashWithSalt
    Int
_salt
    DescribeOrderableDBInstanceOptions' {Maybe Bool
Maybe Int
Maybe [Filter]
Maybe Text
Text
engine :: Text
vpc :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
licenseModel :: Maybe Text
filters :: Maybe [Filter]
engineVersion :: Maybe Text
dbInstanceClass :: Maybe Text
$sel:engine:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Text
$sel:vpc:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Bool
$sel:maxRecords:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Int
$sel:marker:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:licenseModel:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:filters:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe [Filter]
$sel:engineVersion:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbInstanceClass
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
licenseModel
        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 Bool
vpc
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engine

instance
  Prelude.NFData
    DescribeOrderableDBInstanceOptions
  where
  rnf :: DescribeOrderableDBInstanceOptions -> ()
rnf DescribeOrderableDBInstanceOptions' {Maybe Bool
Maybe Int
Maybe [Filter]
Maybe Text
Text
engine :: Text
vpc :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
licenseModel :: Maybe Text
filters :: Maybe [Filter]
engineVersion :: Maybe Text
dbInstanceClass :: Maybe Text
$sel:engine:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Text
$sel:vpc:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Bool
$sel:maxRecords:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Int
$sel:marker:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:licenseModel:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:filters:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe [Filter]
$sel:engineVersion:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbInstanceClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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
licenseModel
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Bool
vpc
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
engine

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

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

instance
  Data.ToQuery
    DescribeOrderableDBInstanceOptions
  where
  toQuery :: DescribeOrderableDBInstanceOptions -> QueryString
toQuery DescribeOrderableDBInstanceOptions' {Maybe Bool
Maybe Int
Maybe [Filter]
Maybe Text
Text
engine :: Text
vpc :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
licenseModel :: Maybe Text
filters :: Maybe [Filter]
engineVersion :: Maybe Text
dbInstanceClass :: Maybe Text
$sel:engine:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Text
$sel:vpc:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Bool
$sel:maxRecords:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Int
$sel:marker:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:licenseModel:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:filters:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe [Filter]
$sel:engineVersion:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
$sel:dbInstanceClass:DescribeOrderableDBInstanceOptions' :: DescribeOrderableDBInstanceOptions -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeOrderableDBInstanceOptions" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"DBInstanceClass" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbInstanceClass,
        ByteString
"EngineVersion" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
engineVersion,
        ByteString
"Filters"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: 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
"LicenseModel" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
licenseModel,
        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
"Vpc" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
vpc,
        ByteString
"Engine" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
engine
      ]

-- | Represents the output of DescribeOrderableDBInstanceOptions.
--
-- /See:/ 'newDescribeOrderableDBInstanceOptionsResponse' smart constructor.
data DescribeOrderableDBInstanceOptionsResponse = DescribeOrderableDBInstanceOptionsResponse'
  { -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeOrderableDBInstanceOptionsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The options that are available for a particular orderable instance.
    DescribeOrderableDBInstanceOptionsResponse
-> Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions :: Prelude.Maybe [OrderableDBInstanceOption],
    -- | The response's http status code.
    DescribeOrderableDBInstanceOptionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeOrderableDBInstanceOptionsResponse
-> DescribeOrderableDBInstanceOptionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeOrderableDBInstanceOptionsResponse
-> DescribeOrderableDBInstanceOptionsResponse -> Bool
$c/= :: DescribeOrderableDBInstanceOptionsResponse
-> DescribeOrderableDBInstanceOptionsResponse -> Bool
== :: DescribeOrderableDBInstanceOptionsResponse
-> DescribeOrderableDBInstanceOptionsResponse -> Bool
$c== :: DescribeOrderableDBInstanceOptionsResponse
-> DescribeOrderableDBInstanceOptionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeOrderableDBInstanceOptionsResponse]
ReadPrec DescribeOrderableDBInstanceOptionsResponse
Int -> ReadS DescribeOrderableDBInstanceOptionsResponse
ReadS [DescribeOrderableDBInstanceOptionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeOrderableDBInstanceOptionsResponse]
$creadListPrec :: ReadPrec [DescribeOrderableDBInstanceOptionsResponse]
readPrec :: ReadPrec DescribeOrderableDBInstanceOptionsResponse
$creadPrec :: ReadPrec DescribeOrderableDBInstanceOptionsResponse
readList :: ReadS [DescribeOrderableDBInstanceOptionsResponse]
$creadList :: ReadS [DescribeOrderableDBInstanceOptionsResponse]
readsPrec :: Int -> ReadS DescribeOrderableDBInstanceOptionsResponse
$creadsPrec :: Int -> ReadS DescribeOrderableDBInstanceOptionsResponse
Prelude.Read, Int -> DescribeOrderableDBInstanceOptionsResponse -> ShowS
[DescribeOrderableDBInstanceOptionsResponse] -> ShowS
DescribeOrderableDBInstanceOptionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeOrderableDBInstanceOptionsResponse] -> ShowS
$cshowList :: [DescribeOrderableDBInstanceOptionsResponse] -> ShowS
show :: DescribeOrderableDBInstanceOptionsResponse -> String
$cshow :: DescribeOrderableDBInstanceOptionsResponse -> String
showsPrec :: Int -> DescribeOrderableDBInstanceOptionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeOrderableDBInstanceOptionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeOrderableDBInstanceOptionsResponse x
-> DescribeOrderableDBInstanceOptionsResponse
forall x.
DescribeOrderableDBInstanceOptionsResponse
-> Rep DescribeOrderableDBInstanceOptionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeOrderableDBInstanceOptionsResponse x
-> DescribeOrderableDBInstanceOptionsResponse
$cfrom :: forall x.
DescribeOrderableDBInstanceOptionsResponse
-> Rep DescribeOrderableDBInstanceOptionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeOrderableDBInstanceOptionsResponse' 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', 'describeOrderableDBInstanceOptionsResponse_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'orderableDBInstanceOptions', 'describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions' - The options that are available for a particular orderable instance.
--
-- 'httpStatus', 'describeOrderableDBInstanceOptionsResponse_httpStatus' - The response's http status code.
newDescribeOrderableDBInstanceOptionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeOrderableDBInstanceOptionsResponse
newDescribeOrderableDBInstanceOptionsResponse :: Int -> DescribeOrderableDBInstanceOptionsResponse
newDescribeOrderableDBInstanceOptionsResponse
  Int
pHttpStatus_ =
    DescribeOrderableDBInstanceOptionsResponse'
      { $sel:marker:DescribeOrderableDBInstanceOptionsResponse' :: Maybe Text
marker =
          forall a. Maybe a
Prelude.Nothing,
        $sel:orderableDBInstanceOptions:DescribeOrderableDBInstanceOptionsResponse' :: Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeOrderableDBInstanceOptionsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
describeOrderableDBInstanceOptionsResponse_marker :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse (Prelude.Maybe Prelude.Text)
describeOrderableDBInstanceOptionsResponse_marker :: Lens' DescribeOrderableDBInstanceOptionsResponse (Maybe Text)
describeOrderableDBInstanceOptionsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeOrderableDBInstanceOptionsResponse' :: DescribeOrderableDBInstanceOptionsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeOrderableDBInstanceOptionsResponse
s@DescribeOrderableDBInstanceOptionsResponse' {} Maybe Text
a -> DescribeOrderableDBInstanceOptionsResponse
s {$sel:marker:DescribeOrderableDBInstanceOptionsResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeOrderableDBInstanceOptionsResponse)

-- | The options that are available for a particular orderable instance.
describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse (Prelude.Maybe [OrderableDBInstanceOption])
describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions :: Lens'
  DescribeOrderableDBInstanceOptionsResponse
  (Maybe [OrderableDBInstanceOption])
describeOrderableDBInstanceOptionsResponse_orderableDBInstanceOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions :: Maybe [OrderableDBInstanceOption]
$sel:orderableDBInstanceOptions:DescribeOrderableDBInstanceOptionsResponse' :: DescribeOrderableDBInstanceOptionsResponse
-> Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions} -> Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions) (\s :: DescribeOrderableDBInstanceOptionsResponse
s@DescribeOrderableDBInstanceOptionsResponse' {} Maybe [OrderableDBInstanceOption]
a -> DescribeOrderableDBInstanceOptionsResponse
s {$sel:orderableDBInstanceOptions:DescribeOrderableDBInstanceOptionsResponse' :: Maybe [OrderableDBInstanceOption]
orderableDBInstanceOptions = Maybe [OrderableDBInstanceOption]
a} :: DescribeOrderableDBInstanceOptionsResponse) 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.
describeOrderableDBInstanceOptionsResponse_httpStatus :: Lens.Lens' DescribeOrderableDBInstanceOptionsResponse Prelude.Int
describeOrderableDBInstanceOptionsResponse_httpStatus :: Lens' DescribeOrderableDBInstanceOptionsResponse Int
describeOrderableDBInstanceOptionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOrderableDBInstanceOptionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeOrderableDBInstanceOptionsResponse' :: DescribeOrderableDBInstanceOptionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeOrderableDBInstanceOptionsResponse
s@DescribeOrderableDBInstanceOptionsResponse' {} Int
a -> DescribeOrderableDBInstanceOptionsResponse
s {$sel:httpStatus:DescribeOrderableDBInstanceOptionsResponse' :: Int
httpStatus = Int
a} :: DescribeOrderableDBInstanceOptionsResponse)

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