{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.OpenSearch.ListInstanceTypeDetails
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists all instance types and available features for a given OpenSearch
-- or Elasticsearch version.
module Amazonka.OpenSearch.ListInstanceTypeDetails
  ( -- * Creating a Request
    ListInstanceTypeDetails (..),
    newListInstanceTypeDetails,

    -- * Request Lenses
    listInstanceTypeDetails_domainName,
    listInstanceTypeDetails_maxResults,
    listInstanceTypeDetails_nextToken,
    listInstanceTypeDetails_engineVersion,

    -- * Destructuring the Response
    ListInstanceTypeDetailsResponse (..),
    newListInstanceTypeDetailsResponse,

    -- * Response Lenses
    listInstanceTypeDetailsResponse_instanceTypeDetails,
    listInstanceTypeDetailsResponse_nextToken,
    listInstanceTypeDetailsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListInstanceTypeDetails' smart constructor.
data ListInstanceTypeDetails = ListInstanceTypeDetails'
  { -- | Name of the domain to list instance type details for.
    ListInstanceTypeDetails -> Maybe Text
domainName :: Prelude.Maybe Prelude.Text,
    -- | An optional parameter that specifies the maximum number of results to
    -- return. You can use @nextToken@ to get the next page of results.
    ListInstanceTypeDetails -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | If your initial @ListInstanceTypeDetails@ operation returns a
    -- @nextToken@, you can include the returned @nextToken@ in subsequent
    -- @ListInstanceTypeDetails@ operations, which returns results in the next
    -- page.
    ListInstanceTypeDetails -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Version of OpenSearch or Elasticsearch, in the format Elasticsearch_X.Y
    -- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
    ListInstanceTypeDetails -> Text
engineVersion :: Prelude.Text
  }
  deriving (ListInstanceTypeDetails -> ListInstanceTypeDetails -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListInstanceTypeDetails -> ListInstanceTypeDetails -> Bool
$c/= :: ListInstanceTypeDetails -> ListInstanceTypeDetails -> Bool
== :: ListInstanceTypeDetails -> ListInstanceTypeDetails -> Bool
$c== :: ListInstanceTypeDetails -> ListInstanceTypeDetails -> Bool
Prelude.Eq, ReadPrec [ListInstanceTypeDetails]
ReadPrec ListInstanceTypeDetails
Int -> ReadS ListInstanceTypeDetails
ReadS [ListInstanceTypeDetails]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListInstanceTypeDetails]
$creadListPrec :: ReadPrec [ListInstanceTypeDetails]
readPrec :: ReadPrec ListInstanceTypeDetails
$creadPrec :: ReadPrec ListInstanceTypeDetails
readList :: ReadS [ListInstanceTypeDetails]
$creadList :: ReadS [ListInstanceTypeDetails]
readsPrec :: Int -> ReadS ListInstanceTypeDetails
$creadsPrec :: Int -> ReadS ListInstanceTypeDetails
Prelude.Read, Int -> ListInstanceTypeDetails -> ShowS
[ListInstanceTypeDetails] -> ShowS
ListInstanceTypeDetails -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListInstanceTypeDetails] -> ShowS
$cshowList :: [ListInstanceTypeDetails] -> ShowS
show :: ListInstanceTypeDetails -> String
$cshow :: ListInstanceTypeDetails -> String
showsPrec :: Int -> ListInstanceTypeDetails -> ShowS
$cshowsPrec :: Int -> ListInstanceTypeDetails -> ShowS
Prelude.Show, forall x. Rep ListInstanceTypeDetails x -> ListInstanceTypeDetails
forall x. ListInstanceTypeDetails -> Rep ListInstanceTypeDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListInstanceTypeDetails x -> ListInstanceTypeDetails
$cfrom :: forall x. ListInstanceTypeDetails -> Rep ListInstanceTypeDetails x
Prelude.Generic)

-- |
-- Create a value of 'ListInstanceTypeDetails' 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:
--
-- 'domainName', 'listInstanceTypeDetails_domainName' - Name of the domain to list instance type details for.
--
-- 'maxResults', 'listInstanceTypeDetails_maxResults' - An optional parameter that specifies the maximum number of results to
-- return. You can use @nextToken@ to get the next page of results.
--
-- 'nextToken', 'listInstanceTypeDetails_nextToken' - If your initial @ListInstanceTypeDetails@ operation returns a
-- @nextToken@, you can include the returned @nextToken@ in subsequent
-- @ListInstanceTypeDetails@ operations, which returns results in the next
-- page.
--
-- 'engineVersion', 'listInstanceTypeDetails_engineVersion' - Version of OpenSearch or Elasticsearch, in the format Elasticsearch_X.Y
-- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
newListInstanceTypeDetails ::
  -- | 'engineVersion'
  Prelude.Text ->
  ListInstanceTypeDetails
