{-# 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.CloudFormation.ListTypeVersions
-- 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 summary information about the versions of an extension.
module Amazonka.CloudFormation.ListTypeVersions
  ( -- * Creating a Request
    ListTypeVersions (..),
    newListTypeVersions,

    -- * Request Lenses
    listTypeVersions_arn,
    listTypeVersions_deprecatedStatus,
    listTypeVersions_maxResults,
    listTypeVersions_nextToken,
    listTypeVersions_publisherId,
    listTypeVersions_type,
    listTypeVersions_typeName,

    -- * Destructuring the Response
    ListTypeVersionsResponse (..),
    newListTypeVersionsResponse,

    -- * Response Lenses
    listTypeVersionsResponse_nextToken,
    listTypeVersionsResponse_typeVersionSummaries,
    listTypeVersionsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListTypeVersions' smart constructor.
data ListTypeVersions = ListTypeVersions'
  { -- | The Amazon Resource Name (ARN) of the extension for which you want
    -- version summary information.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    ListTypeVersions -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The deprecation status of the extension versions that you want to get
    -- summary information about.
    --
    -- Valid values include:
    --
    -- -   @LIVE@: The extension version is registered and can be used in
    --     CloudFormation operations, dependent on its provisioning behavior
    --     and visibility scope.
    --
    -- -   @DEPRECATED@: The extension version has been deregistered and can no
    --     longer be used in CloudFormation operations.
    --
    -- The default is @LIVE@.
    ListTypeVersions -> Maybe DeprecatedStatus
deprecatedStatus :: Prelude.Maybe DeprecatedStatus,
    -- | The maximum number of results to be returned with a single call. If the
    -- number of available results exceeds this maximum, the response includes
    -- a @NextToken@ value that you can assign to the @NextToken@ request
    -- parameter to get the next set of results.
    ListTypeVersions -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | If the previous paginated request didn\'t return all of the remaining
    -- results, the response object\'s @NextToken@ parameter value is set to a
    -- token. To retrieve the next set of results, call this action again and
    -- assign that token to the request object\'s @NextToken@ parameter. If
    -- there are no remaining results, the previous response object\'s
    -- @NextToken@ parameter is set to @null@.
    ListTypeVersions -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The publisher ID of the extension publisher.
    --
    -- Extensions published by Amazon aren\'t assigned a publisher ID.
    ListTypeVersions -> Maybe Text
publisherId :: Prelude.Maybe Prelude.Text,
    -- | The kind of the extension.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    ListTypeVersions -> Maybe RegistryType
type' :: Prelude.Maybe RegistryType,
    -- | The name of the extension for which you want version summary
    -- information.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    ListTypeVersions -> Maybe Text
typeName :: Prelude.Maybe Prelude.Text
  }
  deriving (ListTypeVersions -> ListTypeVersions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTypeVersions -> ListTypeVersions -> Bool
$c/= :: ListTypeVersions -> ListTypeVersions -> Bool
== :: ListTypeVersions -> ListTypeVersions -> Bool
$c== :: ListTypeVersions -> ListTypeVersions -> Bool
Prelude.Eq, ReadPrec [ListTypeVersions]
ReadPrec ListTypeVersions
Int -> ReadS ListTypeVersions
ReadS [ListTypeVersions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTypeVersions]
$creadListPrec :: ReadPrec [ListTypeVersions]
readPrec :: ReadPrec ListTypeVersions
$creadPrec :: ReadPrec ListTypeVersions
readList :: ReadS [ListTypeVersions]
$creadList :: ReadS [ListTypeVersions]
readsPrec :: Int -> ReadS ListTypeVersions
$creadsPrec :: Int -> ReadS ListTypeVersions
Prelude.Read, Int -> ListTypeVersions -> ShowS
[ListTypeVersions] -> ShowS
ListTypeVersions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTypeVersions] -> ShowS
$cshowList :: [ListTypeVersions] -> ShowS
show :: ListTypeVersions -> String
$cshow :: ListTypeVersions -> String
showsPrec :: Int -> ListTypeVersions -> ShowS
$cshowsPrec :: Int -> ListTypeVersions -> ShowS
Prelude.Show, forall x. Rep ListTypeVersions x -> ListTypeVersions
forall x. ListTypeVersions -> Rep ListTypeVersions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListTypeVersions x -> ListTypeVersions
$cfrom :: forall x. ListTypeVersions -> Rep ListTypeVersions x
Prelude.Generic)

-- |
-- Create a value of 'ListTypeVersions' 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:
--
-- 'arn', 'listTypeVersions_arn' - The Amazon Resource Name (ARN) of the extension for which you want
-- version summary information.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
--
-- 'deprecatedStatus', 'listTypeVersions_deprecatedStatus' - The deprecation status of the extension versions that you want to get
-- summary information about.
--
-- Valid values include:
--
-- -   @LIVE@: The extension version is registered and can be used in
--     CloudFormation operations, dependent on its provisioning behavior
--     and visibility scope.
--
-- -   @DEPRECATED@: The extension version has been deregistered and can no
--     longer be used in CloudFormation operations.
--
-- The default is @LIVE@.
--
-- 'maxResults', 'listTypeVersions_maxResults' - The maximum number of results to be returned with a single call. If the
-- number of available results exceeds this maximum, the response includes
-- a @NextToken@ value that you can assign to the @NextToken@ request
-- parameter to get the next set of results.
--
-- 'nextToken', 'listTypeVersions_nextToken' - If the previous paginated request didn\'t return all of the remaining
-- results, the response object\'s @NextToken@ parameter value is set to a
-- token. To retrieve the next set of results, call this action again and
-- assign that token to the request object\'s @NextToken@ parameter. If
-- there are no remaining results, the previous response object\'s
-- @NextToken@ parameter is set to @null@.
--
-- 'publisherId', 'listTypeVersions_publisherId' - The publisher ID of the extension publisher.
--
-- Extensions published by Amazon aren\'t assigned a publisher ID.
--
-- 'type'', 'listTypeVersions_type' - The kind of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
--
-- 'typeName', 'listTypeVersions_typeName' - The name of the extension for which you want version summary
-- information.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
newListTypeVersions ::
  ListTypeVersions
newListTypeVersions :: ListTypeVersions
newListTypeVersions =
  ListTypeVersions'
    { $sel:arn:ListTypeVersions' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:deprecatedStatus:ListTypeVersions' :: Maybe DeprecatedStatus
deprecatedStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListTypeVersions' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListTypeVersions' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:publisherId:ListTypeVersions' :: Maybe Text
publisherId = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ListTypeVersions' :: Maybe RegistryType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:typeName:ListTypeVersions' :: Maybe Text
typeName = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the extension for which you want
-- version summary information.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
listTypeVersions_arn :: Lens.Lens' ListTypeVersions (Prelude.Maybe Prelude.Text)
listTypeVersions_arn :: Lens' ListTypeVersions (Maybe Text)
listTypeVersions_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe Text
arn :: Maybe Text
$sel:arn:ListTypeVersions' :: ListTypeVersions -> Maybe Text
arn} -> Maybe Text
arn) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe Text
a -> ListTypeVersions
s {$sel:arn:ListTypeVersions' :: Maybe Text
arn = Maybe Text
a} :: ListTypeVersions)

-- | The deprecation status of the extension versions that you want to get
-- summary information about.
--
-- Valid values include:
--
-- -   @LIVE@: The extension version is registered and can be used in
--     CloudFormation operations, dependent on its provisioning behavior
--     and visibility scope.
--
-- -   @DEPRECATED@: The extension version has been deregistered and can no
--     longer be used in CloudFormation operations.
--
-- The default is @LIVE@.
listTypeVersions_deprecatedStatus :: Lens.Lens' ListTypeVersions (Prelude.Maybe DeprecatedStatus)
listTypeVersions_deprecatedStatus :: Lens' ListTypeVersions (Maybe DeprecatedStatus)
listTypeVersions_deprecatedStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe DeprecatedStatus
deprecatedStatus :: Maybe DeprecatedStatus
$sel:deprecatedStatus:ListTypeVersions' :: ListTypeVersions -> Maybe DeprecatedStatus
deprecatedStatus} -> Maybe DeprecatedStatus
deprecatedStatus) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe DeprecatedStatus
a -> ListTypeVersions
s {$sel:deprecatedStatus:ListTypeVersions' :: Maybe DeprecatedStatus
deprecatedStatus = Maybe DeprecatedStatus
a} :: ListTypeVersions)

-- | The maximum number of results to be returned with a single call. If the
-- number of available results exceeds this maximum, the response includes
-- a @NextToken@ value that you can assign to the @NextToken@ request
-- parameter to get the next set of results.
listTypeVersions_maxResults :: Lens.Lens' ListTypeVersions (Prelude.Maybe Prelude.Natural)
listTypeVersions_maxResults :: Lens' ListTypeVersions (Maybe Natural)
listTypeVersions_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListTypeVersions' :: ListTypeVersions -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe Natural
a -> ListTypeVersions
s {$sel:maxResults:ListTypeVersions' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListTypeVersions)

-- | If the previous paginated request didn\'t return all of the remaining
-- results, the response object\'s @NextToken@ parameter value is set to a
-- token. To retrieve the next set of results, call this action again and
-- assign that token to the request object\'s @NextToken@ parameter. If
-- there are no remaining results, the previous response object\'s
-- @NextToken@ parameter is set to @null@.
listTypeVersions_nextToken :: Lens.Lens' ListTypeVersions (Prelude.Maybe Prelude.Text)
listTypeVersions_nextToken :: Lens' ListTypeVersions (Maybe Text)
listTypeVersions_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListTypeVersions' :: ListTypeVersions -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe Text
a -> ListTypeVersions
s {$sel:nextToken:ListTypeVersions' :: Maybe Text
nextToken = Maybe Text
a} :: ListTypeVersions)

-- | The publisher ID of the extension publisher.
--
-- Extensions published by Amazon aren\'t assigned a publisher ID.
listTypeVersions_publisherId :: Lens.Lens' ListTypeVersions (Prelude.Maybe Prelude.Text)
listTypeVersions_publisherId :: Lens' ListTypeVersions (Maybe Text)
listTypeVersions_publisherId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe Text
publisherId :: Maybe Text
$sel:publisherId:ListTypeVersions' :: ListTypeVersions -> Maybe Text
publisherId} -> Maybe Text
publisherId) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe Text
a -> ListTypeVersions
s {$sel:publisherId:ListTypeVersions' :: Maybe Text
publisherId = Maybe Text
a} :: ListTypeVersions)

-- | The kind of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
listTypeVersions_type :: Lens.Lens' ListTypeVersions (Prelude.Maybe RegistryType)
listTypeVersions_type :: Lens' ListTypeVersions (Maybe RegistryType)
listTypeVersions_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe RegistryType
type' :: Maybe RegistryType
$sel:type':ListTypeVersions' :: ListTypeVersions -> Maybe RegistryType
type'} -> Maybe RegistryType
type') (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe RegistryType
a -> ListTypeVersions
s {$sel:type':ListTypeVersions' :: Maybe RegistryType
type' = Maybe RegistryType
a} :: ListTypeVersions)

-- | The name of the extension for which you want version summary
-- information.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
listTypeVersions_typeName :: Lens.Lens' ListTypeVersions (Prelude.Maybe Prelude.Text)
listTypeVersions_typeName :: Lens' ListTypeVersions (Maybe Text)
listTypeVersions_typeName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersions' {Maybe Text
typeName :: Maybe Text
$sel:typeName:ListTypeVersions' :: ListTypeVersions -> Maybe Text
typeName} -> Maybe Text
typeName) (\s :: ListTypeVersions
s@ListTypeVersions' {} Maybe Text
a -> ListTypeVersions
s {$sel:typeName:ListTypeVersions' :: Maybe Text
typeName = Maybe Text
a} :: ListTypeVersions)

instance Core.AWSRequest ListTypeVersions where
  type
    AWSResponse ListTypeVersions =
      ListTypeVersionsResponse
  request :: (Service -> Service)
-> ListTypeVersions -> Request ListTypeVersions
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 ListTypeVersions
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse ListTypeVersions)))
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
"ListTypeVersionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [TypeVersionSummary] -> Int -> ListTypeVersionsResponse
ListTypeVersionsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TypeVersionSummaries"
                            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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ListTypeVersions where
  hashWithSalt :: Int -> ListTypeVersions -> Int
hashWithSalt Int
_salt ListTypeVersions' {Maybe Natural
Maybe Text
Maybe DeprecatedStatus
Maybe RegistryType
typeName :: Maybe Text
type' :: Maybe RegistryType
publisherId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
deprecatedStatus :: Maybe DeprecatedStatus
arn :: Maybe Text
$sel:typeName:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:type':ListTypeVersions' :: ListTypeVersions -> Maybe RegistryType
$sel:publisherId:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:nextToken:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:maxResults:ListTypeVersions' :: ListTypeVersions -> Maybe Natural
$sel:deprecatedStatus:ListTypeVersions' :: ListTypeVersions -> Maybe DeprecatedStatus
$sel:arn:ListTypeVersions' :: ListTypeVersions -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeprecatedStatus
deprecatedStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
publisherId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RegistryType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
typeName

instance Prelude.NFData ListTypeVersions where
  rnf :: ListTypeVersions -> ()
rnf ListTypeVersions' {Maybe Natural
Maybe Text
Maybe DeprecatedStatus
Maybe RegistryType
typeName :: Maybe Text
type' :: Maybe RegistryType
publisherId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
deprecatedStatus :: Maybe DeprecatedStatus
arn :: Maybe Text
$sel:typeName:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:type':ListTypeVersions' :: ListTypeVersions -> Maybe RegistryType
$sel:publisherId:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:nextToken:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:maxResults:ListTypeVersions' :: ListTypeVersions -> Maybe Natural
$sel:deprecatedStatus:ListTypeVersions' :: ListTypeVersions -> Maybe DeprecatedStatus
$sel:arn:ListTypeVersions' :: ListTypeVersions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeprecatedStatus
deprecatedStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
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 Maybe Text
publisherId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RegistryType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
typeName

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

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

instance Data.ToQuery ListTypeVersions where
  toQuery :: ListTypeVersions -> QueryString
toQuery ListTypeVersions' {Maybe Natural
Maybe Text
Maybe DeprecatedStatus
Maybe RegistryType
typeName :: Maybe Text
type' :: Maybe RegistryType
publisherId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
deprecatedStatus :: Maybe DeprecatedStatus
arn :: Maybe Text
$sel:typeName:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:type':ListTypeVersions' :: ListTypeVersions -> Maybe RegistryType
$sel:publisherId:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:nextToken:ListTypeVersions' :: ListTypeVersions -> Maybe Text
$sel:maxResults:ListTypeVersions' :: ListTypeVersions -> Maybe Natural
$sel:deprecatedStatus:ListTypeVersions' :: ListTypeVersions -> Maybe DeprecatedStatus
$sel:arn:ListTypeVersions' :: ListTypeVersions -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ListTypeVersions" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-05-15" :: Prelude.ByteString),
        ByteString
"Arn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
arn,
        ByteString
"DeprecatedStatus" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DeprecatedStatus
deprecatedStatus,
        ByteString
"MaxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"PublisherId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
publisherId,
        ByteString
"Type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe RegistryType
type',
        ByteString
"TypeName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
typeName
      ]

-- | /See:/ 'newListTypeVersionsResponse' smart constructor.
data ListTypeVersionsResponse = ListTypeVersionsResponse'
  { -- | If the request doesn\'t return all of the remaining results, @NextToken@
    -- is set to a token. To retrieve the next set of results, call this action
    -- again and assign that token to the request object\'s @NextToken@
    -- parameter. If the request returns all results, @NextToken@ is set to
    -- @null@.
    ListTypeVersionsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of @TypeVersionSummary@ structures that contain information about
    -- the specified extension\'s versions.
    ListTypeVersionsResponse -> Maybe [TypeVersionSummary]
typeVersionSummaries :: Prelude.Maybe [TypeVersionSummary],
    -- | The response's http status code.
    ListTypeVersionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListTypeVersionsResponse -> ListTypeVersionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTypeVersionsResponse -> ListTypeVersionsResponse -> Bool
$c/= :: ListTypeVersionsResponse -> ListTypeVersionsResponse -> Bool
== :: ListTypeVersionsResponse -> ListTypeVersionsResponse -> Bool
$c== :: ListTypeVersionsResponse -> ListTypeVersionsResponse -> Bool
Prelude.Eq, ReadPrec [ListTypeVersionsResponse]
ReadPrec ListTypeVersionsResponse
Int -> ReadS ListTypeVersionsResponse
ReadS [ListTypeVersionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTypeVersionsResponse]
$creadListPrec :: ReadPrec [ListTypeVersionsResponse]
readPrec :: ReadPrec ListTypeVersionsResponse
$creadPrec :: ReadPrec ListTypeVersionsResponse
readList :: ReadS [ListTypeVersionsResponse]
$creadList :: ReadS [ListTypeVersionsResponse]
readsPrec :: Int -> ReadS ListTypeVersionsResponse
$creadsPrec :: Int -> ReadS ListTypeVersionsResponse
Prelude.Read, Int -> ListTypeVersionsResponse -> ShowS
[ListTypeVersionsResponse] -> ShowS
ListTypeVersionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTypeVersionsResponse] -> ShowS
$cshowList :: [ListTypeVersionsResponse] -> ShowS
show :: ListTypeVersionsResponse -> String
$cshow :: ListTypeVersionsResponse -> String
showsPrec :: Int -> ListTypeVersionsResponse -> ShowS
$cshowsPrec :: Int -> ListTypeVersionsResponse -> ShowS
Prelude.Show, forall x.
Rep ListTypeVersionsResponse x -> ListTypeVersionsResponse
forall x.
ListTypeVersionsResponse -> Rep ListTypeVersionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListTypeVersionsResponse x -> ListTypeVersionsResponse
$cfrom :: forall x.
ListTypeVersionsResponse -> Rep ListTypeVersionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListTypeVersionsResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'listTypeVersionsResponse_nextToken' - If the request doesn\'t return all of the remaining results, @NextToken@
-- is set to a token. To retrieve the next set of results, call this action
-- again and assign that token to the request object\'s @NextToken@
-- parameter. If the request returns all results, @NextToken@ is set to
-- @null@.
--
-- 'typeVersionSummaries', 'listTypeVersionsResponse_typeVersionSummaries' - A list of @TypeVersionSummary@ structures that contain information about
-- the specified extension\'s versions.
--
-- 'httpStatus', 'listTypeVersionsResponse_httpStatus' - The response's http status code.
newListTypeVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListTypeVersionsResponse
newListTypeVersionsResponse :: Int -> ListTypeVersionsResponse
newListTypeVersionsResponse Int
pHttpStatus_ =
  ListTypeVersionsResponse'
    { $sel:nextToken:ListTypeVersionsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:typeVersionSummaries:ListTypeVersionsResponse' :: Maybe [TypeVersionSummary]
typeVersionSummaries = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListTypeVersionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | If the request doesn\'t return all of the remaining results, @NextToken@
-- is set to a token. To retrieve the next set of results, call this action
-- again and assign that token to the request object\'s @NextToken@
-- parameter. If the request returns all results, @NextToken@ is set to
-- @null@.
listTypeVersionsResponse_nextToken :: Lens.Lens' ListTypeVersionsResponse (Prelude.Maybe Prelude.Text)
listTypeVersionsResponse_nextToken :: Lens' ListTypeVersionsResponse (Maybe Text)
listTypeVersionsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersionsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListTypeVersionsResponse' :: ListTypeVersionsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListTypeVersionsResponse
s@ListTypeVersionsResponse' {} Maybe Text
a -> ListTypeVersionsResponse
s {$sel:nextToken:ListTypeVersionsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListTypeVersionsResponse)

-- | A list of @TypeVersionSummary@ structures that contain information about
-- the specified extension\'s versions.
listTypeVersionsResponse_typeVersionSummaries :: Lens.Lens' ListTypeVersionsResponse (Prelude.Maybe [TypeVersionSummary])
listTypeVersionsResponse_typeVersionSummaries :: Lens' ListTypeVersionsResponse (Maybe [TypeVersionSummary])
listTypeVersionsResponse_typeVersionSummaries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersionsResponse' {Maybe [TypeVersionSummary]
typeVersionSummaries :: Maybe [TypeVersionSummary]
$sel:typeVersionSummaries:ListTypeVersionsResponse' :: ListTypeVersionsResponse -> Maybe [TypeVersionSummary]
typeVersionSummaries} -> Maybe [TypeVersionSummary]
typeVersionSummaries) (\s :: ListTypeVersionsResponse
s@ListTypeVersionsResponse' {} Maybe [TypeVersionSummary]
a -> ListTypeVersionsResponse
s {$sel:typeVersionSummaries:ListTypeVersionsResponse' :: Maybe [TypeVersionSummary]
typeVersionSummaries = Maybe [TypeVersionSummary]
a} :: ListTypeVersionsResponse) 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.
listTypeVersionsResponse_httpStatus :: Lens.Lens' ListTypeVersionsResponse Prelude.Int
listTypeVersionsResponse_httpStatus :: Lens' ListTypeVersionsResponse Int
listTypeVersionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTypeVersionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListTypeVersionsResponse' :: ListTypeVersionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListTypeVersionsResponse
s@ListTypeVersionsResponse' {} Int
a -> ListTypeVersionsResponse
s {$sel:httpStatus:ListTypeVersionsResponse' :: Int
httpStatus = Int
a} :: ListTypeVersionsResponse)

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