{-# 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.ElasticBeanstalk.DescribeConfigurationOptions
-- 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 configuration options that are used in a particular
-- configuration template or environment, or that a specified solution
-- stack defines. The description includes the values the options, their
-- default values, and an indication of the required action on a running
-- environment if an option value is changed.
module Amazonka.ElasticBeanstalk.DescribeConfigurationOptions
  ( -- * Creating a Request
    DescribeConfigurationOptions (..),
    newDescribeConfigurationOptions,

    -- * Request Lenses
    describeConfigurationOptions_applicationName,
    describeConfigurationOptions_environmentName,
    describeConfigurationOptions_options,
    describeConfigurationOptions_platformArn,
    describeConfigurationOptions_solutionStackName,
    describeConfigurationOptions_templateName,

    -- * Destructuring the Response
    DescribeConfigurationOptionsResponse (..),
    newDescribeConfigurationOptionsResponse,

    -- * Response Lenses
    describeConfigurationOptionsResponse_options,
    describeConfigurationOptionsResponse_platformArn,
    describeConfigurationOptionsResponse_solutionStackName,
    describeConfigurationOptionsResponse_httpStatus,
  )
where

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

-- | Result message containing a list of application version descriptions.
--
-- /See:/ 'newDescribeConfigurationOptions' smart constructor.
data DescribeConfigurationOptions = DescribeConfigurationOptions'
  { -- | The name of the application associated with the configuration template
    -- or environment. Only needed if you want to describe the configuration
    -- options associated with either the configuration template or
    -- environment.
    DescribeConfigurationOptions -> Maybe Text
applicationName :: Prelude.Maybe Prelude.Text,
    -- | The name of the environment whose configuration options you want to
    -- describe.
    DescribeConfigurationOptions -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | If specified, restricts the descriptions to only the specified options.
    DescribeConfigurationOptions -> Maybe [OptionSpecification]
options :: Prelude.Maybe [OptionSpecification],
    -- | The ARN of the custom platform.
    DescribeConfigurationOptions -> Maybe Text
platformArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the solution stack whose configuration options you want to
    -- describe.
    DescribeConfigurationOptions -> Maybe Text
solutionStackName :: Prelude.Maybe Prelude.Text,
    -- | The name of the configuration template whose configuration options you
    -- want to describe.
    DescribeConfigurationOptions -> Maybe Text
templateName :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeConfigurationOptions
-> DescribeConfigurationOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeConfigurationOptions
-> DescribeConfigurationOptions -> Bool
$c/= :: DescribeConfigurationOptions
-> DescribeConfigurationOptions -> Bool
== :: DescribeConfigurationOptions
-> DescribeConfigurationOptions -> Bool
$c== :: DescribeConfigurationOptions
-> DescribeConfigurationOptions -> Bool
Prelude.Eq, ReadPrec [DescribeConfigurationOptions]
ReadPrec DescribeConfigurationOptions
Int -> ReadS DescribeConfigurationOptions
ReadS [DescribeConfigurationOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeConfigurationOptions]
$creadListPrec :: ReadPrec [DescribeConfigurationOptions]
readPrec :: ReadPrec DescribeConfigurationOptions
$creadPrec :: ReadPrec DescribeConfigurationOptions
readList :: ReadS [DescribeConfigurationOptions]
$creadList :: ReadS [DescribeConfigurationOptions]
readsPrec :: Int -> ReadS DescribeConfigurationOptions
$creadsPrec :: Int -> ReadS DescribeConfigurationOptions
Prelude.Read, Int -> DescribeConfigurationOptions -> ShowS
[DescribeConfigurationOptions] -> ShowS
DescribeConfigurationOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeConfigurationOptions] -> ShowS
$cshowList :: [DescribeConfigurationOptions] -> ShowS
show :: DescribeConfigurationOptions -> String
$cshow :: DescribeConfigurationOptions -> String
showsPrec :: Int -> DescribeConfigurationOptions -> ShowS
$cshowsPrec :: Int -> DescribeConfigurationOptions -> ShowS
Prelude.Show, forall x.
Rep DescribeConfigurationOptions x -> DescribeConfigurationOptions
forall x.
DescribeConfigurationOptions -> Rep DescribeConfigurationOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeConfigurationOptions x -> DescribeConfigurationOptions
$cfrom :: forall x.
DescribeConfigurationOptions -> Rep DescribeConfigurationOptions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeConfigurationOptions' 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:
--
-- 'applicationName', 'describeConfigurationOptions_applicationName' - The name of the application associated with the configuration template
-- or environment. Only needed if you want to describe the configuration
-- options associated with either the configuration template or
-- environment.
--
-- 'environmentName', 'describeConfigurationOptions_environmentName' - The name of the environment whose configuration options you want to
-- describe.
--
-- 'options', 'describeConfigurationOptions_options' - If specified, restricts the descriptions to only the specified options.
--
-- 'platformArn', 'describeConfigurationOptions_platformArn' - The ARN of the custom platform.
--
-- 'solutionStackName', 'describeConfigurationOptions_solutionStackName' - The name of the solution stack whose configuration options you want to
-- describe.
--
-- 'templateName', 'describeConfigurationOptions_templateName' - The name of the configuration template whose configuration options you
-- want to describe.
newDescribeConfigurationOptions ::
  DescribeConfigurationOptions
newDescribeConfigurationOptions :: DescribeConfigurationOptions
newDescribeConfigurationOptions =
  DescribeConfigurationOptions'
    { $sel:applicationName:DescribeConfigurationOptions' :: Maybe Text
applicationName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeConfigurationOptions' :: Maybe Text
environmentName = forall a. Maybe a
Prelude.Nothing,
      $sel:options:DescribeConfigurationOptions' :: Maybe [OptionSpecification]
options = forall a. Maybe a
Prelude.Nothing,
      $sel:platformArn:DescribeConfigurationOptions' :: Maybe Text
platformArn = forall a. Maybe a
Prelude.Nothing,
      $sel:solutionStackName:DescribeConfigurationOptions' :: Maybe Text
solutionStackName = forall a. Maybe a
Prelude.Nothing,
      $sel:templateName:DescribeConfigurationOptions' :: Maybe Text
templateName = forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the application associated with the configuration template
-- or environment. Only needed if you want to describe the configuration
-- options associated with either the configuration template or
-- environment.
describeConfigurationOptions_applicationName :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe Prelude.Text)
describeConfigurationOptions_applicationName :: Lens' DescribeConfigurationOptions (Maybe Text)
describeConfigurationOptions_applicationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe Text
applicationName :: Maybe Text
$sel:applicationName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
applicationName} -> Maybe Text
applicationName) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe Text
a -> DescribeConfigurationOptions
s {$sel:applicationName:DescribeConfigurationOptions' :: Maybe Text
applicationName = Maybe Text
a} :: DescribeConfigurationOptions)