newListInstanceTypeDetails :: Text -> ListInstanceTypeDetails
newListInstanceTypeDetails Text
pEngineVersion_ =
  ListInstanceTypeDetails'
    { $sel:domainName:ListInstanceTypeDetails' :: Maybe Text
domainName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListInstanceTypeDetails' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListInstanceTypeDetails' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:ListInstanceTypeDetails' :: Text
engineVersion = Text
pEngineVersion_
    }

-- | Name of the domain to list instance type details for.
listInstanceTypeDetails_domainName :: Lens.Lens' ListInstanceTypeDetails (Prelude.Maybe Prelude.Text)
listInstanceTypeDetails_domainName :: Lens' ListInstanceTypeDetails (Maybe Text)
listInstanceTypeDetails_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetails' {Maybe Text
domainName :: Maybe Text
$sel:domainName:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
domainName} -> Maybe Text
domainName) (\s :: ListInstanceTypeDetails
s@ListInstanceTypeDetails' {} Maybe Text
a -> ListInstanceTypeDetails
s {$sel:domainName:ListInstanceTypeDetails' :: Maybe Text
domainName = Maybe Text
a} :: ListInstanceTypeDetails)

-- | An optional parameter that specifies the maximum number of results to
-- return. You can use @nextToken@ to get the next page of results.
listInstanceTypeDetails_maxResults :: Lens.Lens' ListInstanceTypeDetails (Prelude.Maybe Prelude.Int)
listInstanceTypeDetails_maxResults :: Lens' ListInstanceTypeDetails (Maybe Int)
listInstanceTypeDetails_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetails' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: ListInstanceTypeDetails
s@ListInstanceTypeDetails' {} Maybe Int
a -> ListInstanceTypeDetails
s {$sel:maxResults:ListInstanceTypeDetails' :: Maybe Int
maxResults = Maybe Int
a} :: ListInstanceTypeDetails)

-- | If your initial @ListInstanceTypeDetails@ operation returns a
-- @nextToken@, you can include the returned @nextToken@ in subsequent
-- @ListInstanceTypeDetails@ operations, which returns results in the next
-- page.
listInstanceTypeDetails_nextToken :: Lens.Lens' ListInstanceTypeDetails (Prelude.Maybe Prelude.Text)
listInstanceTypeDetails_nextToken :: Lens' ListInstanceTypeDetails (Maybe Text)
listInstanceTypeDetails_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetails' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListInstanceTypeDetails
s@ListInstanceTypeDetails' {} Maybe Text
a -> ListInstanceTypeDetails
s {$sel:nextToken:ListInstanceTypeDetails' :: Maybe Text
nextToken = Maybe Text
a} :: ListInstanceTypeDetails)

-- | Version of OpenSearch or Elasticsearch, in the format Elasticsearch_X.Y
-- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
listInstanceTypeDetails_engineVersion :: Lens.Lens' ListInstanceTypeDetails Prelude.Text
listInstanceTypeDetails_engineVersion :: Lens' ListInstanceTypeDetails Text
listInstanceTypeDetails_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetails' {Text
engineVersion :: Text
$sel:engineVersion:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Text
engineVersion} -> Text
engineVersion) (\s :: ListInstanceTypeDetails
s@ListInstanceTypeDetails' {} Text
a -> ListInstanceTypeDetails
s {$sel:engineVersion:ListInstanceTypeDetails' :: Text
engineVersion = Text
a} :: ListInstanceTypeDetails)

instance Core.AWSRequest ListInstanceTypeDetails where
  type
    AWSResponse ListInstanceTypeDetails =
      ListInstanceTypeDetailsResponse
  request :: (Service -> Service)
-> ListInstanceTypeDetails -> Request ListInstanceTypeDetails
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListInstanceTypeDetails
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListInstanceTypeDetails)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe [InstanceTypeDetails]
-> Maybe Text -> Int -> ListInstanceTypeDetailsResponse
ListInstanceTypeDetailsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"InstanceTypeDetails"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            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 ListInstanceTypeDetails where
  hashWithSalt :: Int -> ListInstanceTypeDetails -> Int
hashWithSalt Int
_salt ListInstanceTypeDetails' {Maybe Int
Maybe Text
Text
engineVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:engineVersion:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Text
$sel:nextToken:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
$sel:maxResults:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Int
$sel:domainName:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engineVersion

instance Prelude.NFData ListInstanceTypeDetails where
  rnf :: ListInstanceTypeDetails -> ()
rnf ListInstanceTypeDetails' {Maybe Int
Maybe Text
Text
engineVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:engineVersion:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Text
$sel:nextToken:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
$sel:maxResults:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Int
$sel:domainName:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domainName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
engineVersion

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

instance Data.ToPath ListInstanceTypeDetails where
  toPath :: ListInstanceTypeDetails -> ByteString
toPath ListInstanceTypeDetails' {Maybe Int
Maybe Text
Text
engineVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:engineVersion:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Text
$sel:nextToken:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
$sel:maxResults:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Int
$sel:domainName:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2021-01-01/opensearch/instanceTypeDetails/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
engineVersion
      ]

instance Data.ToQuery ListInstanceTypeDetails where
  toQuery :: ListInstanceTypeDetails -> QueryString
toQuery ListInstanceTypeDetails' {Maybe Int
Maybe Text
Text
engineVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:engineVersion:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Text
$sel:nextToken:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
$sel:maxResults:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Int
$sel:domainName:ListInstanceTypeDetails' :: ListInstanceTypeDetails -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"domainName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainName,
        ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | /See:/ 'newListInstanceTypeDetailsResponse' smart constructor.
data ListInstanceTypeDetailsResponse = ListInstanceTypeDetailsResponse'
  { -- | Lists all supported instance types and features for the given OpenSearch
    -- or Elasticsearch version.
    ListInstanceTypeDetailsResponse -> Maybe [InstanceTypeDetails]
instanceTypeDetails :: Prelude.Maybe [InstanceTypeDetails],
    -- | When @nextToken@ is returned, there are more results available. The
    -- value of @nextToken@ is a unique pagination token for each page. Make
    -- the call again using the returned token to retrieve the next page.
    ListInstanceTypeDetailsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListInstanceTypeDetailsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListInstanceTypeDetailsResponse
-> ListInstanceTypeDetailsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListInstanceTypeDetailsResponse
-> ListInstanceTypeDetailsResponse -> Bool
$c/= :: ListInstanceTypeDetailsResponse
-> ListInstanceTypeDetailsResponse -> Bool
== :: ListInstanceTypeDetailsResponse
-> ListInstanceTypeDetailsResponse -> Bool
$c== :: ListInstanceTypeDetailsResponse
-> ListInstanceTypeDetailsResponse -> Bool
Prelude.Eq, ReadPrec [ListInstanceTypeDetailsResponse]
ReadPrec ListInstanceTypeDetailsResponse
Int -> ReadS ListInstanceTypeDetailsResponse
ReadS [ListInstanceTypeDetailsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListInstanceTypeDetailsResponse]
$creadListPrec :: ReadPrec [ListInstanceTypeDetailsResponse]
readPrec :: ReadPrec ListInstanceTypeDetailsResponse
$creadPrec :: ReadPrec ListInstanceTypeDetailsResponse
readList :: ReadS [ListInstanceTypeDetailsResponse]
$creadList :: ReadS [ListInstanceTypeDetailsResponse]
readsPrec :: Int -> ReadS ListInstanceTypeDetailsResponse
$creadsPrec :: Int -> ReadS ListInstanceTypeDetailsResponse
Prelude.Read, Int -> ListInstanceTypeDetailsResponse -> ShowS
[ListInstanceTypeDetailsResponse] -> ShowS
ListInstanceTypeDetailsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListInstanceTypeDetailsResponse] -> ShowS
$cshowList :: [ListInstanceTypeDetailsResponse] -> ShowS
show :: ListInstanceTypeDetailsResponse -> String
$cshow :: ListInstanceTypeDetailsResponse -> String
showsPrec :: Int -> ListInstanceTypeDetailsResponse -> ShowS
$cshowsPrec :: Int -> ListInstanceTypeDetailsResponse -> ShowS
Prelude.Show, forall x.
Rep ListInstanceTypeDetailsResponse x
-> ListInstanceTypeDetailsResponse
forall x.
ListInstanceTypeDetailsResponse
-> Rep ListInstanceTypeDetailsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListInstanceTypeDetailsResponse x
-> ListInstanceTypeDetailsResponse
$cfrom :: forall x.
ListInstanceTypeDetailsResponse
-> Rep ListInstanceTypeDetailsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListInstanceTypeDetailsResponse' 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:
--
-- 'instanceTypeDetails', 'listInstanceTypeDetailsResponse_instanceTypeDetails' - Lists all supported instance types and features for the given OpenSearch
-- or Elasticsearch version.
--
-- 'nextToken', 'listInstanceTypeDetailsResponse_nextToken' - When @nextToken@ is returned, there are more results available. The
-- value of @nextToken@ is a unique pagination token for each page. Make
-- the call again using the returned token to retrieve the next page.
--
-- 'httpStatus', 'listInstanceTypeDetailsResponse_httpStatus' - The response's http status code.
newListInstanceTypeDetailsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListInstanceTypeDetailsResponse
newListInstanceTypeDetailsResponse :: Int -> ListInstanceTypeDetailsResponse
newListInstanceTypeDetailsResponse Int
pHttpStatus_ =
  ListInstanceTypeDetailsResponse'
    { $sel:instanceTypeDetails:ListInstanceTypeDetailsResponse' :: Maybe [InstanceTypeDetails]
instanceTypeDetails =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListInstanceTypeDetailsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListInstanceTypeDetailsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Lists all supported instance types and features for the given OpenSearch
-- or Elasticsearch version.
listInstanceTypeDetailsResponse_instanceTypeDetails :: Lens.Lens' ListInstanceTypeDetailsResponse (Prelude.Maybe [InstanceTypeDetails])
listInstanceTypeDetailsResponse_instanceTypeDetails :: Lens' ListInstanceTypeDetailsResponse (Maybe [InstanceTypeDetails])
listInstanceTypeDetailsResponse_instanceTypeDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetailsResponse' {Maybe [InstanceTypeDetails]
instanceTypeDetails :: Maybe [InstanceTypeDetails]
$sel:instanceTypeDetails:ListInstanceTypeDetailsResponse' :: ListInstanceTypeDetailsResponse -> Maybe [InstanceTypeDetails]
instanceTypeDetails} -> Maybe [InstanceTypeDetails]
instanceTypeDetails) (\s :: ListInstanceTypeDetailsResponse
s@ListInstanceTypeDetailsResponse' {} Maybe [InstanceTypeDetails]
a -> ListInstanceTypeDetailsResponse
s {$sel:instanceTypeDetails:ListInstanceTypeDetailsResponse' :: Maybe [InstanceTypeDetails]
instanceTypeDetails = Maybe [InstanceTypeDetails]
a} :: ListInstanceTypeDetailsResponse) 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

-- | When @nextToken@ is returned, there are more results available. The
-- value of @nextToken@ is a unique pagination token for each page. Make
-- the call again using the returned token to retrieve the next page.
listInstanceTypeDetailsResponse_nextToken :: Lens.Lens' ListInstanceTypeDetailsResponse (Prelude.Maybe Prelude.Text)
listInstanceTypeDetailsResponse_nextToken :: Lens' ListInstanceTypeDetailsResponse (Maybe Text)
listInstanceTypeDetailsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceTypeDetailsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListInstanceTypeDetailsResponse' :: ListInstanceTypeDetailsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListInstanceTypeDetailsResponse
s@ListInstanceTypeDetailsResponse' {} Maybe Text
a -> ListInstanceTypeDetailsResponse
s {$sel:nextToken:ListInstanceTypeDetailsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListInstanceTypeDetailsResponse)

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

instance
  Prelude.NFData
    ListInstanceTypeDetailsResponse
  where
  rnf :: ListInstanceTypeDetailsResponse -> ()
rnf ListInstanceTypeDetailsResponse' {Int
Maybe [InstanceTypeDetails]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
instanceTypeDetails :: Maybe [InstanceTypeDetails]
$sel:httpStatus:ListInstanceTypeDetailsResponse' :: ListInstanceTypeDetailsResponse -> Int
$sel:nextToken:ListInstanceTypeDetailsResponse' :: ListInstanceTypeDetailsResponse -> Maybe Text
$sel:instanceTypeDetails:ListInstanceTypeDetailsResponse' :: ListInstanceTypeDetailsResponse -> Maybe [InstanceTypeDetails]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [InstanceTypeDetails]
instanceTypeDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus