{-# 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.DescribeType
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns detailed information about an extension that has been
-- registered.
--
-- If you specify a @VersionId@, @DescribeType@ returns information about
-- that specific extension version. Otherwise, it returns information about
-- the default extension version.
module Amazonka.CloudFormation.DescribeType
  ( -- * Creating a Request
    DescribeType (..),
    newDescribeType,

    -- * Request Lenses
    describeType_versionId,
    describeType_typeName,
    describeType_arn,
    describeType_publicVersionNumber,
    describeType_type,
    describeType_publisherId,

    -- * Destructuring the Response
    DescribeTypeResponse (..),
    newDescribeTypeResponse,

    -- * Response Lenses
    describeTypeResponse_typeTestsStatusDescription,
    describeTypeResponse_lastUpdated,
    describeTypeResponse_typeName,
    describeTypeResponse_arn,
    describeTypeResponse_publicVersionNumber,
    describeTypeResponse_executionRoleArn,
    describeTypeResponse_autoUpdate,
    describeTypeResponse_originalTypeName,
    describeTypeResponse_visibility,
    describeTypeResponse_schema,
    describeTypeResponse_originalTypeArn,
    describeTypeResponse_defaultVersionId,
    describeTypeResponse_isActivated,
    describeTypeResponse_requiredActivatedTypes,
    describeTypeResponse_deprecatedStatus,
    describeTypeResponse_timeCreated,
    describeTypeResponse_type,
    describeTypeResponse_latestPublicVersion,
    describeTypeResponse_publisherId,
    describeTypeResponse_isDefaultVersion,
    describeTypeResponse_description,
    describeTypeResponse_sourceUrl,
    describeTypeResponse_documentationUrl,
    describeTypeResponse_configurationSchema,
    describeTypeResponse_provisioningType,
    describeTypeResponse_typeTestsStatus,
    describeTypeResponse_loggingConfig,
    describeTypeResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeType' smart constructor.
data DescribeType = DescribeType'
  { -- | The ID of a specific version of the extension. The version ID is the
    -- value at the end of the Amazon Resource Name (ARN) assigned to the
    -- extension version when it is registered.
    --
    -- If you specify a @VersionId@, @DescribeType@ returns information about
    -- that specific extension version. Otherwise, it returns information about
    -- the default extension version.
    DescribeType -> Maybe Text
versionId :: Prelude.Maybe Prelude.Text,
    -- | The name of the extension.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    DescribeType -> Maybe Text
typeName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the extension.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    DescribeType -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The version number of a public third-party extension.
    DescribeType -> Maybe Text
publicVersionNumber :: Prelude.Maybe Prelude.Text,
    -- | The kind of extension.
    --
    -- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
    DescribeType -> Maybe RegistryType
type' :: Prelude.Maybe RegistryType,
    -- | The publisher ID of the extension publisher.
    --
    -- Extensions provided by Amazon are not assigned a publisher ID.
    DescribeType -> Maybe Text
publisherId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeType -> DescribeType -> Bool
(DescribeType -> DescribeType -> Bool)
-> (DescribeType -> DescribeType -> Bool) -> Eq DescribeType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeType -> DescribeType -> Bool
$c/= :: DescribeType -> DescribeType -> Bool
== :: DescribeType -> DescribeType -> Bool
$c== :: DescribeType -> DescribeType -> Bool
Prelude.Eq, ReadPrec [DescribeType]
ReadPrec DescribeType
Int -> ReadS DescribeType
ReadS [DescribeType]
(Int -> ReadS DescribeType)
-> ReadS [DescribeType]
-> ReadPrec DescribeType
-> ReadPrec [DescribeType]
-> Read DescribeType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeType]
$creadListPrec :: ReadPrec [DescribeType]
readPrec :: ReadPrec DescribeType
$creadPrec :: ReadPrec DescribeType
readList :: ReadS [DescribeType]
$creadList :: ReadS [DescribeType]
readsPrec :: Int -> ReadS DescribeType
$creadsPrec :: Int -> ReadS DescribeType
Prelude.Read, Int -> DescribeType -> ShowS
[DescribeType] -> ShowS
DescribeType -> String
(Int -> DescribeType -> ShowS)
-> (DescribeType -> String)
-> ([DescribeType] -> ShowS)
-> Show DescribeType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeType] -> ShowS
$cshowList :: [DescribeType] -> ShowS
show :: DescribeType -> String
$cshow :: DescribeType -> String
showsPrec :: Int -> DescribeType -> ShowS
$cshowsPrec :: Int -> DescribeType -> ShowS
Prelude.Show, (forall x. DescribeType -> Rep DescribeType x)
-> (forall x. Rep DescribeType x -> DescribeType)
-> Generic DescribeType
forall x. Rep DescribeType x -> DescribeType
forall x. DescribeType -> Rep DescribeType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeType x -> DescribeType
$cfrom :: forall x. DescribeType -> Rep DescribeType x
Prelude.Generic)

-- |
-- Create a value of 'DescribeType' 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:
--
-- 'versionId', 'describeType_versionId' - The ID of a specific version of the extension. The version ID is the
-- value at the end of the Amazon Resource Name (ARN) assigned to the
-- extension version when it is registered.
--
-- If you specify a @VersionId@, @DescribeType@ returns information about
-- that specific extension version. Otherwise, it returns information about
-- the default extension version.
--
-- 'typeName', 'describeType_typeName' - The name of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
--
-- 'arn', 'describeType_arn' - The Amazon Resource Name (ARN) of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
--
-- 'publicVersionNumber', 'describeType_publicVersionNumber' - The version number of a public third-party extension.
--
-- 'type'', 'describeType_type' - The kind of extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
--
-- 'publisherId', 'describeType_publisherId' - The publisher ID of the extension publisher.
--
-- Extensions provided by Amazon are not assigned a publisher ID.
newDescribeType ::
  DescribeType
newDescribeType :: DescribeType
newDescribeType =
  DescribeType' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RegistryType
-> Maybe Text
-> DescribeType
DescribeType'
    { $sel:versionId:DescribeType' :: Maybe Text
versionId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:typeName:DescribeType' :: Maybe Text
typeName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:DescribeType' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publicVersionNumber:DescribeType' :: Maybe Text
publicVersionNumber = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:type':DescribeType' :: Maybe RegistryType
type' = Maybe RegistryType
forall a. Maybe a
Prelude.Nothing,
      $sel:publisherId:DescribeType' :: Maybe Text
publisherId = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The ID of a specific version of the extension. The version ID is the
-- value at the end of the Amazon Resource Name (ARN) assigned to the
-- extension version when it is registered.
--
-- If you specify a @VersionId@, @DescribeType@ returns information about
-- that specific extension version. Otherwise, it returns information about
-- the default extension version.
describeType_versionId :: Lens.Lens' DescribeType (Prelude.Maybe Prelude.Text)
describeType_versionId :: (Maybe Text -> f (Maybe Text)) -> DescribeType -> f DescribeType
describeType_versionId = (DescribeType -> Maybe Text)
-> (DescribeType -> Maybe Text -> DescribeType)
-> Lens DescribeType DescribeType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeType' {Maybe Text
versionId :: Maybe Text
$sel:versionId:DescribeType' :: DescribeType -> Maybe Text
versionId} -> Maybe Text
versionId) (\s :: DescribeType
s@DescribeType' {} Maybe Text
a -> DescribeType
s {$sel:versionId:DescribeType' :: Maybe Text
versionId = Maybe Text
a} :: DescribeType)

-- | The name of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
describeType_typeName :: Lens.Lens' DescribeType (Prelude.Maybe Prelude.Text)
describeType_typeName :: (Maybe Text -> f (Maybe Text)) -> DescribeType -> f DescribeType
describeType_typeName = (DescribeType -> Maybe Text)
-> (DescribeType -> Maybe Text -> DescribeType)
-> Lens DescribeType DescribeType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeType' {Maybe Text
typeName :: Maybe Text
$sel:typeName:DescribeType' :: DescribeType -> Maybe Text
typeName} -> Maybe Text
typeName) (\s :: DescribeType
s@DescribeType' {} Maybe Text
a -> DescribeType
s {$sel:typeName:DescribeType' :: Maybe Text
typeName = Maybe Text
a} :: DescribeType)

-- | The Amazon Resource Name (ARN) of the extension.
--
-- Conditional: You must specify either @TypeName@ and @Type@, or @Arn@.
describeType_arn :: Lens.Lens' DescribeType (Prelude.Maybe Prelude.Text)
describeType_arn :: (Maybe Text -> f (Maybe Text)) -> DescribeType -> f DescribeType
describeType_arn = (DescribeType -> Maybe Text)
-> (DescribeType -> Maybe Text -> DescribeType)
-> Lens DescribeType DescribeType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeType' {Maybe Text
arn :: Maybe Text
$sel:arn:DescribeType' :: DescribeType -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DescribeType
s@DescribeType' {} Maybe Text
a -> DescribeType
s {$sel:arn:DescribeType' :: Maybe Text
arn = Maybe Text
a} :: DescribeType)

-- | The version number of a public third-party extension.
describeType_publicVersionNumber :: Lens.Lens' DescribeType (Prelude.Maybe Prelude.Text)
describeType_publicVersionNumber :: (Maybe Text -> f (Maybe Text)) -> DescribeType -> f DescribeType
describeType_publicVersionNumber = (DescribeType -> Maybe Text)
-> (DescribeType -> Maybe Text -> DescribeType)
-> Lens DescribeType DescribeType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeType' {Maybe Text
publicVersionNumber :: Maybe Text
$sel:publicVersionNumber:DescribeType' :: DescribeType -> Maybe Text
publicVersionNumber} -> Maybe Text
publicVersionNumber) (\s :: DescribeType
s@DescribeType' {} Maybe Text
a -> DescribeType
s {$sel:publicVersionNumber:DescribeType' :: Maybe Text
publicVersionNumber = Maybe Text
a} :: DescribeType)

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

-- | The publisher ID of the extension publisher.
--
-- Extensions provided by Amazon are not assigned a publisher ID.
describeType_publisherId :: Lens.Lens' DescribeType (Prelude.Maybe Prelude.Text)
describeType_publisherId :: (Maybe Text -> f (Maybe Text)) -> DescribeType -> f DescribeType
describeType_publisherId = (DescribeType -> Maybe Text)
-> (DescribeType -> Maybe Text -> DescribeType)
-> Lens DescribeType DescribeType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeType' {Maybe Text
publisherId :: Maybe Text
$sel:publisherId:DescribeType' :: DescribeType -> Maybe Text
publisherId} -> Maybe Text
publisherId) (\s :: DescribeType
s@DescribeType' {} Maybe Text
a -> DescribeType
s {$sel:publisherId:DescribeType' :: Maybe Text
publisherId = Maybe Text
a} :: DescribeType)

instance Core.AWSRequest DescribeType where
  type AWSResponse DescribeType = DescribeTypeResponse
  request :: DescribeType -> Request DescribeType
request = Service -> DescribeType -> Request DescribeType
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeType
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeType)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse DescribeType))
-> Logger
-> Service
-> Proxy DescribeType
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeType)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeTypeResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Visibility
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe [RequiredActivatedType]
-> Maybe DeprecatedStatus
-> Maybe ISO8601
-> Maybe RegistryType
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ProvisioningType
-> Maybe TypeTestsStatus
-> Maybe LoggingConfig
-> Int
-> DescribeTypeResponse
DescribeTypeResponse'
            (Maybe Text
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Visibility
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe [RequiredActivatedType]
 -> Maybe DeprecatedStatus
 -> Maybe ISO8601
 -> Maybe RegistryType
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ProvisioningType
 -> Maybe TypeTestsStatus
 -> Maybe LoggingConfig
 -> Int
 -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"TypeTestsStatusDescription")
            Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LastUpdated")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"TypeName")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Arn")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PublicVersionNumber")
            Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ExecutionRoleArn")
            Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AutoUpdate")
            Either
  String
  (Maybe Text
   -> Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Visibility
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"OriginalTypeName")
            Either
  String
  (Maybe Visibility
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Visibility)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Visibility)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Visibility")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Schema")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"OriginalTypeArn")
            Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DefaultVersionId")
            Either
  String
  (Maybe Bool
   -> Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe [RequiredActivatedType]
      -> Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"IsActivated")
            Either
  String
  (Maybe [RequiredActivatedType]
   -> Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe [RequiredActivatedType])
-> Either
     String
     (Maybe DeprecatedStatus
      -> Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"RequiredActivatedTypes"
                            Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [RequiredActivatedType]))
-> Either String (Maybe [RequiredActivatedType])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [RequiredActivatedType])
-> [Node] -> Either String (Maybe [RequiredActivatedType])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [RequiredActivatedType]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe DeprecatedStatus
   -> Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe DeprecatedStatus)
-> Either
     String
     (Maybe ISO8601
      -> Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe DeprecatedStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DeprecatedStatus")
            Either
  String
  (Maybe ISO8601
   -> Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe RegistryType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"TimeCreated")
            Either
  String
  (Maybe RegistryType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe RegistryType)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe RegistryType)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Type")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LatestPublicVersion")
            Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PublisherId")
            Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"IsDefaultVersion")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Description")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"SourceUrl")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DocumentationUrl")
            Either
  String
  (Maybe Text
   -> Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ProvisioningType
      -> Maybe TypeTestsStatus
      -> Maybe LoggingConfig
      -> Int
      -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ConfigurationSchema")
            Either
  String
  (Maybe ProvisioningType
   -> Maybe TypeTestsStatus
   -> Maybe LoggingConfig
   -> Int
   -> DescribeTypeResponse)
-> Either String (Maybe ProvisioningType)
-> Either
     String
     (Maybe TypeTestsStatus
      -> Maybe LoggingConfig -> Int -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ProvisioningType)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ProvisioningType")
            Either
  String
  (Maybe TypeTestsStatus
   -> Maybe LoggingConfig -> Int -> DescribeTypeResponse)
-> Either String (Maybe TypeTestsStatus)
-> Either
     String (Maybe LoggingConfig -> Int -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe TypeTestsStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"TypeTestsStatus")
            Either String (Maybe LoggingConfig -> Int -> DescribeTypeResponse)
-> Either String (Maybe LoggingConfig)
-> Either String (Int -> DescribeTypeResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe LoggingConfig)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LoggingConfig")
            Either String (Int -> DescribeTypeResponse)
-> Either String Int -> Either String DescribeTypeResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeType

instance Prelude.NFData DescribeType

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

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

instance Core.ToQuery DescribeType where
  toQuery :: DescribeType -> QueryString
toQuery DescribeType' {Maybe Text
Maybe RegistryType
publisherId :: Maybe Text
type' :: Maybe RegistryType
publicVersionNumber :: Maybe Text
arn :: Maybe Text
typeName :: Maybe Text
versionId :: Maybe Text
$sel:publisherId:DescribeType' :: DescribeType -> Maybe Text
$sel:type':DescribeType' :: DescribeType -> Maybe RegistryType
$sel:publicVersionNumber:DescribeType' :: DescribeType -> Maybe Text
$sel:arn:DescribeType' :: DescribeType -> Maybe Text
$sel:typeName:DescribeType' :: DescribeType -> Maybe Text
$sel:versionId:DescribeType' :: DescribeType -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"DescribeType" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2010-05-15" :: Prelude.ByteString),
        ByteString
"VersionId" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
versionId,
        ByteString
"TypeName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
typeName,
        ByteString
"Arn" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
arn,
        ByteString
"PublicVersionNumber" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
publicVersionNumber,
        ByteString
"Type" ByteString -> Maybe RegistryType -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe RegistryType
type',
        ByteString
"PublisherId" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
publisherId
      ]

-- | /See:/ 'newDescribeTypeResponse' smart constructor.
data DescribeTypeResponse = DescribeTypeResponse'
  { -- | The description of the test status. To return the extension test status
    -- of a specifc extension version, you must specify @VersionId@.
    --
    -- This applies only to registered private extension versions.
    -- CloudFormation does not return this information for public extensions,
    -- whether or not they are activated in your account.
    DescribeTypeResponse -> Maybe Text
typeTestsStatusDescription :: Prelude.Maybe Prelude.Text,
    -- | When the specified extension version was registered. This applies only
    -- to:
    --
    -- -   Private extensions you have registered in your account. For more
    --     information, see
    --     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
    --
    -- -   Public extensions you have activated in your account with
    --     auto-update specified. For more information, see
    --     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
    DescribeTypeResponse -> Maybe ISO8601
lastUpdated :: Prelude.Maybe Core.ISO8601,
    -- | The name of the extension.
    --
    -- If the extension is a public third-party type you have activated with a
    -- type name alias, CloudFormation returns the type name alias. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
    DescribeTypeResponse -> Maybe Text
typeName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the extension.
    DescribeTypeResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The version number of a public third-party extension.
    --
    -- This applies only if you specify a public extension you have activated
    -- in your account, or specify a public extension without specifying a
    -- version. For all other extensions, CloudFormation returns @null@.
    DescribeTypeResponse -> Maybe Text
publicVersionNumber :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the IAM execution role used to
    -- register the extension. This applies only to private extensions you have
    -- registered in your account. For more information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
    --
    -- If the registered extension calls any Amazon Web Services APIs, you must
    -- create an
    -- /<https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM execution role>/
    -- that includes the necessary permissions to call those Amazon Web
    -- Services APIs, and provision that execution role in your account.
    -- CloudFormation then assumes that execution role to provide your
    -- extension with the appropriate credentials.
    DescribeTypeResponse -> Maybe Text
executionRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Whether CloudFormation automatically updates the extension in this
    -- account and region when a new /minor/ version is published by the
    -- extension publisher. Major versions released by the publisher must be
    -- manually updated. For more information, see
    -- <AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable Activating public extensions for use in your account>
    -- in the /CloudFormation User Guide/.
    DescribeTypeResponse -> Maybe Bool
autoUpdate :: Prelude.Maybe Prelude.Bool,
    -- | For public extensions that have been activated for this account and
    -- region, the type name of the public extension.
    --
    -- If you specified a @TypeNameAlias@ when enabling the extension in this
    -- account and region, CloudFormation treats that alias as the extension\'s
    -- type name within the account and region, not the type name of the public
    -- extension. For more information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias Specifying aliases to refer to extensions>
    -- in the /CloudFormation User Guide/.
    DescribeTypeResponse -> Maybe Text
originalTypeName :: Prelude.Maybe Prelude.Text,
    -- | The scope at which the extension is visible and usable in CloudFormation
    -- operations.
    --
    -- Valid values include:
    --
    -- -   @PRIVATE@: The extension is only visible and usable within the
    --     account in which it is registered. CloudFormation marks any
    --     extensions you register as @PRIVATE@.
    --
    -- -   @PUBLIC@: The extension is publically visible and usable within any
    --     Amazon account.
    DescribeTypeResponse -> Maybe Visibility
visibility :: Prelude.Maybe Visibility,
    -- | The schema that defines the extension.
    --
    -- For more information on extension schemas, see
    -- <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html Resource Provider Schema>
    -- in the /CloudFormation CLI User Guide/.
    DescribeTypeResponse -> Maybe Text
schema :: Prelude.Maybe Prelude.Text,
    -- | For public extensions that have been activated for this account and
    -- region, the Amazon Resource Name (ARN) of the public extension.
    DescribeTypeResponse -> Maybe Text
originalTypeArn :: Prelude.Maybe Prelude.Text,
    -- | The ID of the default version of the extension. The default version is
    -- used when the extension version is not specified.
    --
    -- This applies only to private extensions you have registered in your
    -- account. For public extensions, both those provided by Amazon and
    -- published by third parties, CloudFormation returns @null@. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
    --
    -- To set the default version of an extension, use
    -- @ SetTypeDefaultVersion @.
    DescribeTypeResponse -> Maybe Text
defaultVersionId :: Prelude.Maybe Prelude.Text,
    -- | Whether or not the extension is activated in the account and region.
    --
    -- This only applies to public third-party extensions. For all other
    -- extensions, CloudFormation returns @null@.
    DescribeTypeResponse -> Maybe Bool
isActivated :: Prelude.Maybe Prelude.Bool,
    -- | For extensions that are modules, the public third-party extensions that
    -- must be activated in your account in order for the module itself to be
    -- activated.
    DescribeTypeResponse -> Maybe [RequiredActivatedType]
requiredActivatedTypes :: Prelude.Maybe [RequiredActivatedType],
    -- | The deprecation status of the extension version.
    --
    -- Valid values include:
    --
    -- -   @LIVE@: The extension is activated or registered and can be used in
    --     CloudFormation operations, dependent on its provisioning behavior
    --     and visibility scope.
    --
    -- -   @DEPRECATED@: The extension has been deactivated or deregistered and
    --     can no longer be used in CloudFormation operations.
    --
    -- For public third-party extensions, CloudFormation returns @null@.
    DescribeTypeResponse -> Maybe DeprecatedStatus
deprecatedStatus :: Prelude.Maybe DeprecatedStatus,
    -- | When the specified private extension version was registered or activated
    -- in your account.
    DescribeTypeResponse -> Maybe ISO8601
timeCreated :: Prelude.Maybe Core.ISO8601,
    -- | The kind of extension.
    DescribeTypeResponse -> Maybe RegistryType
type' :: Prelude.Maybe RegistryType,
    -- | The latest version of a public extension /that is available/ for use.
    --
    -- This only applies if you specify a public extension, and you do not
    -- specify a version. For all other requests, CloudFormation returns
    -- @null@.
    DescribeTypeResponse -> Maybe Text
latestPublicVersion :: Prelude.Maybe Prelude.Text,
    -- | The publisher ID of the extension publisher.
    --
    -- This applies only to public third-party extensions. For private
    -- registered extensions, and extensions provided by Amazon, CloudFormation
    -- returns @null@.
    DescribeTypeResponse -> Maybe Text
publisherId :: Prelude.Maybe Prelude.Text,
    -- | Whether the specified extension version is set as the default version.
    --
    -- This applies only to private extensions you have registered in your
    -- account, and extensions published by Amazon. For public third-party
    -- extensions, whether or not they are activated in your account,
    -- CloudFormation returns @null@.
    DescribeTypeResponse -> Maybe Bool
isDefaultVersion :: Prelude.Maybe Prelude.Bool,
    -- | The description of the extension.
    DescribeTypeResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The URL of the source code for the extension.
    DescribeTypeResponse -> Maybe Text
sourceUrl :: Prelude.Maybe Prelude.Text,
    -- | The URL of a page providing detailed documentation for this extension.
    DescribeTypeResponse -> Maybe Text
documentationUrl :: Prelude.Maybe Prelude.Text,
    -- | A JSON string that represent the current configuration data for the
    -- extension in this account and region.
    --
    -- To set the configuration data for an extension, use
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html SetTypeConfiguration>.
    -- For more information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-register.html#registry-set-configuration Configuring extensions at the account level>
    -- in the /CloudFormation User Guide/.
    DescribeTypeResponse -> Maybe Text
configurationSchema :: Prelude.Maybe Prelude.Text,
    -- | For resource type extensions, the provisioning behavior of the resource
    -- type. CloudFormation determines the provisioning type during
    -- registration, based on the types of handlers in the schema handler
    -- package submitted.
    --
    -- Valid values include:
    --
    -- -   @FULLY_MUTABLE@: The resource type includes an update handler to
    --     process updates to the type during stack update operations.
    --
    -- -   @IMMUTABLE@: The resource type does not include an update handler,
    --     so the type cannot be updated and must instead be replaced during
    --     stack update operations.
    --
    -- -   @NON_PROVISIONABLE@: The resource type does not include all of the
    --     following handlers, and therefore cannot actually be provisioned.
    --
    --     -   create
    --
    --     -   read
    --
    --     -   delete
    DescribeTypeResponse -> Maybe ProvisioningType
provisioningType :: Prelude.Maybe ProvisioningType,
    -- | The contract test status of the registered extension version. To return
    -- the extension test status of a specifc extension version, you must
    -- specify @VersionId@.
    --
    -- This applies only to registered private extension versions.
    -- CloudFormation does not return this information for public extensions,
    -- whether or not they are activated in your account.
    --
    -- -   @PASSED@: The extension has passed all its contract tests.
    --
    --     An extension must have a test status of @PASSED@ before it can be
    --     published. For more information, see
    --     <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html Publishing extensions to make them available for public use>
    --     in the /CloudFormation Command Line Interface User Guide/.
    --
    -- -   @FAILED@: The extension has failed one or more contract tests.
    --
    -- -   @IN_PROGRESS@: Contract tests are currently being performed on the
    --     extension.
    --
    -- -   @NOT_TESTED@: Contract tests have not been performed on the
    --     extension.
    DescribeTypeResponse -> Maybe TypeTestsStatus
typeTestsStatus :: Prelude.Maybe TypeTestsStatus,
    -- | Contains logging configuration information for private extensions. This
    -- applies only to private extensions you have registered in your account.
    -- For public extensions, both those provided by Amazon and published by
    -- third parties, CloudFormation returns @null@. For more information, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
    DescribeTypeResponse -> Maybe LoggingConfig
loggingConfig :: Prelude.Maybe LoggingConfig,
    -- | The response's http status code.
    DescribeTypeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeTypeResponse -> DescribeTypeResponse -> Bool
(DescribeTypeResponse -> DescribeTypeResponse -> Bool)
-> (DescribeTypeResponse -> DescribeTypeResponse -> Bool)
-> Eq DescribeTypeResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTypeResponse -> DescribeTypeResponse -> Bool
$c/= :: DescribeTypeResponse -> DescribeTypeResponse -> Bool
== :: DescribeTypeResponse -> DescribeTypeResponse -> Bool
$c== :: DescribeTypeResponse -> DescribeTypeResponse -> Bool
Prelude.Eq, ReadPrec [DescribeTypeResponse]
ReadPrec DescribeTypeResponse
Int -> ReadS DescribeTypeResponse
ReadS [DescribeTypeResponse]
(Int -> ReadS DescribeTypeResponse)
-> ReadS [DescribeTypeResponse]
-> ReadPrec DescribeTypeResponse
-> ReadPrec [DescribeTypeResponse]
-> Read DescribeTypeResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTypeResponse]
$creadListPrec :: ReadPrec [DescribeTypeResponse]
readPrec :: ReadPrec DescribeTypeResponse
$creadPrec :: ReadPrec DescribeTypeResponse
readList :: ReadS [DescribeTypeResponse]
$creadList :: ReadS [DescribeTypeResponse]
readsPrec :: Int -> ReadS DescribeTypeResponse
$creadsPrec :: Int -> ReadS DescribeTypeResponse
Prelude.Read, Int -> DescribeTypeResponse -> ShowS
[DescribeTypeResponse] -> ShowS
DescribeTypeResponse -> String
(Int -> DescribeTypeResponse -> ShowS)
-> (DescribeTypeResponse -> String)
-> ([DescribeTypeResponse] -> ShowS)
-> Show DescribeTypeResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTypeResponse] -> ShowS
$cshowList :: [DescribeTypeResponse] -> ShowS
show :: DescribeTypeResponse -> String
$cshow :: DescribeTypeResponse -> String
showsPrec :: Int -> DescribeTypeResponse -> ShowS
$cshowsPrec :: Int -> DescribeTypeResponse -> ShowS
Prelude.Show, (forall x. DescribeTypeResponse -> Rep DescribeTypeResponse x)
-> (forall x. Rep DescribeTypeResponse x -> DescribeTypeResponse)
-> Generic DescribeTypeResponse
forall x. Rep DescribeTypeResponse x -> DescribeTypeResponse
forall x. DescribeTypeResponse -> Rep DescribeTypeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTypeResponse x -> DescribeTypeResponse
$cfrom :: forall x. DescribeTypeResponse -> Rep DescribeTypeResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTypeResponse' 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:
--
-- 'typeTestsStatusDescription', 'describeTypeResponse_typeTestsStatusDescription' - The description of the test status. To return the extension test status
-- of a specifc extension version, you must specify @VersionId@.
--
-- This applies only to registered private extension versions.
-- CloudFormation does not return this information for public extensions,
-- whether or not they are activated in your account.
--
-- 'lastUpdated', 'describeTypeResponse_lastUpdated' - When the specified extension version was registered. This applies only
-- to:
--
-- -   Private extensions you have registered in your account. For more
--     information, see
--     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- -   Public extensions you have activated in your account with
--     auto-update specified. For more information, see
--     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
--
-- 'typeName', 'describeTypeResponse_typeName' - The name of the extension.
--
-- If the extension is a public third-party type you have activated with a
-- type name alias, CloudFormation returns the type name alias. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
--
-- 'arn', 'describeTypeResponse_arn' - The Amazon Resource Name (ARN) of the extension.
--
-- 'publicVersionNumber', 'describeTypeResponse_publicVersionNumber' - The version number of a public third-party extension.
--
-- This applies only if you specify a public extension you have activated
-- in your account, or specify a public extension without specifying a
-- version. For all other extensions, CloudFormation returns @null@.
--
-- 'executionRoleArn', 'describeTypeResponse_executionRoleArn' - The Amazon Resource Name (ARN) of the IAM execution role used to
-- register the extension. This applies only to private extensions you have
-- registered in your account. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- If the registered extension calls any Amazon Web Services APIs, you must
-- create an
-- /<https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM execution role>/
-- that includes the necessary permissions to call those Amazon Web
-- Services APIs, and provision that execution role in your account.
-- CloudFormation then assumes that execution role to provide your
-- extension with the appropriate credentials.
--
-- 'autoUpdate', 'describeTypeResponse_autoUpdate' - Whether CloudFormation automatically updates the extension in this
-- account and region when a new /minor/ version is published by the
-- extension publisher. Major versions released by the publisher must be
-- manually updated. For more information, see
-- <AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable Activating public extensions for use in your account>
-- in the /CloudFormation User Guide/.
--
-- 'originalTypeName', 'describeTypeResponse_originalTypeName' - For public extensions that have been activated for this account and
-- region, the type name of the public extension.
--
-- If you specified a @TypeNameAlias@ when enabling the extension in this
-- account and region, CloudFormation treats that alias as the extension\'s
-- type name within the account and region, not the type name of the public
-- extension. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias Specifying aliases to refer to extensions>
-- in the /CloudFormation User Guide/.
--
-- 'visibility', 'describeTypeResponse_visibility' - The scope at which the extension is visible and usable in CloudFormation
-- operations.
--
-- Valid values include:
--
-- -   @PRIVATE@: The extension is only visible and usable within the
--     account in which it is registered. CloudFormation marks any
--     extensions you register as @PRIVATE@.
--
-- -   @PUBLIC@: The extension is publically visible and usable within any
--     Amazon account.
--
-- 'schema', 'describeTypeResponse_schema' - The schema that defines the extension.
--
-- For more information on extension schemas, see
-- <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html Resource Provider Schema>
-- in the /CloudFormation CLI User Guide/.
--
-- 'originalTypeArn', 'describeTypeResponse_originalTypeArn' - For public extensions that have been activated for this account and
-- region, the Amazon Resource Name (ARN) of the public extension.
--
-- 'defaultVersionId', 'describeTypeResponse_defaultVersionId' - The ID of the default version of the extension. The default version is
-- used when the extension version is not specified.
--
-- This applies only to private extensions you have registered in your
-- account. For public extensions, both those provided by Amazon and
-- published by third parties, CloudFormation returns @null@. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- To set the default version of an extension, use
-- @ SetTypeDefaultVersion @.
--
-- 'isActivated', 'describeTypeResponse_isActivated' - Whether or not the extension is activated in the account and region.
--
-- This only applies to public third-party extensions. For all other
-- extensions, CloudFormation returns @null@.
--
-- 'requiredActivatedTypes', 'describeTypeResponse_requiredActivatedTypes' - For extensions that are modules, the public third-party extensions that
-- must be activated in your account in order for the module itself to be
-- activated.
--
-- 'deprecatedStatus', 'describeTypeResponse_deprecatedStatus' - The deprecation status of the extension version.
--
-- Valid values include:
--
-- -   @LIVE@: The extension is activated or registered and can be used in
--     CloudFormation operations, dependent on its provisioning behavior
--     and visibility scope.
--
-- -   @DEPRECATED@: The extension has been deactivated or deregistered and
--     can no longer be used in CloudFormation operations.
--
-- For public third-party extensions, CloudFormation returns @null@.
--
-- 'timeCreated', 'describeTypeResponse_timeCreated' - When the specified private extension version was registered or activated
-- in your account.
--
-- 'type'', 'describeTypeResponse_type' - The kind of extension.
--
-- 'latestPublicVersion', 'describeTypeResponse_latestPublicVersion' - The latest version of a public extension /that is available/ for use.
--
-- This only applies if you specify a public extension, and you do not
-- specify a version. For all other requests, CloudFormation returns
-- @null@.
--
-- 'publisherId', 'describeTypeResponse_publisherId' - The publisher ID of the extension publisher.
--
-- This applies only to public third-party extensions. For private
-- registered extensions, and extensions provided by Amazon, CloudFormation
-- returns @null@.
--
-- 'isDefaultVersion', 'describeTypeResponse_isDefaultVersion' - Whether the specified extension version is set as the default version.
--
-- This applies only to private extensions you have registered in your
-- account, and extensions published by Amazon. For public third-party
-- extensions, whether or not they are activated in your account,
-- CloudFormation returns @null@.
--
-- 'description', 'describeTypeResponse_description' - The description of the extension.
--
-- 'sourceUrl', 'describeTypeResponse_sourceUrl' - The URL of the source code for the extension.
--
-- 'documentationUrl', 'describeTypeResponse_documentationUrl' - The URL of a page providing detailed documentation for this extension.
--
-- 'configurationSchema', 'describeTypeResponse_configurationSchema' - A JSON string that represent the current configuration data for the
-- extension in this account and region.
--
-- To set the configuration data for an extension, use
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html SetTypeConfiguration>.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-register.html#registry-set-configuration Configuring extensions at the account level>
-- in the /CloudFormation User Guide/.
--
-- 'provisioningType', 'describeTypeResponse_provisioningType' - For resource type extensions, the provisioning behavior of the resource
-- type. CloudFormation determines the provisioning type during
-- registration, based on the types of handlers in the schema handler
-- package submitted.
--
-- Valid values include:
--
-- -   @FULLY_MUTABLE@: The resource type includes an update handler to
--     process updates to the type during stack update operations.
--
-- -   @IMMUTABLE@: The resource type does not include an update handler,
--     so the type cannot be updated and must instead be replaced during
--     stack update operations.
--
-- -   @NON_PROVISIONABLE@: The resource type does not include all of the
--     following handlers, and therefore cannot actually be provisioned.
--
--     -   create
--
--     -   read
--
--     -   delete
--
-- 'typeTestsStatus', 'describeTypeResponse_typeTestsStatus' - The contract test status of the registered extension version. To return
-- the extension test status of a specifc extension version, you must
-- specify @VersionId@.
--
-- This applies only to registered private extension versions.
-- CloudFormation does not return this information for public extensions,
-- whether or not they are activated in your account.
--
-- -   @PASSED@: The extension has passed all its contract tests.
--
--     An extension must have a test status of @PASSED@ before it can be
--     published. For more information, see
--     <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html Publishing extensions to make them available for public use>
--     in the /CloudFormation Command Line Interface User Guide/.
--
-- -   @FAILED@: The extension has failed one or more contract tests.
--
-- -   @IN_PROGRESS@: Contract tests are currently being performed on the
--     extension.
--
-- -   @NOT_TESTED@: Contract tests have not been performed on the
--     extension.
--
-- 'loggingConfig', 'describeTypeResponse_loggingConfig' - Contains logging configuration information for private extensions. This
-- applies only to private extensions you have registered in your account.
-- For public extensions, both those provided by Amazon and published by
-- third parties, CloudFormation returns @null@. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- 'httpStatus', 'describeTypeResponse_httpStatus' - The response's http status code.
newDescribeTypeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeTypeResponse
newDescribeTypeResponse :: Int -> DescribeTypeResponse
newDescribeTypeResponse Int
pHttpStatus_ =
  DescribeTypeResponse' :: Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Visibility
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe [RequiredActivatedType]
-> Maybe DeprecatedStatus
-> Maybe ISO8601
-> Maybe RegistryType
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ProvisioningType
-> Maybe TypeTestsStatus
-> Maybe LoggingConfig
-> Int
-> DescribeTypeResponse
DescribeTypeResponse'
    { $sel:typeTestsStatusDescription:DescribeTypeResponse' :: Maybe Text
typeTestsStatusDescription =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdated:DescribeTypeResponse' :: Maybe ISO8601
lastUpdated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:typeName:DescribeTypeResponse' :: Maybe Text
typeName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:DescribeTypeResponse' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publicVersionNumber:DescribeTypeResponse' :: Maybe Text
publicVersionNumber = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:executionRoleArn:DescribeTypeResponse' :: Maybe Text
executionRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:autoUpdate:DescribeTypeResponse' :: Maybe Bool
autoUpdate = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:originalTypeName:DescribeTypeResponse' :: Maybe Text
originalTypeName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:visibility:DescribeTypeResponse' :: Maybe Visibility
visibility = Maybe Visibility
forall a. Maybe a
Prelude.Nothing,
      $sel:schema:DescribeTypeResponse' :: Maybe Text
schema = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:originalTypeArn:DescribeTypeResponse' :: Maybe Text
originalTypeArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultVersionId:DescribeTypeResponse' :: Maybe Text
defaultVersionId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:isActivated:DescribeTypeResponse' :: Maybe Bool
isActivated = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:requiredActivatedTypes:DescribeTypeResponse' :: Maybe [RequiredActivatedType]
requiredActivatedTypes = Maybe [RequiredActivatedType]
forall a. Maybe a
Prelude.Nothing,
      $sel:deprecatedStatus:DescribeTypeResponse' :: Maybe DeprecatedStatus
deprecatedStatus = Maybe DeprecatedStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:timeCreated:DescribeTypeResponse' :: Maybe ISO8601
timeCreated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:type':DescribeTypeResponse' :: Maybe RegistryType
type' = Maybe RegistryType
forall a. Maybe a
Prelude.Nothing,
      $sel:latestPublicVersion:DescribeTypeResponse' :: Maybe Text
latestPublicVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publisherId:DescribeTypeResponse' :: Maybe Text
publisherId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:isDefaultVersion:DescribeTypeResponse' :: Maybe Bool
isDefaultVersion = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeTypeResponse' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceUrl:DescribeTypeResponse' :: Maybe Text
sourceUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:documentationUrl:DescribeTypeResponse' :: Maybe Text
documentationUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:configurationSchema:DescribeTypeResponse' :: Maybe Text
configurationSchema = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningType:DescribeTypeResponse' :: Maybe ProvisioningType
provisioningType = Maybe ProvisioningType
forall a. Maybe a
Prelude.Nothing,
      $sel:typeTestsStatus:DescribeTypeResponse' :: Maybe TypeTestsStatus
typeTestsStatus = Maybe TypeTestsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:loggingConfig:DescribeTypeResponse' :: Maybe LoggingConfig
loggingConfig = Maybe LoggingConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeTypeResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The description of the test status. To return the extension test status
-- of a specifc extension version, you must specify @VersionId@.
--
-- This applies only to registered private extension versions.
-- CloudFormation does not return this information for public extensions,
-- whether or not they are activated in your account.
describeTypeResponse_typeTestsStatusDescription :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_typeTestsStatusDescription :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_typeTestsStatusDescription = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
typeTestsStatusDescription :: Maybe Text
$sel:typeTestsStatusDescription:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
typeTestsStatusDescription} -> Maybe Text
typeTestsStatusDescription) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:typeTestsStatusDescription:DescribeTypeResponse' :: Maybe Text
typeTestsStatusDescription = Maybe Text
a} :: DescribeTypeResponse)

-- | When the specified extension version was registered. This applies only
-- to:
--
-- -   Private extensions you have registered in your account. For more
--     information, see
--     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- -   Public extensions you have activated in your account with
--     auto-update specified. For more information, see
--     <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
describeTypeResponse_lastUpdated :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.UTCTime)
describeTypeResponse_lastUpdated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_lastUpdated = (DescribeTypeResponse -> Maybe ISO8601)
-> (DescribeTypeResponse -> Maybe ISO8601 -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe ISO8601
lastUpdated :: Maybe ISO8601
$sel:lastUpdated:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe ISO8601
lastUpdated} -> Maybe ISO8601
lastUpdated) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe ISO8601
a -> DescribeTypeResponse
s {$sel:lastUpdated:DescribeTypeResponse' :: Maybe ISO8601
lastUpdated = Maybe ISO8601
a} :: DescribeTypeResponse) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DescribeTypeResponse -> f DescribeTypeResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeTypeResponse
-> f DescribeTypeResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The name of the extension.
--
-- If the extension is a public third-party type you have activated with a
-- type name alias, CloudFormation returns the type name alias. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html ActivateType>.
describeTypeResponse_typeName :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_typeName :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_typeName = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
typeName :: Maybe Text
$sel:typeName:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
typeName} -> Maybe Text
typeName) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:typeName:DescribeTypeResponse' :: Maybe Text
typeName = Maybe Text
a} :: DescribeTypeResponse)

-- | The Amazon Resource Name (ARN) of the extension.
describeTypeResponse_arn :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_arn :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_arn = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:arn:DescribeTypeResponse' :: Maybe Text
arn = Maybe Text
a} :: DescribeTypeResponse)

-- | The version number of a public third-party extension.
--
-- This applies only if you specify a public extension you have activated
-- in your account, or specify a public extension without specifying a
-- version. For all other extensions, CloudFormation returns @null@.
describeTypeResponse_publicVersionNumber :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_publicVersionNumber :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_publicVersionNumber = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
publicVersionNumber :: Maybe Text
$sel:publicVersionNumber:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
publicVersionNumber} -> Maybe Text
publicVersionNumber) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:publicVersionNumber:DescribeTypeResponse' :: Maybe Text
publicVersionNumber = Maybe Text
a} :: DescribeTypeResponse)

-- | The Amazon Resource Name (ARN) of the IAM execution role used to
-- register the extension. This applies only to private extensions you have
-- registered in your account. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- If the registered extension calls any Amazon Web Services APIs, you must
-- create an
-- /<https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM execution role>/
-- that includes the necessary permissions to call those Amazon Web
-- Services APIs, and provision that execution role in your account.
-- CloudFormation then assumes that execution role to provide your
-- extension with the appropriate credentials.
describeTypeResponse_executionRoleArn :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_executionRoleArn :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_executionRoleArn = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
executionRoleArn :: Maybe Text
$sel:executionRoleArn:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
executionRoleArn} -> Maybe Text
executionRoleArn) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:executionRoleArn:DescribeTypeResponse' :: Maybe Text
executionRoleArn = Maybe Text
a} :: DescribeTypeResponse)

-- | Whether CloudFormation automatically updates the extension in this
-- account and region when a new /minor/ version is published by the
-- extension publisher. Major versions released by the publisher must be
-- manually updated. For more information, see
-- <AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable Activating public extensions for use in your account>
-- in the /CloudFormation User Guide/.
describeTypeResponse_autoUpdate :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Bool)
describeTypeResponse_autoUpdate :: (Maybe Bool -> f (Maybe Bool))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_autoUpdate = (DescribeTypeResponse -> Maybe Bool)
-> (DescribeTypeResponse -> Maybe Bool -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Bool
autoUpdate :: Maybe Bool
$sel:autoUpdate:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Bool
autoUpdate} -> Maybe Bool
autoUpdate) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Bool
a -> DescribeTypeResponse
s {$sel:autoUpdate:DescribeTypeResponse' :: Maybe Bool
autoUpdate = Maybe Bool
a} :: DescribeTypeResponse)

-- | For public extensions that have been activated for this account and
-- region, the type name of the public extension.
--
-- If you specified a @TypeNameAlias@ when enabling the extension in this
-- account and region, CloudFormation treats that alias as the extension\'s
-- type name within the account and region, not the type name of the public
-- extension. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias Specifying aliases to refer to extensions>
-- in the /CloudFormation User Guide/.
describeTypeResponse_originalTypeName :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_originalTypeName :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_originalTypeName = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
originalTypeName :: Maybe Text
$sel:originalTypeName:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
originalTypeName} -> Maybe Text
originalTypeName) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:originalTypeName:DescribeTypeResponse' :: Maybe Text
originalTypeName = Maybe Text
a} :: DescribeTypeResponse)

-- | The scope at which the extension is visible and usable in CloudFormation
-- operations.
--
-- Valid values include:
--
-- -   @PRIVATE@: The extension is only visible and usable within the
--     account in which it is registered. CloudFormation marks any
--     extensions you register as @PRIVATE@.
--
-- -   @PUBLIC@: The extension is publically visible and usable within any
--     Amazon account.
describeTypeResponse_visibility :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Visibility)
describeTypeResponse_visibility :: (Maybe Visibility -> f (Maybe Visibility))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_visibility = (DescribeTypeResponse -> Maybe Visibility)
-> (DescribeTypeResponse
    -> Maybe Visibility -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe Visibility)
     (Maybe Visibility)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Visibility
visibility :: Maybe Visibility
$sel:visibility:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Visibility
visibility} -> Maybe Visibility
visibility) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Visibility
a -> DescribeTypeResponse
s {$sel:visibility:DescribeTypeResponse' :: Maybe Visibility
visibility = Maybe Visibility
a} :: DescribeTypeResponse)

-- | The schema that defines the extension.
--
-- For more information on extension schemas, see
-- <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html Resource Provider Schema>
-- in the /CloudFormation CLI User Guide/.
describeTypeResponse_schema :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_schema :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_schema = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
schema :: Maybe Text
$sel:schema:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
schema} -> Maybe Text
schema) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:schema:DescribeTypeResponse' :: Maybe Text
schema = Maybe Text
a} :: DescribeTypeResponse)

-- | For public extensions that have been activated for this account and
-- region, the Amazon Resource Name (ARN) of the public extension.
describeTypeResponse_originalTypeArn :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_originalTypeArn :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_originalTypeArn = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
originalTypeArn :: Maybe Text
$sel:originalTypeArn:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
originalTypeArn} -> Maybe Text
originalTypeArn) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:originalTypeArn:DescribeTypeResponse' :: Maybe Text
originalTypeArn = Maybe Text
a} :: DescribeTypeResponse)

-- | The ID of the default version of the extension. The default version is
-- used when the extension version is not specified.
--
-- This applies only to private extensions you have registered in your
-- account. For public extensions, both those provided by Amazon and
-- published by third parties, CloudFormation returns @null@. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
--
-- To set the default version of an extension, use
-- @ SetTypeDefaultVersion @.
describeTypeResponse_defaultVersionId :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_defaultVersionId :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_defaultVersionId = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
defaultVersionId :: Maybe Text
$sel:defaultVersionId:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
defaultVersionId} -> Maybe Text
defaultVersionId) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:defaultVersionId:DescribeTypeResponse' :: Maybe Text
defaultVersionId = Maybe Text
a} :: DescribeTypeResponse)

-- | Whether or not the extension is activated in the account and region.
--
-- This only applies to public third-party extensions. For all other
-- extensions, CloudFormation returns @null@.
describeTypeResponse_isActivated :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Bool)
describeTypeResponse_isActivated :: (Maybe Bool -> f (Maybe Bool))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_isActivated = (DescribeTypeResponse -> Maybe Bool)
-> (DescribeTypeResponse -> Maybe Bool -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Bool
isActivated :: Maybe Bool
$sel:isActivated:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Bool
isActivated} -> Maybe Bool
isActivated) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Bool
a -> DescribeTypeResponse
s {$sel:isActivated:DescribeTypeResponse' :: Maybe Bool
isActivated = Maybe Bool
a} :: DescribeTypeResponse)

-- | For extensions that are modules, the public third-party extensions that
-- must be activated in your account in order for the module itself to be
-- activated.
describeTypeResponse_requiredActivatedTypes :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe [RequiredActivatedType])
describeTypeResponse_requiredActivatedTypes :: (Maybe [RequiredActivatedType]
 -> f (Maybe [RequiredActivatedType]))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_requiredActivatedTypes = (DescribeTypeResponse -> Maybe [RequiredActivatedType])
-> (DescribeTypeResponse
    -> Maybe [RequiredActivatedType] -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe [RequiredActivatedType])
     (Maybe [RequiredActivatedType])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe [RequiredActivatedType]
requiredActivatedTypes :: Maybe [RequiredActivatedType]
$sel:requiredActivatedTypes:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe [RequiredActivatedType]
requiredActivatedTypes} -> Maybe [RequiredActivatedType]
requiredActivatedTypes) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe [RequiredActivatedType]
a -> DescribeTypeResponse
s {$sel:requiredActivatedTypes:DescribeTypeResponse' :: Maybe [RequiredActivatedType]
requiredActivatedTypes = Maybe [RequiredActivatedType]
a} :: DescribeTypeResponse) ((Maybe [RequiredActivatedType]
  -> f (Maybe [RequiredActivatedType]))
 -> DescribeTypeResponse -> f DescribeTypeResponse)
-> ((Maybe [RequiredActivatedType]
     -> f (Maybe [RequiredActivatedType]))
    -> Maybe [RequiredActivatedType]
    -> f (Maybe [RequiredActivatedType]))
-> (Maybe [RequiredActivatedType]
    -> f (Maybe [RequiredActivatedType]))
-> DescribeTypeResponse
-> f DescribeTypeResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [RequiredActivatedType]
  [RequiredActivatedType]
  [RequiredActivatedType]
  [RequiredActivatedType]
-> Iso
     (Maybe [RequiredActivatedType])
     (Maybe [RequiredActivatedType])
     (Maybe [RequiredActivatedType])
     (Maybe [RequiredActivatedType])
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 AnIso
  [RequiredActivatedType]
  [RequiredActivatedType]
  [RequiredActivatedType]
  [RequiredActivatedType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The deprecation status of the extension version.
--
-- Valid values include:
--
-- -   @LIVE@: The extension is activated or registered and can be used in
--     CloudFormation operations, dependent on its provisioning behavior
--     and visibility scope.
--
-- -   @DEPRECATED@: The extension has been deactivated or deregistered and
--     can no longer be used in CloudFormation operations.
--
-- For public third-party extensions, CloudFormation returns @null@.
describeTypeResponse_deprecatedStatus :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe DeprecatedStatus)
describeTypeResponse_deprecatedStatus :: (Maybe DeprecatedStatus -> f (Maybe DeprecatedStatus))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_deprecatedStatus = (DescribeTypeResponse -> Maybe DeprecatedStatus)
-> (DescribeTypeResponse
    -> Maybe DeprecatedStatus -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe DeprecatedStatus)
     (Maybe DeprecatedStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe DeprecatedStatus
deprecatedStatus :: Maybe DeprecatedStatus
$sel:deprecatedStatus:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe DeprecatedStatus
deprecatedStatus} -> Maybe DeprecatedStatus
deprecatedStatus) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe DeprecatedStatus
a -> DescribeTypeResponse
s {$sel:deprecatedStatus:DescribeTypeResponse' :: Maybe DeprecatedStatus
deprecatedStatus = Maybe DeprecatedStatus
a} :: DescribeTypeResponse)

-- | When the specified private extension version was registered or activated
-- in your account.
describeTypeResponse_timeCreated :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.UTCTime)
describeTypeResponse_timeCreated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_timeCreated = (DescribeTypeResponse -> Maybe ISO8601)
-> (DescribeTypeResponse -> Maybe ISO8601 -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe ISO8601
timeCreated :: Maybe ISO8601
$sel:timeCreated:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe ISO8601
timeCreated} -> Maybe ISO8601
timeCreated) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe ISO8601
a -> DescribeTypeResponse
s {$sel:timeCreated:DescribeTypeResponse' :: Maybe ISO8601
timeCreated = Maybe ISO8601
a} :: DescribeTypeResponse) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DescribeTypeResponse -> f DescribeTypeResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeTypeResponse
-> f DescribeTypeResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The kind of extension.
describeTypeResponse_type :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe RegistryType)
describeTypeResponse_type :: (Maybe RegistryType -> f (Maybe RegistryType))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_type = (DescribeTypeResponse -> Maybe RegistryType)
-> (DescribeTypeResponse
    -> Maybe RegistryType -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe RegistryType)
     (Maybe RegistryType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe RegistryType
type' :: Maybe RegistryType
$sel:type':DescribeTypeResponse' :: DescribeTypeResponse -> Maybe RegistryType
type'} -> Maybe RegistryType
type') (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe RegistryType
a -> DescribeTypeResponse
s {$sel:type':DescribeTypeResponse' :: Maybe RegistryType
type' = Maybe RegistryType
a} :: DescribeTypeResponse)

-- | The latest version of a public extension /that is available/ for use.
--
-- This only applies if you specify a public extension, and you do not
-- specify a version. For all other requests, CloudFormation returns
-- @null@.
describeTypeResponse_latestPublicVersion :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_latestPublicVersion :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_latestPublicVersion = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
latestPublicVersion :: Maybe Text
$sel:latestPublicVersion:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
latestPublicVersion} -> Maybe Text
latestPublicVersion) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:latestPublicVersion:DescribeTypeResponse' :: Maybe Text
latestPublicVersion = Maybe Text
a} :: DescribeTypeResponse)

-- | The publisher ID of the extension publisher.
--
-- This applies only to public third-party extensions. For private
-- registered extensions, and extensions provided by Amazon, CloudFormation
-- returns @null@.
describeTypeResponse_publisherId :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_publisherId :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_publisherId = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
publisherId :: Maybe Text
$sel:publisherId:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
publisherId} -> Maybe Text
publisherId) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:publisherId:DescribeTypeResponse' :: Maybe Text
publisherId = Maybe Text
a} :: DescribeTypeResponse)

-- | Whether the specified extension version is set as the default version.
--
-- This applies only to private extensions you have registered in your
-- account, and extensions published by Amazon. For public third-party
-- extensions, whether or not they are activated in your account,
-- CloudFormation returns @null@.
describeTypeResponse_isDefaultVersion :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Bool)
describeTypeResponse_isDefaultVersion :: (Maybe Bool -> f (Maybe Bool))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_isDefaultVersion = (DescribeTypeResponse -> Maybe Bool)
-> (DescribeTypeResponse -> Maybe Bool -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Bool
isDefaultVersion :: Maybe Bool
$sel:isDefaultVersion:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Bool
isDefaultVersion} -> Maybe Bool
isDefaultVersion) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Bool
a -> DescribeTypeResponse
s {$sel:isDefaultVersion:DescribeTypeResponse' :: Maybe Bool
isDefaultVersion = Maybe Bool
a} :: DescribeTypeResponse)

-- | The description of the extension.
describeTypeResponse_description :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_description :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_description = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:description:DescribeTypeResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeTypeResponse)

-- | The URL of the source code for the extension.
describeTypeResponse_sourceUrl :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_sourceUrl :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_sourceUrl = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
sourceUrl :: Maybe Text
$sel:sourceUrl:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
sourceUrl} -> Maybe Text
sourceUrl) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:sourceUrl:DescribeTypeResponse' :: Maybe Text
sourceUrl = Maybe Text
a} :: DescribeTypeResponse)

-- | The URL of a page providing detailed documentation for this extension.
describeTypeResponse_documentationUrl :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_documentationUrl :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_documentationUrl = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
documentationUrl :: Maybe Text
$sel:documentationUrl:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
documentationUrl} -> Maybe Text
documentationUrl) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:documentationUrl:DescribeTypeResponse' :: Maybe Text
documentationUrl = Maybe Text
a} :: DescribeTypeResponse)

-- | A JSON string that represent the current configuration data for the
-- extension in this account and region.
--
-- To set the configuration data for an extension, use
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html SetTypeConfiguration>.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-register.html#registry-set-configuration Configuring extensions at the account level>
-- in the /CloudFormation User Guide/.
describeTypeResponse_configurationSchema :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe Prelude.Text)
describeTypeResponse_configurationSchema :: (Maybe Text -> f (Maybe Text))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_configurationSchema = (DescribeTypeResponse -> Maybe Text)
-> (DescribeTypeResponse -> Maybe Text -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse DescribeTypeResponse (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe Text
configurationSchema :: Maybe Text
$sel:configurationSchema:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe Text
configurationSchema} -> Maybe Text
configurationSchema) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe Text
a -> DescribeTypeResponse
s {$sel:configurationSchema:DescribeTypeResponse' :: Maybe Text
configurationSchema = Maybe Text
a} :: DescribeTypeResponse)

-- | For resource type extensions, the provisioning behavior of the resource
-- type. CloudFormation determines the provisioning type during
-- registration, based on the types of handlers in the schema handler
-- package submitted.
--
-- Valid values include:
--
-- -   @FULLY_MUTABLE@: The resource type includes an update handler to
--     process updates to the type during stack update operations.
--
-- -   @IMMUTABLE@: The resource type does not include an update handler,
--     so the type cannot be updated and must instead be replaced during
--     stack update operations.
--
-- -   @NON_PROVISIONABLE@: The resource type does not include all of the
--     following handlers, and therefore cannot actually be provisioned.
--
--     -   create
--
--     -   read
--
--     -   delete
describeTypeResponse_provisioningType :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe ProvisioningType)
describeTypeResponse_provisioningType :: (Maybe ProvisioningType -> f (Maybe ProvisioningType))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_provisioningType = (DescribeTypeResponse -> Maybe ProvisioningType)
-> (DescribeTypeResponse
    -> Maybe ProvisioningType -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe ProvisioningType)
     (Maybe ProvisioningType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe ProvisioningType
provisioningType :: Maybe ProvisioningType
$sel:provisioningType:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe ProvisioningType
provisioningType} -> Maybe ProvisioningType
provisioningType) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe ProvisioningType
a -> DescribeTypeResponse
s {$sel:provisioningType:DescribeTypeResponse' :: Maybe ProvisioningType
provisioningType = Maybe ProvisioningType
a} :: DescribeTypeResponse)

-- | The contract test status of the registered extension version. To return
-- the extension test status of a specifc extension version, you must
-- specify @VersionId@.
--
-- This applies only to registered private extension versions.
-- CloudFormation does not return this information for public extensions,
-- whether or not they are activated in your account.
--
-- -   @PASSED@: The extension has passed all its contract tests.
--
--     An extension must have a test status of @PASSED@ before it can be
--     published. For more information, see
--     <https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html Publishing extensions to make them available for public use>
--     in the /CloudFormation Command Line Interface User Guide/.
--
-- -   @FAILED@: The extension has failed one or more contract tests.
--
-- -   @IN_PROGRESS@: Contract tests are currently being performed on the
--     extension.
--
-- -   @NOT_TESTED@: Contract tests have not been performed on the
--     extension.
describeTypeResponse_typeTestsStatus :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe TypeTestsStatus)
describeTypeResponse_typeTestsStatus :: (Maybe TypeTestsStatus -> f (Maybe TypeTestsStatus))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_typeTestsStatus = (DescribeTypeResponse -> Maybe TypeTestsStatus)
-> (DescribeTypeResponse
    -> Maybe TypeTestsStatus -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe TypeTestsStatus)
     (Maybe TypeTestsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe TypeTestsStatus
typeTestsStatus :: Maybe TypeTestsStatus
$sel:typeTestsStatus:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe TypeTestsStatus
typeTestsStatus} -> Maybe TypeTestsStatus
typeTestsStatus) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe TypeTestsStatus
a -> DescribeTypeResponse
s {$sel:typeTestsStatus:DescribeTypeResponse' :: Maybe TypeTestsStatus
typeTestsStatus = Maybe TypeTestsStatus
a} :: DescribeTypeResponse)

-- | Contains logging configuration information for private extensions. This
-- applies only to private extensions you have registered in your account.
-- For public extensions, both those provided by Amazon and published by
-- third parties, CloudFormation returns @null@. For more information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html RegisterType>.
describeTypeResponse_loggingConfig :: Lens.Lens' DescribeTypeResponse (Prelude.Maybe LoggingConfig)
describeTypeResponse_loggingConfig :: (Maybe LoggingConfig -> f (Maybe LoggingConfig))
-> DescribeTypeResponse -> f DescribeTypeResponse
describeTypeResponse_loggingConfig = (DescribeTypeResponse -> Maybe LoggingConfig)
-> (DescribeTypeResponse
    -> Maybe LoggingConfig -> DescribeTypeResponse)
-> Lens
     DescribeTypeResponse
     DescribeTypeResponse
     (Maybe LoggingConfig)
     (Maybe LoggingConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTypeResponse' {Maybe LoggingConfig
loggingConfig :: Maybe LoggingConfig
$sel:loggingConfig:DescribeTypeResponse' :: DescribeTypeResponse -> Maybe LoggingConfig
loggingConfig} -> Maybe LoggingConfig
loggingConfig) (\s :: DescribeTypeResponse
s@DescribeTypeResponse' {} Maybe LoggingConfig
a -> DescribeTypeResponse
s {$sel:loggingConfig:DescribeTypeResponse' :: Maybe LoggingConfig
loggingConfig = Maybe LoggingConfig
a} :: DescribeTypeResponse)

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

instance Prelude.NFData DescribeTypeResponse