-- | The name of the environment whose configuration options you want to
-- describe.
describeConfigurationOptions_environmentName :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe Prelude.Text)
describeConfigurationOptions_environmentName :: Lens' DescribeConfigurationOptions (Maybe Text)
describeConfigurationOptions_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe Text
a -> DescribeConfigurationOptions
s {$sel:environmentName:DescribeConfigurationOptions' :: Maybe Text
environmentName = Maybe Text
a} :: DescribeConfigurationOptions)

-- | If specified, restricts the descriptions to only the specified options.
describeConfigurationOptions_options :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe [OptionSpecification])
describeConfigurationOptions_options :: Lens' DescribeConfigurationOptions (Maybe [OptionSpecification])
describeConfigurationOptions_options = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe [OptionSpecification]
options :: Maybe [OptionSpecification]
$sel:options:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe [OptionSpecification]
options} -> Maybe [OptionSpecification]
options) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe [OptionSpecification]
a -> DescribeConfigurationOptions
s {$sel:options:DescribeConfigurationOptions' :: Maybe [OptionSpecification]
options = Maybe [OptionSpecification]
a} :: DescribeConfigurationOptions) 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 ARN of the custom platform.
describeConfigurationOptions_platformArn :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe Prelude.Text)
describeConfigurationOptions_platformArn :: Lens' DescribeConfigurationOptions (Maybe Text)
describeConfigurationOptions_platformArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe Text
platformArn :: Maybe Text
$sel:platformArn:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
platformArn} -> Maybe Text
platformArn) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe Text
a -> DescribeConfigurationOptions
s {$sel:platformArn:DescribeConfigurationOptions' :: Maybe Text
platformArn = Maybe Text
a} :: DescribeConfigurationOptions)

-- | The name of the solution stack whose configuration options you want to
-- describe.
describeConfigurationOptions_solutionStackName :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe Prelude.Text)
describeConfigurationOptions_solutionStackName :: Lens' DescribeConfigurationOptions (Maybe Text)
describeConfigurationOptions_solutionStackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe Text
solutionStackName :: Maybe Text
$sel:solutionStackName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
solutionStackName} -> Maybe Text
solutionStackName) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe Text
a -> DescribeConfigurationOptions
s {$sel:solutionStackName:DescribeConfigurationOptions' :: Maybe Text
solutionStackName = Maybe Text
a} :: DescribeConfigurationOptions)

-- | The name of the configuration template whose configuration options you
-- want to describe.
describeConfigurationOptions_templateName :: Lens.Lens' DescribeConfigurationOptions (Prelude.Maybe Prelude.Text)
describeConfigurationOptions_templateName :: Lens' DescribeConfigurationOptions (Maybe Text)
describeConfigurationOptions_templateName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptions' {Maybe Text
templateName :: Maybe Text
$sel:templateName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
templateName} -> Maybe Text
templateName) (\s :: DescribeConfigurationOptions
s@DescribeConfigurationOptions' {} Maybe Text
a -> DescribeConfigurationOptions
s {$sel:templateName:DescribeConfigurationOptions' :: Maybe Text
templateName = Maybe Text
a} :: DescribeConfigurationOptions)

instance Core.AWSRequest DescribeConfigurationOptions where
  type
    AWSResponse DescribeConfigurationOptions =
      DescribeConfigurationOptionsResponse
  request :: (Service -> Service)
-> DescribeConfigurationOptions
-> Request DescribeConfigurationOptions
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 DescribeConfigurationOptions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeConfigurationOptions)))
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
"DescribeConfigurationOptionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [ConfigurationOptionDescription]
-> Maybe Text
-> Maybe Text
-> Int
-> DescribeConfigurationOptionsResponse
DescribeConfigurationOptionsResponse'
            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
"Options"
                            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
"member")
                        )
            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
"PlatformArn")
            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
"SolutionStackName")
            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
    DescribeConfigurationOptions
  where
  hashWithSalt :: Int -> DescribeConfigurationOptions -> Int
hashWithSalt Int
_salt DescribeConfigurationOptions' {Maybe [OptionSpecification]
Maybe Text
templateName :: Maybe Text
solutionStackName :: Maybe Text
platformArn :: Maybe Text
options :: Maybe [OptionSpecification]
environmentName :: Maybe Text
applicationName :: Maybe Text
$sel:templateName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:solutionStackName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:platformArn:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:options:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe [OptionSpecification]
$sel:environmentName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:applicationName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
applicationName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [OptionSpecification]
options
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platformArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
solutionStackName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
templateName

instance Prelude.NFData DescribeConfigurationOptions where
  rnf :: DescribeConfigurationOptions -> ()
rnf DescribeConfigurationOptions' {Maybe [OptionSpecification]
Maybe Text
templateName :: Maybe Text
solutionStackName :: Maybe Text
platformArn :: Maybe Text
options :: Maybe [OptionSpecification]
environmentName :: Maybe Text
applicationName :: Maybe Text
$sel:templateName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:solutionStackName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:platformArn:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:options:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe [OptionSpecification]
$sel:environmentName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:applicationName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
applicationName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [OptionSpecification]
options
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
solutionStackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
templateName

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

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

instance Data.ToQuery DescribeConfigurationOptions where
  toQuery :: DescribeConfigurationOptions -> QueryString
toQuery DescribeConfigurationOptions' {Maybe [OptionSpecification]
Maybe Text
templateName :: Maybe Text
solutionStackName :: Maybe Text
platformArn :: Maybe Text
options :: Maybe [OptionSpecification]
environmentName :: Maybe Text
applicationName :: Maybe Text
$sel:templateName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:solutionStackName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:platformArn:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:options:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe [OptionSpecification]
$sel:environmentName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
$sel:applicationName:DescribeConfigurationOptions' :: DescribeConfigurationOptions -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeConfigurationOptions" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-12-01" :: Prelude.ByteString),
        ByteString
"ApplicationName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
applicationName,
        ByteString
"EnvironmentName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
environmentName,
        ByteString
"Options"
          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
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [OptionSpecification]
options),
        ByteString
"PlatformArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
platformArn,
        ByteString
"SolutionStackName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
solutionStackName,
        ByteString
"TemplateName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
templateName
      ]

-- | Describes the settings for a specified configuration set.
--
-- /See:/ 'newDescribeConfigurationOptionsResponse' smart constructor.
data DescribeConfigurationOptionsResponse = DescribeConfigurationOptionsResponse'
  { -- | A list of ConfigurationOptionDescription.
    DescribeConfigurationOptionsResponse
-> Maybe [ConfigurationOptionDescription]
options :: Prelude.Maybe [ConfigurationOptionDescription],
    -- | The ARN of the platform version.
    DescribeConfigurationOptionsResponse -> Maybe Text
platformArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the solution stack these configuration options belong to.
    DescribeConfigurationOptionsResponse -> Maybe Text
solutionStackName :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeConfigurationOptionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeConfigurationOptionsResponse
-> DescribeConfigurationOptionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeConfigurationOptionsResponse
-> DescribeConfigurationOptionsResponse -> Bool
$c/= :: DescribeConfigurationOptionsResponse
-> DescribeConfigurationOptionsResponse -> Bool
== :: DescribeConfigurationOptionsResponse
-> DescribeConfigurationOptionsResponse -> Bool
$c== :: DescribeConfigurationOptionsResponse
-> DescribeConfigurationOptionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeConfigurationOptionsResponse]
ReadPrec DescribeConfigurationOptionsResponse
Int -> ReadS DescribeConfigurationOptionsResponse
ReadS [DescribeConfigurationOptionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeConfigurationOptionsResponse]
$creadListPrec :: ReadPrec [DescribeConfigurationOptionsResponse]
readPrec :: ReadPrec DescribeConfigurationOptionsResponse
$creadPrec :: ReadPrec DescribeConfigurationOptionsResponse
readList :: ReadS [DescribeConfigurationOptionsResponse]
$creadList :: ReadS [DescribeConfigurationOptionsResponse]
readsPrec :: Int -> ReadS DescribeConfigurationOptionsResponse
$creadsPrec :: Int -> ReadS DescribeConfigurationOptionsResponse
Prelude.Read, Int -> DescribeConfigurationOptionsResponse -> ShowS
[DescribeConfigurationOptionsResponse] -> ShowS
DescribeConfigurationOptionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeConfigurationOptionsResponse] -> ShowS
$cshowList :: [DescribeConfigurationOptionsResponse] -> ShowS
show :: DescribeConfigurationOptionsResponse -> String
$cshow :: DescribeConfigurationOptionsResponse -> String
showsPrec :: Int -> DescribeConfigurationOptionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeConfigurationOptionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeConfigurationOptionsResponse x
-> DescribeConfigurationOptionsResponse
forall x.
DescribeConfigurationOptionsResponse
-> Rep DescribeConfigurationOptionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeConfigurationOptionsResponse x
-> DescribeConfigurationOptionsResponse
$cfrom :: forall x.
DescribeConfigurationOptionsResponse
-> Rep DescribeConfigurationOptionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeConfigurationOptionsResponse' 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:
--
-- 'options', 'describeConfigurationOptionsResponse_options' - A list of ConfigurationOptionDescription.
--
-- 'platformArn', 'describeConfigurationOptionsResponse_platformArn' - The ARN of the platform version.
--
-- 'solutionStackName', 'describeConfigurationOptionsResponse_solutionStackName' - The name of the solution stack these configuration options belong to.
--
-- 'httpStatus', 'describeConfigurationOptionsResponse_httpStatus' - The response's http status code.
newDescribeConfigurationOptionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeConfigurationOptionsResponse
newDescribeConfigurationOptionsResponse :: Int -> DescribeConfigurationOptionsResponse
newDescribeConfigurationOptionsResponse Int
pHttpStatus_ =
  DescribeConfigurationOptionsResponse'
    { $sel:options:DescribeConfigurationOptionsResponse' :: Maybe [ConfigurationOptionDescription]
options =
        forall a. Maybe a
Prelude.Nothing,
      $sel:platformArn:DescribeConfigurationOptionsResponse' :: Maybe Text
platformArn = forall a. Maybe a
Prelude.Nothing,
      $sel:solutionStackName:DescribeConfigurationOptionsResponse' :: Maybe Text
solutionStackName = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeConfigurationOptionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A list of ConfigurationOptionDescription.
describeConfigurationOptionsResponse_options :: Lens.Lens' DescribeConfigurationOptionsResponse (Prelude.Maybe [ConfigurationOptionDescription])
describeConfigurationOptionsResponse_options :: Lens'
  DescribeConfigurationOptionsResponse
  (Maybe [ConfigurationOptionDescription])
describeConfigurationOptionsResponse_options = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptionsResponse' {Maybe [ConfigurationOptionDescription]
options :: Maybe [ConfigurationOptionDescription]
$sel:options:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse
-> Maybe [ConfigurationOptionDescription]
options} -> Maybe [ConfigurationOptionDescription]
options) (\s :: DescribeConfigurationOptionsResponse
s@DescribeConfigurationOptionsResponse' {} Maybe [ConfigurationOptionDescription]
a -> DescribeConfigurationOptionsResponse
s {$sel:options:DescribeConfigurationOptionsResponse' :: Maybe [ConfigurationOptionDescription]
options = Maybe [ConfigurationOptionDescription]
a} :: DescribeConfigurationOptionsResponse) 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 ARN of the platform version.
describeConfigurationOptionsResponse_platformArn :: Lens.Lens' DescribeConfigurationOptionsResponse (Prelude.Maybe Prelude.Text)
describeConfigurationOptionsResponse_platformArn :: Lens' DescribeConfigurationOptionsResponse (Maybe Text)
describeConfigurationOptionsResponse_platformArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptionsResponse' {Maybe Text
platformArn :: Maybe Text
$sel:platformArn:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse -> Maybe Text
platformArn} -> Maybe Text
platformArn) (\s :: DescribeConfigurationOptionsResponse
s@DescribeConfigurationOptionsResponse' {} Maybe Text
a -> DescribeConfigurationOptionsResponse
s {$sel:platformArn:DescribeConfigurationOptionsResponse' :: Maybe Text
platformArn = Maybe Text
a} :: DescribeConfigurationOptionsResponse)

-- | The name of the solution stack these configuration options belong to.
describeConfigurationOptionsResponse_solutionStackName :: Lens.Lens' DescribeConfigurationOptionsResponse (Prelude.Maybe Prelude.Text)
describeConfigurationOptionsResponse_solutionStackName :: Lens' DescribeConfigurationOptionsResponse (Maybe Text)
describeConfigurationOptionsResponse_solutionStackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConfigurationOptionsResponse' {Maybe Text
solutionStackName :: Maybe Text
$sel:solutionStackName:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse -> Maybe Text
solutionStackName} -> Maybe Text
solutionStackName) (\s :: DescribeConfigurationOptionsResponse
s@DescribeConfigurationOptionsResponse' {} Maybe Text
a -> DescribeConfigurationOptionsResponse
s {$sel:solutionStackName:DescribeConfigurationOptionsResponse' :: Maybe Text
solutionStackName = Maybe Text
a} :: DescribeConfigurationOptionsResponse)

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

instance
  Prelude.NFData
    DescribeConfigurationOptionsResponse
  where
  rnf :: DescribeConfigurationOptionsResponse -> ()
rnf DescribeConfigurationOptionsResponse' {Int
Maybe [ConfigurationOptionDescription]
Maybe Text
httpStatus :: Int
solutionStackName :: Maybe Text
platformArn :: Maybe Text
options :: Maybe [ConfigurationOptionDescription]
$sel:httpStatus:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse -> Int
$sel:solutionStackName:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse -> Maybe Text
$sel:platformArn:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse -> Maybe Text
$sel:options:DescribeConfigurationOptionsResponse' :: DescribeConfigurationOptionsResponse
-> Maybe [ConfigurationOptionDescription]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [ConfigurationOptionDescription]
options
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
solutionStackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus