diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/ApplicationInsights/Application.hs b/gen/Stratosphere/ApplicationInsights/Application.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application.hs
@@ -0,0 +1,147 @@
+module Stratosphere.ApplicationInsights.Application (
+        module Exports, Application(..), mkApplication
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.ComponentMonitoringSettingProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.CustomComponentProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.LogPatternSetProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Application
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html>
+    Application {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-attachmissingpermission>
+                 attachMissingPermission :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-autoconfigurationenabled>
+                 autoConfigurationEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-cwemonitorenabled>
+                 cWEMonitorEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-componentmonitoringsettings>
+                 componentMonitoringSettings :: (Prelude.Maybe [ComponentMonitoringSettingProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-customcomponents>
+                 customComponents :: (Prelude.Maybe [CustomComponentProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-groupingtype>
+                 groupingType :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-logpatternsets>
+                 logPatternSets :: (Prelude.Maybe [LogPatternSetProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-opscenterenabled>
+                 opsCenterEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-opsitemsnstopicarn>
+                 opsItemSNSTopicArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-resourcegroupname>
+                 resourceGroupName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-snsnotificationarn>
+                 sNSNotificationArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplication :: Value Prelude.Text -> Application
+mkApplication resourceGroupName
+  = Application
+      {haddock_workaround_ = (), resourceGroupName = resourceGroupName,
+       attachMissingPermission = Prelude.Nothing,
+       autoConfigurationEnabled = Prelude.Nothing,
+       cWEMonitorEnabled = Prelude.Nothing,
+       componentMonitoringSettings = Prelude.Nothing,
+       customComponents = Prelude.Nothing, groupingType = Prelude.Nothing,
+       logPatternSets = Prelude.Nothing,
+       opsCenterEnabled = Prelude.Nothing,
+       opsItemSNSTopicArn = Prelude.Nothing,
+       sNSNotificationArn = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Application where
+  toResourceProperties Application {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ResourceGroupName" JSON..= resourceGroupName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AttachMissingPermission"
+                                 Prelude.<$> attachMissingPermission,
+                               (JSON..=) "AutoConfigurationEnabled"
+                                 Prelude.<$> autoConfigurationEnabled,
+                               (JSON..=) "CWEMonitorEnabled" Prelude.<$> cWEMonitorEnabled,
+                               (JSON..=) "ComponentMonitoringSettings"
+                                 Prelude.<$> componentMonitoringSettings,
+                               (JSON..=) "CustomComponents" Prelude.<$> customComponents,
+                               (JSON..=) "GroupingType" Prelude.<$> groupingType,
+                               (JSON..=) "LogPatternSets" Prelude.<$> logPatternSets,
+                               (JSON..=) "OpsCenterEnabled" Prelude.<$> opsCenterEnabled,
+                               (JSON..=) "OpsItemSNSTopicArn" Prelude.<$> opsItemSNSTopicArn,
+                               (JSON..=) "SNSNotificationArn" Prelude.<$> sNSNotificationArn,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Application where
+  toJSON Application {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ResourceGroupName" JSON..= resourceGroupName]
+              (Prelude.catMaybes
+                 [(JSON..=) "AttachMissingPermission"
+                    Prelude.<$> attachMissingPermission,
+                  (JSON..=) "AutoConfigurationEnabled"
+                    Prelude.<$> autoConfigurationEnabled,
+                  (JSON..=) "CWEMonitorEnabled" Prelude.<$> cWEMonitorEnabled,
+                  (JSON..=) "ComponentMonitoringSettings"
+                    Prelude.<$> componentMonitoringSettings,
+                  (JSON..=) "CustomComponents" Prelude.<$> customComponents,
+                  (JSON..=) "GroupingType" Prelude.<$> groupingType,
+                  (JSON..=) "LogPatternSets" Prelude.<$> logPatternSets,
+                  (JSON..=) "OpsCenterEnabled" Prelude.<$> opsCenterEnabled,
+                  (JSON..=) "OpsItemSNSTopicArn" Prelude.<$> opsItemSNSTopicArn,
+                  (JSON..=) "SNSNotificationArn" Prelude.<$> sNSNotificationArn,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AttachMissingPermission" Application where
+  type PropertyType "AttachMissingPermission" Application = Value Prelude.Bool
+  set newValue Application {..}
+    = Application {attachMissingPermission = Prelude.pure newValue, ..}
+instance Property "AutoConfigurationEnabled" Application where
+  type PropertyType "AutoConfigurationEnabled" Application = Value Prelude.Bool
+  set newValue Application {..}
+    = Application
+        {autoConfigurationEnabled = Prelude.pure newValue, ..}
+instance Property "CWEMonitorEnabled" Application where
+  type PropertyType "CWEMonitorEnabled" Application = Value Prelude.Bool
+  set newValue Application {..}
+    = Application {cWEMonitorEnabled = Prelude.pure newValue, ..}
+instance Property "ComponentMonitoringSettings" Application where
+  type PropertyType "ComponentMonitoringSettings" Application = [ComponentMonitoringSettingProperty]
+  set newValue Application {..}
+    = Application
+        {componentMonitoringSettings = Prelude.pure newValue, ..}
+instance Property "CustomComponents" Application where
+  type PropertyType "CustomComponents" Application = [CustomComponentProperty]
+  set newValue Application {..}
+    = Application {customComponents = Prelude.pure newValue, ..}
+instance Property "GroupingType" Application where
+  type PropertyType "GroupingType" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {groupingType = Prelude.pure newValue, ..}
+instance Property "LogPatternSets" Application where
+  type PropertyType "LogPatternSets" Application = [LogPatternSetProperty]
+  set newValue Application {..}
+    = Application {logPatternSets = Prelude.pure newValue, ..}
+instance Property "OpsCenterEnabled" Application where
+  type PropertyType "OpsCenterEnabled" Application = Value Prelude.Bool
+  set newValue Application {..}
+    = Application {opsCenterEnabled = Prelude.pure newValue, ..}
+instance Property "OpsItemSNSTopicArn" Application where
+  type PropertyType "OpsItemSNSTopicArn" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {opsItemSNSTopicArn = Prelude.pure newValue, ..}
+instance Property "ResourceGroupName" Application where
+  type PropertyType "ResourceGroupName" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {resourceGroupName = newValue, ..}
+instance Property "SNSNotificationArn" Application where
+  type PropertyType "SNSNotificationArn" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {sNSNotificationArn = Prelude.pure newValue, ..}
+instance Property "Tags" Application where
+  type PropertyType "Tags" Application = [Tag]
+  set newValue Application {..}
+    = Application {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.ApplicationInsights.Application.AlarmMetricProperty (
+        AlarmMetricProperty(..), mkAlarmMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AlarmMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-alarmmetric.html>
+    AlarmMetricProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-alarmmetric.html#cfn-applicationinsights-application-alarmmetric-alarmmetricname>
+                         alarmMetricName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAlarmMetricProperty :: Value Prelude.Text -> AlarmMetricProperty
+mkAlarmMetricProperty alarmMetricName
+  = AlarmMetricProperty
+      {haddock_workaround_ = (), alarmMetricName = alarmMetricName}
+instance ToResourceProperties AlarmMetricProperty where
+  toResourceProperties AlarmMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.AlarmMetric",
+         supportsTags = Prelude.False,
+         properties = ["AlarmMetricName" JSON..= alarmMetricName]}
+instance JSON.ToJSON AlarmMetricProperty where
+  toJSON AlarmMetricProperty {..}
+    = JSON.object ["AlarmMetricName" JSON..= alarmMetricName]
+instance Property "AlarmMetricName" AlarmMetricProperty where
+  type PropertyType "AlarmMetricName" AlarmMetricProperty = Value Prelude.Text
+  set newValue AlarmMetricProperty {..}
+    = AlarmMetricProperty {alarmMetricName = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/AlarmMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.AlarmMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AlarmMetricProperty :: Prelude.Type
+instance ToResourceProperties AlarmMetricProperty
+instance Prelude.Eq AlarmMetricProperty
+instance Prelude.Show AlarmMetricProperty
+instance JSON.ToJSON AlarmMetricProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.ApplicationInsights.Application.AlarmProperty (
+        AlarmProperty(..), mkAlarmProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AlarmProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-alarm.html>
+    AlarmProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-alarm.html#cfn-applicationinsights-application-alarm-alarmname>
+                   alarmName :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-alarm.html#cfn-applicationinsights-application-alarm-severity>
+                   severity :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAlarmProperty :: Value Prelude.Text -> AlarmProperty
+mkAlarmProperty alarmName
+  = AlarmProperty
+      {haddock_workaround_ = (), alarmName = alarmName,
+       severity = Prelude.Nothing}
+instance ToResourceProperties AlarmProperty where
+  toResourceProperties AlarmProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.Alarm",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AlarmName" JSON..= alarmName]
+                           (Prelude.catMaybes [(JSON..=) "Severity" Prelude.<$> severity]))}
+instance JSON.ToJSON AlarmProperty where
+  toJSON AlarmProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AlarmName" JSON..= alarmName]
+              (Prelude.catMaybes [(JSON..=) "Severity" Prelude.<$> severity])))
+instance Property "AlarmName" AlarmProperty where
+  type PropertyType "AlarmName" AlarmProperty = Value Prelude.Text
+  set newValue AlarmProperty {..}
+    = AlarmProperty {alarmName = newValue, ..}
+instance Property "Severity" AlarmProperty where
+  type PropertyType "Severity" AlarmProperty = Value Prelude.Text
+  set newValue AlarmProperty {..}
+    = AlarmProperty {severity = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/AlarmProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.AlarmProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AlarmProperty :: Prelude.Type
+instance ToResourceProperties AlarmProperty
+instance Prelude.Eq AlarmProperty
+instance Prelude.Show AlarmProperty
+instance JSON.ToJSON AlarmProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.ApplicationInsights.Application.ComponentConfigurationProperty (
+        module Exports, ComponentConfigurationProperty(..),
+        mkComponentConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.ConfigurationDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.SubComponentTypeConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data ComponentConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html>
+    ComponentConfigurationProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html#cfn-applicationinsights-application-componentconfiguration-configurationdetails>
+                                    configurationDetails :: (Prelude.Maybe ConfigurationDetailsProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentconfiguration.html#cfn-applicationinsights-application-componentconfiguration-subcomponenttypeconfigurations>
+                                    subComponentTypeConfigurations :: (Prelude.Maybe [SubComponentTypeConfigurationProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentConfigurationProperty :: ComponentConfigurationProperty
+mkComponentConfigurationProperty
+  = ComponentConfigurationProperty
+      {haddock_workaround_ = (), configurationDetails = Prelude.Nothing,
+       subComponentTypeConfigurations = Prelude.Nothing}
+instance ToResourceProperties ComponentConfigurationProperty where
+  toResourceProperties ComponentConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.ComponentConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ConfigurationDetails" Prelude.<$> configurationDetails,
+                            (JSON..=) "SubComponentTypeConfigurations"
+                              Prelude.<$> subComponentTypeConfigurations])}
+instance JSON.ToJSON ComponentConfigurationProperty where
+  toJSON ComponentConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ConfigurationDetails" Prelude.<$> configurationDetails,
+               (JSON..=) "SubComponentTypeConfigurations"
+                 Prelude.<$> subComponentTypeConfigurations]))
+instance Property "ConfigurationDetails" ComponentConfigurationProperty where
+  type PropertyType "ConfigurationDetails" ComponentConfigurationProperty = ConfigurationDetailsProperty
+  set newValue ComponentConfigurationProperty {..}
+    = ComponentConfigurationProperty
+        {configurationDetails = Prelude.pure newValue, ..}
+instance Property "SubComponentTypeConfigurations" ComponentConfigurationProperty where
+  type PropertyType "SubComponentTypeConfigurations" ComponentConfigurationProperty = [SubComponentTypeConfigurationProperty]
+  set newValue ComponentConfigurationProperty {..}
+    = ComponentConfigurationProperty
+        {subComponentTypeConfigurations = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ComponentConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.ComponentConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ComponentConfigurationProperty
+instance Prelude.Eq ComponentConfigurationProperty
+instance Prelude.Show ComponentConfigurationProperty
+instance JSON.ToJSON ComponentConfigurationProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs
@@ -0,0 +1,99 @@
+module Stratosphere.ApplicationInsights.Application.ComponentMonitoringSettingProperty (
+        module Exports, ComponentMonitoringSettingProperty(..),
+        mkComponentMonitoringSettingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.ComponentConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentMonitoringSettingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html>
+    ComponentMonitoringSettingProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-componentarn>
+                                        componentARN :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-componentconfigurationmode>
+                                        componentConfigurationMode :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-componentname>
+                                        componentName :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-customcomponentconfiguration>
+                                        customComponentConfiguration :: (Prelude.Maybe ComponentConfigurationProperty),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-defaultoverwritecomponentconfiguration>
+                                        defaultOverwriteComponentConfiguration :: (Prelude.Maybe ComponentConfigurationProperty),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-componentmonitoringsetting.html#cfn-applicationinsights-application-componentmonitoringsetting-tier>
+                                        tier :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentMonitoringSettingProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ComponentMonitoringSettingProperty
+mkComponentMonitoringSettingProperty
+  componentConfigurationMode
+  tier
+  = ComponentMonitoringSettingProperty
+      {haddock_workaround_ = (),
+       componentConfigurationMode = componentConfigurationMode,
+       tier = tier, componentARN = Prelude.Nothing,
+       componentName = Prelude.Nothing,
+       customComponentConfiguration = Prelude.Nothing,
+       defaultOverwriteComponentConfiguration = Prelude.Nothing}
+instance ToResourceProperties ComponentMonitoringSettingProperty where
+  toResourceProperties ComponentMonitoringSettingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.ComponentMonitoringSetting",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ComponentConfigurationMode" JSON..= componentConfigurationMode,
+                            "Tier" JSON..= tier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ComponentARN" Prelude.<$> componentARN,
+                               (JSON..=) "ComponentName" Prelude.<$> componentName,
+                               (JSON..=) "CustomComponentConfiguration"
+                                 Prelude.<$> customComponentConfiguration,
+                               (JSON..=) "DefaultOverwriteComponentConfiguration"
+                                 Prelude.<$> defaultOverwriteComponentConfiguration]))}
+instance JSON.ToJSON ComponentMonitoringSettingProperty where
+  toJSON ComponentMonitoringSettingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ComponentConfigurationMode" JSON..= componentConfigurationMode,
+               "Tier" JSON..= tier]
+              (Prelude.catMaybes
+                 [(JSON..=) "ComponentARN" Prelude.<$> componentARN,
+                  (JSON..=) "ComponentName" Prelude.<$> componentName,
+                  (JSON..=) "CustomComponentConfiguration"
+                    Prelude.<$> customComponentConfiguration,
+                  (JSON..=) "DefaultOverwriteComponentConfiguration"
+                    Prelude.<$> defaultOverwriteComponentConfiguration])))
+instance Property "ComponentARN" ComponentMonitoringSettingProperty where
+  type PropertyType "ComponentARN" ComponentMonitoringSettingProperty = Value Prelude.Text
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty
+        {componentARN = Prelude.pure newValue, ..}
+instance Property "ComponentConfigurationMode" ComponentMonitoringSettingProperty where
+  type PropertyType "ComponentConfigurationMode" ComponentMonitoringSettingProperty = Value Prelude.Text
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty
+        {componentConfigurationMode = newValue, ..}
+instance Property "ComponentName" ComponentMonitoringSettingProperty where
+  type PropertyType "ComponentName" ComponentMonitoringSettingProperty = Value Prelude.Text
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty
+        {componentName = Prelude.pure newValue, ..}
+instance Property "CustomComponentConfiguration" ComponentMonitoringSettingProperty where
+  type PropertyType "CustomComponentConfiguration" ComponentMonitoringSettingProperty = ComponentConfigurationProperty
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty
+        {customComponentConfiguration = Prelude.pure newValue, ..}
+instance Property "DefaultOverwriteComponentConfiguration" ComponentMonitoringSettingProperty where
+  type PropertyType "DefaultOverwriteComponentConfiguration" ComponentMonitoringSettingProperty = ComponentConfigurationProperty
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty
+        {defaultOverwriteComponentConfiguration = Prelude.pure newValue,
+         ..}
+instance Property "Tier" ComponentMonitoringSettingProperty where
+  type PropertyType "Tier" ComponentMonitoringSettingProperty = Value Prelude.Text
+  set newValue ComponentMonitoringSettingProperty {..}
+    = ComponentMonitoringSettingProperty {tier = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ComponentMonitoringSettingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.ComponentMonitoringSettingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentMonitoringSettingProperty :: Prelude.Type
+instance ToResourceProperties ComponentMonitoringSettingProperty
+instance Prelude.Eq ComponentMonitoringSettingProperty
+instance Prelude.Show ComponentMonitoringSettingProperty
+instance JSON.ToJSON ComponentMonitoringSettingProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs
@@ -0,0 +1,144 @@
+module Stratosphere.ApplicationInsights.Application.ConfigurationDetailsProperty (
+        module Exports, ConfigurationDetailsProperty(..),
+        mkConfigurationDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.AlarmProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.AlarmMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.HAClusterPrometheusExporterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.HANAPrometheusExporterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.JMXPrometheusExporterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.LogProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.NetWeaverPrometheusExporterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.ProcessProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.SQLServerPrometheusExporterProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.WindowsEventProperty as Exports
+import Stratosphere.ResourceProperties
+data ConfigurationDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html>
+    ConfigurationDetailsProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-alarmmetrics>
+                                  alarmMetrics :: (Prelude.Maybe [AlarmMetricProperty]),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-alarms>
+                                  alarms :: (Prelude.Maybe [AlarmProperty]),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-haclusterprometheusexporter>
+                                  hAClusterPrometheusExporter :: (Prelude.Maybe HAClusterPrometheusExporterProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-hanaprometheusexporter>
+                                  hANAPrometheusExporter :: (Prelude.Maybe HANAPrometheusExporterProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-jmxprometheusexporter>
+                                  jMXPrometheusExporter :: (Prelude.Maybe JMXPrometheusExporterProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-logs>
+                                  logs :: (Prelude.Maybe [LogProperty]),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-netweaverprometheusexporter>
+                                  netWeaverPrometheusExporter :: (Prelude.Maybe NetWeaverPrometheusExporterProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-processes>
+                                  processes :: (Prelude.Maybe [ProcessProperty]),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-sqlserverprometheusexporter>
+                                  sQLServerPrometheusExporter :: (Prelude.Maybe SQLServerPrometheusExporterProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-configurationdetails.html#cfn-applicationinsights-application-configurationdetails-windowsevents>
+                                  windowsEvents :: (Prelude.Maybe [WindowsEventProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigurationDetailsProperty :: ConfigurationDetailsProperty
+mkConfigurationDetailsProperty
+  = ConfigurationDetailsProperty
+      {haddock_workaround_ = (), alarmMetrics = Prelude.Nothing,
+       alarms = Prelude.Nothing,
+       hAClusterPrometheusExporter = Prelude.Nothing,
+       hANAPrometheusExporter = Prelude.Nothing,
+       jMXPrometheusExporter = Prelude.Nothing, logs = Prelude.Nothing,
+       netWeaverPrometheusExporter = Prelude.Nothing,
+       processes = Prelude.Nothing,
+       sQLServerPrometheusExporter = Prelude.Nothing,
+       windowsEvents = Prelude.Nothing}
+instance ToResourceProperties ConfigurationDetailsProperty where
+  toResourceProperties ConfigurationDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.ConfigurationDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AlarmMetrics" Prelude.<$> alarmMetrics,
+                            (JSON..=) "Alarms" Prelude.<$> alarms,
+                            (JSON..=) "HAClusterPrometheusExporter"
+                              Prelude.<$> hAClusterPrometheusExporter,
+                            (JSON..=) "HANAPrometheusExporter"
+                              Prelude.<$> hANAPrometheusExporter,
+                            (JSON..=) "JMXPrometheusExporter"
+                              Prelude.<$> jMXPrometheusExporter,
+                            (JSON..=) "Logs" Prelude.<$> logs,
+                            (JSON..=) "NetWeaverPrometheusExporter"
+                              Prelude.<$> netWeaverPrometheusExporter,
+                            (JSON..=) "Processes" Prelude.<$> processes,
+                            (JSON..=) "SQLServerPrometheusExporter"
+                              Prelude.<$> sQLServerPrometheusExporter,
+                            (JSON..=) "WindowsEvents" Prelude.<$> windowsEvents])}
+instance JSON.ToJSON ConfigurationDetailsProperty where
+  toJSON ConfigurationDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AlarmMetrics" Prelude.<$> alarmMetrics,
+               (JSON..=) "Alarms" Prelude.<$> alarms,
+               (JSON..=) "HAClusterPrometheusExporter"
+                 Prelude.<$> hAClusterPrometheusExporter,
+               (JSON..=) "HANAPrometheusExporter"
+                 Prelude.<$> hANAPrometheusExporter,
+               (JSON..=) "JMXPrometheusExporter"
+                 Prelude.<$> jMXPrometheusExporter,
+               (JSON..=) "Logs" Prelude.<$> logs,
+               (JSON..=) "NetWeaverPrometheusExporter"
+                 Prelude.<$> netWeaverPrometheusExporter,
+               (JSON..=) "Processes" Prelude.<$> processes,
+               (JSON..=) "SQLServerPrometheusExporter"
+                 Prelude.<$> sQLServerPrometheusExporter,
+               (JSON..=) "WindowsEvents" Prelude.<$> windowsEvents]))
+instance Property "AlarmMetrics" ConfigurationDetailsProperty where
+  type PropertyType "AlarmMetrics" ConfigurationDetailsProperty = [AlarmMetricProperty]
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {alarmMetrics = Prelude.pure newValue, ..}
+instance Property "Alarms" ConfigurationDetailsProperty where
+  type PropertyType "Alarms" ConfigurationDetailsProperty = [AlarmProperty]
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty {alarms = Prelude.pure newValue, ..}
+instance Property "HAClusterPrometheusExporter" ConfigurationDetailsProperty where
+  type PropertyType "HAClusterPrometheusExporter" ConfigurationDetailsProperty = HAClusterPrometheusExporterProperty
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {hAClusterPrometheusExporter = Prelude.pure newValue, ..}
+instance Property "HANAPrometheusExporter" ConfigurationDetailsProperty where
+  type PropertyType "HANAPrometheusExporter" ConfigurationDetailsProperty = HANAPrometheusExporterProperty
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {hANAPrometheusExporter = Prelude.pure newValue, ..}
+instance Property "JMXPrometheusExporter" ConfigurationDetailsProperty where
+  type PropertyType "JMXPrometheusExporter" ConfigurationDetailsProperty = JMXPrometheusExporterProperty
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {jMXPrometheusExporter = Prelude.pure newValue, ..}
+instance Property "Logs" ConfigurationDetailsProperty where
+  type PropertyType "Logs" ConfigurationDetailsProperty = [LogProperty]
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty {logs = Prelude.pure newValue, ..}
+instance Property "NetWeaverPrometheusExporter" ConfigurationDetailsProperty where
+  type PropertyType "NetWeaverPrometheusExporter" ConfigurationDetailsProperty = NetWeaverPrometheusExporterProperty
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {netWeaverPrometheusExporter = Prelude.pure newValue, ..}
+instance Property "Processes" ConfigurationDetailsProperty where
+  type PropertyType "Processes" ConfigurationDetailsProperty = [ProcessProperty]
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {processes = Prelude.pure newValue, ..}
+instance Property "SQLServerPrometheusExporter" ConfigurationDetailsProperty where
+  type PropertyType "SQLServerPrometheusExporter" ConfigurationDetailsProperty = SQLServerPrometheusExporterProperty
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {sQLServerPrometheusExporter = Prelude.pure newValue, ..}
+instance Property "WindowsEvents" ConfigurationDetailsProperty where
+  type PropertyType "WindowsEvents" ConfigurationDetailsProperty = [WindowsEventProperty]
+  set newValue ConfigurationDetailsProperty {..}
+    = ConfigurationDetailsProperty
+        {windowsEvents = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ConfigurationDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.ConfigurationDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConfigurationDetailsProperty :: Prelude.Type
+instance ToResourceProperties ConfigurationDetailsProperty
+instance Prelude.Eq ConfigurationDetailsProperty
+instance Prelude.Show ConfigurationDetailsProperty
+instance JSON.ToJSON ConfigurationDetailsProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.ApplicationInsights.Application.CustomComponentProperty (
+        CustomComponentProperty(..), mkCustomComponentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomComponentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-customcomponent.html>
+    CustomComponentProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-customcomponent.html#cfn-applicationinsights-application-customcomponent-componentname>
+                             componentName :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-customcomponent.html#cfn-applicationinsights-application-customcomponent-resourcelist>
+                             resourceList :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomComponentProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> CustomComponentProperty
+mkCustomComponentProperty componentName resourceList
+  = CustomComponentProperty
+      {haddock_workaround_ = (), componentName = componentName,
+       resourceList = resourceList}
+instance ToResourceProperties CustomComponentProperty where
+  toResourceProperties CustomComponentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.CustomComponent",
+         supportsTags = Prelude.False,
+         properties = ["ComponentName" JSON..= componentName,
+                       "ResourceList" JSON..= resourceList]}
+instance JSON.ToJSON CustomComponentProperty where
+  toJSON CustomComponentProperty {..}
+    = JSON.object
+        ["ComponentName" JSON..= componentName,
+         "ResourceList" JSON..= resourceList]
+instance Property "ComponentName" CustomComponentProperty where
+  type PropertyType "ComponentName" CustomComponentProperty = Value Prelude.Text
+  set newValue CustomComponentProperty {..}
+    = CustomComponentProperty {componentName = newValue, ..}
+instance Property "ResourceList" CustomComponentProperty where
+  type PropertyType "ResourceList" CustomComponentProperty = ValueList Prelude.Text
+  set newValue CustomComponentProperty {..}
+    = CustomComponentProperty {resourceList = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/CustomComponentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.CustomComponentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomComponentProperty :: Prelude.Type
+instance ToResourceProperties CustomComponentProperty
+instance Prelude.Eq CustomComponentProperty
+instance Prelude.Show CustomComponentProperty
+instance JSON.ToJSON CustomComponentProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.ApplicationInsights.Application.HAClusterPrometheusExporterProperty (
+        HAClusterPrometheusExporterProperty(..),
+        mkHAClusterPrometheusExporterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HAClusterPrometheusExporterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-haclusterprometheusexporter.html>
+    HAClusterPrometheusExporterProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-haclusterprometheusexporter.html#cfn-applicationinsights-application-haclusterprometheusexporter-prometheusport>
+                                         prometheusPort :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHAClusterPrometheusExporterProperty ::
+  HAClusterPrometheusExporterProperty
+mkHAClusterPrometheusExporterProperty
+  = HAClusterPrometheusExporterProperty
+      {haddock_workaround_ = (), prometheusPort = Prelude.Nothing}
+instance ToResourceProperties HAClusterPrometheusExporterProperty where
+  toResourceProperties HAClusterPrometheusExporterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.HAClusterPrometheusExporter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort])}
+instance JSON.ToJSON HAClusterPrometheusExporterProperty where
+  toJSON HAClusterPrometheusExporterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort]))
+instance Property "PrometheusPort" HAClusterPrometheusExporterProperty where
+  type PropertyType "PrometheusPort" HAClusterPrometheusExporterProperty = Value Prelude.Text
+  set newValue HAClusterPrometheusExporterProperty {..}
+    = HAClusterPrometheusExporterProperty
+        {prometheusPort = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/HAClusterPrometheusExporterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.HAClusterPrometheusExporterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HAClusterPrometheusExporterProperty :: Prelude.Type
+instance ToResourceProperties HAClusterPrometheusExporterProperty
+instance Prelude.Eq HAClusterPrometheusExporterProperty
+instance Prelude.Show HAClusterPrometheusExporterProperty
+instance JSON.ToJSON HAClusterPrometheusExporterProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs
@@ -0,0 +1,82 @@
+module Stratosphere.ApplicationInsights.Application.HANAPrometheusExporterProperty (
+        HANAPrometheusExporterProperty(..),
+        mkHANAPrometheusExporterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HANAPrometheusExporterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html>
+    HANAPrometheusExporterProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html#cfn-applicationinsights-application-hanaprometheusexporter-agreetoinstallhanadbclient>
+                                    agreeToInstallHANADBClient :: (Value Prelude.Bool),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html#cfn-applicationinsights-application-hanaprometheusexporter-hanaport>
+                                    hANAPort :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html#cfn-applicationinsights-application-hanaprometheusexporter-hanasid>
+                                    hANASID :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html#cfn-applicationinsights-application-hanaprometheusexporter-hanasecretname>
+                                    hANASecretName :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-hanaprometheusexporter.html#cfn-applicationinsights-application-hanaprometheusexporter-prometheusport>
+                                    prometheusPort :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHANAPrometheusExporterProperty ::
+  Value Prelude.Bool
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> HANAPrometheusExporterProperty
+mkHANAPrometheusExporterProperty
+  agreeToInstallHANADBClient
+  hANAPort
+  hANASID
+  hANASecretName
+  = HANAPrometheusExporterProperty
+      {haddock_workaround_ = (),
+       agreeToInstallHANADBClient = agreeToInstallHANADBClient,
+       hANAPort = hANAPort, hANASID = hANASID,
+       hANASecretName = hANASecretName, prometheusPort = Prelude.Nothing}
+instance ToResourceProperties HANAPrometheusExporterProperty where
+  toResourceProperties HANAPrometheusExporterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.HANAPrometheusExporter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AgreeToInstallHANADBClient" JSON..= agreeToInstallHANADBClient,
+                            "HANAPort" JSON..= hANAPort, "HANASID" JSON..= hANASID,
+                            "HANASecretName" JSON..= hANASecretName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort]))}
+instance JSON.ToJSON HANAPrometheusExporterProperty where
+  toJSON HANAPrometheusExporterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AgreeToInstallHANADBClient" JSON..= agreeToInstallHANADBClient,
+               "HANAPort" JSON..= hANAPort, "HANASID" JSON..= hANASID,
+               "HANASecretName" JSON..= hANASecretName]
+              (Prelude.catMaybes
+                 [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort])))
+instance Property "AgreeToInstallHANADBClient" HANAPrometheusExporterProperty where
+  type PropertyType "AgreeToInstallHANADBClient" HANAPrometheusExporterProperty = Value Prelude.Bool
+  set newValue HANAPrometheusExporterProperty {..}
+    = HANAPrometheusExporterProperty
+        {agreeToInstallHANADBClient = newValue, ..}
+instance Property "HANAPort" HANAPrometheusExporterProperty where
+  type PropertyType "HANAPort" HANAPrometheusExporterProperty = Value Prelude.Text
+  set newValue HANAPrometheusExporterProperty {..}
+    = HANAPrometheusExporterProperty {hANAPort = newValue, ..}
+instance Property "HANASID" HANAPrometheusExporterProperty where
+  type PropertyType "HANASID" HANAPrometheusExporterProperty = Value Prelude.Text
+  set newValue HANAPrometheusExporterProperty {..}
+    = HANAPrometheusExporterProperty {hANASID = newValue, ..}
+instance Property "HANASecretName" HANAPrometheusExporterProperty where
+  type PropertyType "HANASecretName" HANAPrometheusExporterProperty = Value Prelude.Text
+  set newValue HANAPrometheusExporterProperty {..}
+    = HANAPrometheusExporterProperty {hANASecretName = newValue, ..}
+instance Property "PrometheusPort" HANAPrometheusExporterProperty where
+  type PropertyType "PrometheusPort" HANAPrometheusExporterProperty = Value Prelude.Text
+  set newValue HANAPrometheusExporterProperty {..}
+    = HANAPrometheusExporterProperty
+        {prometheusPort = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/HANAPrometheusExporterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.HANAPrometheusExporterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HANAPrometheusExporterProperty :: Prelude.Type
+instance ToResourceProperties HANAPrometheusExporterProperty
+instance Prelude.Eq HANAPrometheusExporterProperty
+instance Prelude.Show HANAPrometheusExporterProperty
+instance JSON.ToJSON HANAPrometheusExporterProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.ApplicationInsights.Application.JMXPrometheusExporterProperty (
+        JMXPrometheusExporterProperty(..), mkJMXPrometheusExporterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data JMXPrometheusExporterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-jmxprometheusexporter.html>
+    JMXPrometheusExporterProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-jmxprometheusexporter.html#cfn-applicationinsights-application-jmxprometheusexporter-hostport>
+                                   hostPort :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-jmxprometheusexporter.html#cfn-applicationinsights-application-jmxprometheusexporter-jmxurl>
+                                   jMXURL :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-jmxprometheusexporter.html#cfn-applicationinsights-application-jmxprometheusexporter-prometheusport>
+                                   prometheusPort :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkJMXPrometheusExporterProperty :: JMXPrometheusExporterProperty
+mkJMXPrometheusExporterProperty
+  = JMXPrometheusExporterProperty
+      {haddock_workaround_ = (), hostPort = Prelude.Nothing,
+       jMXURL = Prelude.Nothing, prometheusPort = Prelude.Nothing}
+instance ToResourceProperties JMXPrometheusExporterProperty where
+  toResourceProperties JMXPrometheusExporterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.JMXPrometheusExporter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "HostPort" Prelude.<$> hostPort,
+                            (JSON..=) "JMXURL" Prelude.<$> jMXURL,
+                            (JSON..=) "PrometheusPort" Prelude.<$> prometheusPort])}
+instance JSON.ToJSON JMXPrometheusExporterProperty where
+  toJSON JMXPrometheusExporterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "HostPort" Prelude.<$> hostPort,
+               (JSON..=) "JMXURL" Prelude.<$> jMXURL,
+               (JSON..=) "PrometheusPort" Prelude.<$> prometheusPort]))
+instance Property "HostPort" JMXPrometheusExporterProperty where
+  type PropertyType "HostPort" JMXPrometheusExporterProperty = Value Prelude.Text
+  set newValue JMXPrometheusExporterProperty {..}
+    = JMXPrometheusExporterProperty
+        {hostPort = Prelude.pure newValue, ..}
+instance Property "JMXURL" JMXPrometheusExporterProperty where
+  type PropertyType "JMXURL" JMXPrometheusExporterProperty = Value Prelude.Text
+  set newValue JMXPrometheusExporterProperty {..}
+    = JMXPrometheusExporterProperty
+        {jMXURL = Prelude.pure newValue, ..}
+instance Property "PrometheusPort" JMXPrometheusExporterProperty where
+  type PropertyType "PrometheusPort" JMXPrometheusExporterProperty = Value Prelude.Text
+  set newValue JMXPrometheusExporterProperty {..}
+    = JMXPrometheusExporterProperty
+        {prometheusPort = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/JMXPrometheusExporterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.JMXPrometheusExporterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data JMXPrometheusExporterProperty :: Prelude.Type
+instance ToResourceProperties JMXPrometheusExporterProperty
+instance Prelude.Eq JMXPrometheusExporterProperty
+instance Prelude.Show JMXPrometheusExporterProperty
+instance JSON.ToJSON JMXPrometheusExporterProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.ApplicationInsights.Application.LogPatternProperty (
+        LogPatternProperty(..), mkLogPatternProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LogPatternProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpattern.html>
+    LogPatternProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpattern.html#cfn-applicationinsights-application-logpattern-pattern>
+                        pattern :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpattern.html#cfn-applicationinsights-application-logpattern-patternname>
+                        patternName :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpattern.html#cfn-applicationinsights-application-logpattern-rank>
+                        rank :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLogPatternProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Integer -> LogPatternProperty
+mkLogPatternProperty pattern patternName rank
+  = LogPatternProperty
+      {haddock_workaround_ = (), pattern = pattern,
+       patternName = patternName, rank = rank}
+instance ToResourceProperties LogPatternProperty where
+  toResourceProperties LogPatternProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.LogPattern",
+         supportsTags = Prelude.False,
+         properties = ["Pattern" JSON..= pattern,
+                       "PatternName" JSON..= patternName, "Rank" JSON..= rank]}
+instance JSON.ToJSON LogPatternProperty where
+  toJSON LogPatternProperty {..}
+    = JSON.object
+        ["Pattern" JSON..= pattern, "PatternName" JSON..= patternName,
+         "Rank" JSON..= rank]
+instance Property "Pattern" LogPatternProperty where
+  type PropertyType "Pattern" LogPatternProperty = Value Prelude.Text
+  set newValue LogPatternProperty {..}
+    = LogPatternProperty {pattern = newValue, ..}
+instance Property "PatternName" LogPatternProperty where
+  type PropertyType "PatternName" LogPatternProperty = Value Prelude.Text
+  set newValue LogPatternProperty {..}
+    = LogPatternProperty {patternName = newValue, ..}
+instance Property "Rank" LogPatternProperty where
+  type PropertyType "Rank" LogPatternProperty = Value Prelude.Integer
+  set newValue LogPatternProperty {..}
+    = LogPatternProperty {rank = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogPatternProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.LogPatternProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LogPatternProperty :: Prelude.Type
+instance ToResourceProperties LogPatternProperty
+instance Prelude.Eq LogPatternProperty
+instance Prelude.Show LogPatternProperty
+instance JSON.ToJSON LogPatternProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.ApplicationInsights.Application.LogPatternSetProperty (
+        module Exports, LogPatternSetProperty(..), mkLogPatternSetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.LogPatternProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LogPatternSetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpatternset.html>
+    LogPatternSetProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpatternset.html#cfn-applicationinsights-application-logpatternset-logpatterns>
+                           logPatterns :: [LogPatternProperty],
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-logpatternset.html#cfn-applicationinsights-application-logpatternset-patternsetname>
+                           patternSetName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLogPatternSetProperty ::
+  [LogPatternProperty] -> Value Prelude.Text -> LogPatternSetProperty
+mkLogPatternSetProperty logPatterns patternSetName
+  = LogPatternSetProperty
+      {haddock_workaround_ = (), logPatterns = logPatterns,
+       patternSetName = patternSetName}
+instance ToResourceProperties LogPatternSetProperty where
+  toResourceProperties LogPatternSetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.LogPatternSet",
+         supportsTags = Prelude.False,
+         properties = ["LogPatterns" JSON..= logPatterns,
+                       "PatternSetName" JSON..= patternSetName]}
+instance JSON.ToJSON LogPatternSetProperty where
+  toJSON LogPatternSetProperty {..}
+    = JSON.object
+        ["LogPatterns" JSON..= logPatterns,
+         "PatternSetName" JSON..= patternSetName]
+instance Property "LogPatterns" LogPatternSetProperty where
+  type PropertyType "LogPatterns" LogPatternSetProperty = [LogPatternProperty]
+  set newValue LogPatternSetProperty {..}
+    = LogPatternSetProperty {logPatterns = newValue, ..}
+instance Property "PatternSetName" LogPatternSetProperty where
+  type PropertyType "PatternSetName" LogPatternSetProperty = Value Prelude.Text
+  set newValue LogPatternSetProperty {..}
+    = LogPatternSetProperty {patternSetName = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogPatternSetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.LogPatternSetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LogPatternSetProperty :: Prelude.Type
+instance ToResourceProperties LogPatternSetProperty
+instance Prelude.Eq LogPatternSetProperty
+instance Prelude.Show LogPatternSetProperty
+instance JSON.ToJSON LogPatternSetProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.ApplicationInsights.Application.LogProperty (
+        LogProperty(..), mkLogProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LogProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html>
+    LogProperty {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html#cfn-applicationinsights-application-log-encoding>
+                 encoding :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html#cfn-applicationinsights-application-log-loggroupname>
+                 logGroupName :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html#cfn-applicationinsights-application-log-logpath>
+                 logPath :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html#cfn-applicationinsights-application-log-logtype>
+                 logType :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-log.html#cfn-applicationinsights-application-log-patternset>
+                 patternSet :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLogProperty :: Value Prelude.Text -> LogProperty
+mkLogProperty logType
+  = LogProperty
+      {haddock_workaround_ = (), logType = logType,
+       encoding = Prelude.Nothing, logGroupName = Prelude.Nothing,
+       logPath = Prelude.Nothing, patternSet = Prelude.Nothing}
+instance ToResourceProperties LogProperty where
+  toResourceProperties LogProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.Log",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["LogType" JSON..= logType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Encoding" Prelude.<$> encoding,
+                               (JSON..=) "LogGroupName" Prelude.<$> logGroupName,
+                               (JSON..=) "LogPath" Prelude.<$> logPath,
+                               (JSON..=) "PatternSet" Prelude.<$> patternSet]))}
+instance JSON.ToJSON LogProperty where
+  toJSON LogProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["LogType" JSON..= logType]
+              (Prelude.catMaybes
+                 [(JSON..=) "Encoding" Prelude.<$> encoding,
+                  (JSON..=) "LogGroupName" Prelude.<$> logGroupName,
+                  (JSON..=) "LogPath" Prelude.<$> logPath,
+                  (JSON..=) "PatternSet" Prelude.<$> patternSet])))
+instance Property "Encoding" LogProperty where
+  type PropertyType "Encoding" LogProperty = Value Prelude.Text
+  set newValue LogProperty {..}
+    = LogProperty {encoding = Prelude.pure newValue, ..}
+instance Property "LogGroupName" LogProperty where
+  type PropertyType "LogGroupName" LogProperty = Value Prelude.Text
+  set newValue LogProperty {..}
+    = LogProperty {logGroupName = Prelude.pure newValue, ..}
+instance Property "LogPath" LogProperty where
+  type PropertyType "LogPath" LogProperty = Value Prelude.Text
+  set newValue LogProperty {..}
+    = LogProperty {logPath = Prelude.pure newValue, ..}
+instance Property "LogType" LogProperty where
+  type PropertyType "LogType" LogProperty = Value Prelude.Text
+  set newValue LogProperty {..}
+    = LogProperty {logType = newValue, ..}
+instance Property "PatternSet" LogProperty where
+  type PropertyType "PatternSet" LogProperty = Value Prelude.Text
+  set newValue LogProperty {..}
+    = LogProperty {patternSet = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/LogProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.LogProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LogProperty :: Prelude.Type
+instance ToResourceProperties LogProperty
+instance Prelude.Eq LogProperty
+instance Prelude.Show LogProperty
+instance JSON.ToJSON LogProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.ApplicationInsights.Application.NetWeaverPrometheusExporterProperty (
+        NetWeaverPrometheusExporterProperty(..),
+        mkNetWeaverPrometheusExporterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NetWeaverPrometheusExporterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-netweaverprometheusexporter.html>
+    NetWeaverPrometheusExporterProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-netweaverprometheusexporter.html#cfn-applicationinsights-application-netweaverprometheusexporter-instancenumbers>
+                                         instanceNumbers :: (ValueList Prelude.Text),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-netweaverprometheusexporter.html#cfn-applicationinsights-application-netweaverprometheusexporter-prometheusport>
+                                         prometheusPort :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-netweaverprometheusexporter.html#cfn-applicationinsights-application-netweaverprometheusexporter-sapsid>
+                                         sAPSID :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNetWeaverPrometheusExporterProperty ::
+  ValueList Prelude.Text
+  -> Value Prelude.Text -> NetWeaverPrometheusExporterProperty
+mkNetWeaverPrometheusExporterProperty instanceNumbers sAPSID
+  = NetWeaverPrometheusExporterProperty
+      {haddock_workaround_ = (), instanceNumbers = instanceNumbers,
+       sAPSID = sAPSID, prometheusPort = Prelude.Nothing}
+instance ToResourceProperties NetWeaverPrometheusExporterProperty where
+  toResourceProperties NetWeaverPrometheusExporterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.NetWeaverPrometheusExporter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceNumbers" JSON..= instanceNumbers,
+                            "SAPSID" JSON..= sAPSID]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort]))}
+instance JSON.ToJSON NetWeaverPrometheusExporterProperty where
+  toJSON NetWeaverPrometheusExporterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceNumbers" JSON..= instanceNumbers,
+               "SAPSID" JSON..= sAPSID]
+              (Prelude.catMaybes
+                 [(JSON..=) "PrometheusPort" Prelude.<$> prometheusPort])))
+instance Property "InstanceNumbers" NetWeaverPrometheusExporterProperty where
+  type PropertyType "InstanceNumbers" NetWeaverPrometheusExporterProperty = ValueList Prelude.Text
+  set newValue NetWeaverPrometheusExporterProperty {..}
+    = NetWeaverPrometheusExporterProperty
+        {instanceNumbers = newValue, ..}
+instance Property "PrometheusPort" NetWeaverPrometheusExporterProperty where
+  type PropertyType "PrometheusPort" NetWeaverPrometheusExporterProperty = Value Prelude.Text
+  set newValue NetWeaverPrometheusExporterProperty {..}
+    = NetWeaverPrometheusExporterProperty
+        {prometheusPort = Prelude.pure newValue, ..}
+instance Property "SAPSID" NetWeaverPrometheusExporterProperty where
+  type PropertyType "SAPSID" NetWeaverPrometheusExporterProperty = Value Prelude.Text
+  set newValue NetWeaverPrometheusExporterProperty {..}
+    = NetWeaverPrometheusExporterProperty {sAPSID = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/NetWeaverPrometheusExporterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.NetWeaverPrometheusExporterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NetWeaverPrometheusExporterProperty :: Prelude.Type
+instance ToResourceProperties NetWeaverPrometheusExporterProperty
+instance Prelude.Eq NetWeaverPrometheusExporterProperty
+instance Prelude.Show NetWeaverPrometheusExporterProperty
+instance JSON.ToJSON NetWeaverPrometheusExporterProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.ApplicationInsights.Application.ProcessProperty (
+        module Exports, ProcessProperty(..), mkProcessProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.AlarmMetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProcessProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-process.html>
+    ProcessProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-process.html#cfn-applicationinsights-application-process-alarmmetrics>
+                     alarmMetrics :: [AlarmMetricProperty],
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-process.html#cfn-applicationinsights-application-process-processname>
+                     processName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProcessProperty ::
+  [AlarmMetricProperty] -> Value Prelude.Text -> ProcessProperty
+mkProcessProperty alarmMetrics processName
+  = ProcessProperty
+      {haddock_workaround_ = (), alarmMetrics = alarmMetrics,
+       processName = processName}
+instance ToResourceProperties ProcessProperty where
+  toResourceProperties ProcessProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.Process",
+         supportsTags = Prelude.False,
+         properties = ["AlarmMetrics" JSON..= alarmMetrics,
+                       "ProcessName" JSON..= processName]}
+instance JSON.ToJSON ProcessProperty where
+  toJSON ProcessProperty {..}
+    = JSON.object
+        ["AlarmMetrics" JSON..= alarmMetrics,
+         "ProcessName" JSON..= processName]
+instance Property "AlarmMetrics" ProcessProperty where
+  type PropertyType "AlarmMetrics" ProcessProperty = [AlarmMetricProperty]
+  set newValue ProcessProperty {..}
+    = ProcessProperty {alarmMetrics = newValue, ..}
+instance Property "ProcessName" ProcessProperty where
+  type PropertyType "ProcessName" ProcessProperty = Value Prelude.Text
+  set newValue ProcessProperty {..}
+    = ProcessProperty {processName = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/ProcessProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.ProcessProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProcessProperty :: Prelude.Type
+instance ToResourceProperties ProcessProperty
+instance Prelude.Eq ProcessProperty
+instance Prelude.Show ProcessProperty
+instance JSON.ToJSON ProcessProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.ApplicationInsights.Application.SQLServerPrometheusExporterProperty (
+        SQLServerPrometheusExporterProperty(..),
+        mkSQLServerPrometheusExporterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SQLServerPrometheusExporterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-sqlserverprometheusexporter.html>
+    SQLServerPrometheusExporterProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-sqlserverprometheusexporter.html#cfn-applicationinsights-application-sqlserverprometheusexporter-prometheusport>
+                                         prometheusPort :: (Value Prelude.Text),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-sqlserverprometheusexporter.html#cfn-applicationinsights-application-sqlserverprometheusexporter-sqlsecretname>
+                                         sQLSecretName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSQLServerPrometheusExporterProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SQLServerPrometheusExporterProperty
+mkSQLServerPrometheusExporterProperty prometheusPort sQLSecretName
+  = SQLServerPrometheusExporterProperty
+      {haddock_workaround_ = (), prometheusPort = prometheusPort,
+       sQLSecretName = sQLSecretName}
+instance ToResourceProperties SQLServerPrometheusExporterProperty where
+  toResourceProperties SQLServerPrometheusExporterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.SQLServerPrometheusExporter",
+         supportsTags = Prelude.False,
+         properties = ["PrometheusPort" JSON..= prometheusPort,
+                       "SQLSecretName" JSON..= sQLSecretName]}
+instance JSON.ToJSON SQLServerPrometheusExporterProperty where
+  toJSON SQLServerPrometheusExporterProperty {..}
+    = JSON.object
+        ["PrometheusPort" JSON..= prometheusPort,
+         "SQLSecretName" JSON..= sQLSecretName]
+instance Property "PrometheusPort" SQLServerPrometheusExporterProperty where
+  type PropertyType "PrometheusPort" SQLServerPrometheusExporterProperty = Value Prelude.Text
+  set newValue SQLServerPrometheusExporterProperty {..}
+    = SQLServerPrometheusExporterProperty
+        {prometheusPort = newValue, ..}
+instance Property "SQLSecretName" SQLServerPrometheusExporterProperty where
+  type PropertyType "SQLSecretName" SQLServerPrometheusExporterProperty = Value Prelude.Text
+  set newValue SQLServerPrometheusExporterProperty {..}
+    = SQLServerPrometheusExporterProperty
+        {sQLSecretName = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SQLServerPrometheusExporterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.SQLServerPrometheusExporterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SQLServerPrometheusExporterProperty :: Prelude.Type
+instance ToResourceProperties SQLServerPrometheusExporterProperty
+instance Prelude.Eq SQLServerPrometheusExporterProperty
+instance Prelude.Show SQLServerPrometheusExporterProperty
+instance JSON.ToJSON SQLServerPrometheusExporterProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.ApplicationInsights.Application.SubComponentConfigurationDetailsProperty (
+        module Exports, SubComponentConfigurationDetailsProperty(..),
+        mkSubComponentConfigurationDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.AlarmMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.LogProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.ProcessProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.WindowsEventProperty as Exports
+import Stratosphere.ResourceProperties
+data SubComponentConfigurationDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponentconfigurationdetails.html>
+    SubComponentConfigurationDetailsProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponentconfigurationdetails.html#cfn-applicationinsights-application-subcomponentconfigurationdetails-alarmmetrics>
+                                              alarmMetrics :: (Prelude.Maybe [AlarmMetricProperty]),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponentconfigurationdetails.html#cfn-applicationinsights-application-subcomponentconfigurationdetails-logs>
+                                              logs :: (Prelude.Maybe [LogProperty]),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponentconfigurationdetails.html#cfn-applicationinsights-application-subcomponentconfigurationdetails-processes>
+                                              processes :: (Prelude.Maybe [ProcessProperty]),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponentconfigurationdetails.html#cfn-applicationinsights-application-subcomponentconfigurationdetails-windowsevents>
+                                              windowsEvents :: (Prelude.Maybe [WindowsEventProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubComponentConfigurationDetailsProperty ::
+  SubComponentConfigurationDetailsProperty
+mkSubComponentConfigurationDetailsProperty
+  = SubComponentConfigurationDetailsProperty
+      {haddock_workaround_ = (), alarmMetrics = Prelude.Nothing,
+       logs = Prelude.Nothing, processes = Prelude.Nothing,
+       windowsEvents = Prelude.Nothing}
+instance ToResourceProperties SubComponentConfigurationDetailsProperty where
+  toResourceProperties SubComponentConfigurationDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.SubComponentConfigurationDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AlarmMetrics" Prelude.<$> alarmMetrics,
+                            (JSON..=) "Logs" Prelude.<$> logs,
+                            (JSON..=) "Processes" Prelude.<$> processes,
+                            (JSON..=) "WindowsEvents" Prelude.<$> windowsEvents])}
+instance JSON.ToJSON SubComponentConfigurationDetailsProperty where
+  toJSON SubComponentConfigurationDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AlarmMetrics" Prelude.<$> alarmMetrics,
+               (JSON..=) "Logs" Prelude.<$> logs,
+               (JSON..=) "Processes" Prelude.<$> processes,
+               (JSON..=) "WindowsEvents" Prelude.<$> windowsEvents]))
+instance Property "AlarmMetrics" SubComponentConfigurationDetailsProperty where
+  type PropertyType "AlarmMetrics" SubComponentConfigurationDetailsProperty = [AlarmMetricProperty]
+  set newValue SubComponentConfigurationDetailsProperty {..}
+    = SubComponentConfigurationDetailsProperty
+        {alarmMetrics = Prelude.pure newValue, ..}
+instance Property "Logs" SubComponentConfigurationDetailsProperty where
+  type PropertyType "Logs" SubComponentConfigurationDetailsProperty = [LogProperty]
+  set newValue SubComponentConfigurationDetailsProperty {..}
+    = SubComponentConfigurationDetailsProperty
+        {logs = Prelude.pure newValue, ..}
+instance Property "Processes" SubComponentConfigurationDetailsProperty where
+  type PropertyType "Processes" SubComponentConfigurationDetailsProperty = [ProcessProperty]
+  set newValue SubComponentConfigurationDetailsProperty {..}
+    = SubComponentConfigurationDetailsProperty
+        {processes = Prelude.pure newValue, ..}
+instance Property "WindowsEvents" SubComponentConfigurationDetailsProperty where
+  type PropertyType "WindowsEvents" SubComponentConfigurationDetailsProperty = [WindowsEventProperty]
+  set newValue SubComponentConfigurationDetailsProperty {..}
+    = SubComponentConfigurationDetailsProperty
+        {windowsEvents = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SubComponentConfigurationDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.SubComponentConfigurationDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SubComponentConfigurationDetailsProperty :: Prelude.Type
+instance ToResourceProperties SubComponentConfigurationDetailsProperty
+instance Prelude.Eq SubComponentConfigurationDetailsProperty
+instance Prelude.Show SubComponentConfigurationDetailsProperty
+instance JSON.ToJSON SubComponentConfigurationDetailsProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.ApplicationInsights.Application.SubComponentTypeConfigurationProperty (
+        module Exports, SubComponentTypeConfigurationProperty(..),
+        mkSubComponentTypeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApplicationInsights.Application.SubComponentConfigurationDetailsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SubComponentTypeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponenttypeconfiguration.html>
+    SubComponentTypeConfigurationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponenttypeconfiguration.html#cfn-applicationinsights-application-subcomponenttypeconfiguration-subcomponentconfigurationdetails>
+                                           subComponentConfigurationDetails :: SubComponentConfigurationDetailsProperty,
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-subcomponenttypeconfiguration.html#cfn-applicationinsights-application-subcomponenttypeconfiguration-subcomponenttype>
+                                           subComponentType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubComponentTypeConfigurationProperty ::
+  SubComponentConfigurationDetailsProperty
+  -> Value Prelude.Text -> SubComponentTypeConfigurationProperty
+mkSubComponentTypeConfigurationProperty
+  subComponentConfigurationDetails
+  subComponentType
+  = SubComponentTypeConfigurationProperty
+      {haddock_workaround_ = (),
+       subComponentConfigurationDetails = subComponentConfigurationDetails,
+       subComponentType = subComponentType}
+instance ToResourceProperties SubComponentTypeConfigurationProperty where
+  toResourceProperties SubComponentTypeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.SubComponentTypeConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["SubComponentConfigurationDetails"
+                         JSON..= subComponentConfigurationDetails,
+                       "SubComponentType" JSON..= subComponentType]}
+instance JSON.ToJSON SubComponentTypeConfigurationProperty where
+  toJSON SubComponentTypeConfigurationProperty {..}
+    = JSON.object
+        ["SubComponentConfigurationDetails"
+           JSON..= subComponentConfigurationDetails,
+         "SubComponentType" JSON..= subComponentType]
+instance Property "SubComponentConfigurationDetails" SubComponentTypeConfigurationProperty where
+  type PropertyType "SubComponentConfigurationDetails" SubComponentTypeConfigurationProperty = SubComponentConfigurationDetailsProperty
+  set newValue SubComponentTypeConfigurationProperty {..}
+    = SubComponentTypeConfigurationProperty
+        {subComponentConfigurationDetails = newValue, ..}
+instance Property "SubComponentType" SubComponentTypeConfigurationProperty where
+  type PropertyType "SubComponentType" SubComponentTypeConfigurationProperty = Value Prelude.Text
+  set newValue SubComponentTypeConfigurationProperty {..}
+    = SubComponentTypeConfigurationProperty
+        {subComponentType = newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/SubComponentTypeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.SubComponentTypeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SubComponentTypeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties SubComponentTypeConfigurationProperty
+instance Prelude.Eq SubComponentTypeConfigurationProperty
+instance Prelude.Show SubComponentTypeConfigurationProperty
+instance JSON.ToJSON SubComponentTypeConfigurationProperty
diff --git a/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs b/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.ApplicationInsights.Application.WindowsEventProperty (
+        WindowsEventProperty(..), mkWindowsEventProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WindowsEventProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-windowsevent.html>
+    WindowsEventProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-windowsevent.html#cfn-applicationinsights-application-windowsevent-eventlevels>
+                          eventLevels :: (ValueList Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-windowsevent.html#cfn-applicationinsights-application-windowsevent-eventname>
+                          eventName :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-windowsevent.html#cfn-applicationinsights-application-windowsevent-loggroupname>
+                          logGroupName :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationinsights-application-windowsevent.html#cfn-applicationinsights-application-windowsevent-patternset>
+                          patternSet :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWindowsEventProperty ::
+  ValueList Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> WindowsEventProperty
+mkWindowsEventProperty eventLevels eventName logGroupName
+  = WindowsEventProperty
+      {haddock_workaround_ = (), eventLevels = eventLevels,
+       eventName = eventName, logGroupName = logGroupName,
+       patternSet = Prelude.Nothing}
+instance ToResourceProperties WindowsEventProperty where
+  toResourceProperties WindowsEventProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApplicationInsights::Application.WindowsEvent",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EventLevels" JSON..= eventLevels, "EventName" JSON..= eventName,
+                            "LogGroupName" JSON..= logGroupName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PatternSet" Prelude.<$> patternSet]))}
+instance JSON.ToJSON WindowsEventProperty where
+  toJSON WindowsEventProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EventLevels" JSON..= eventLevels, "EventName" JSON..= eventName,
+               "LogGroupName" JSON..= logGroupName]
+              (Prelude.catMaybes
+                 [(JSON..=) "PatternSet" Prelude.<$> patternSet])))
+instance Property "EventLevels" WindowsEventProperty where
+  type PropertyType "EventLevels" WindowsEventProperty = ValueList Prelude.Text
+  set newValue WindowsEventProperty {..}
+    = WindowsEventProperty {eventLevels = newValue, ..}
+instance Property "EventName" WindowsEventProperty where
+  type PropertyType "EventName" WindowsEventProperty = Value Prelude.Text
+  set newValue WindowsEventProperty {..}
+    = WindowsEventProperty {eventName = newValue, ..}
+instance Property "LogGroupName" WindowsEventProperty where
+  type PropertyType "LogGroupName" WindowsEventProperty = Value Prelude.Text
+  set newValue WindowsEventProperty {..}
+    = WindowsEventProperty {logGroupName = newValue, ..}
+instance Property "PatternSet" WindowsEventProperty where
+  type PropertyType "PatternSet" WindowsEventProperty = Value Prelude.Text
+  set newValue WindowsEventProperty {..}
+    = WindowsEventProperty {patternSet = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs-boot b/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApplicationInsights/Application/WindowsEventProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApplicationInsights.Application.WindowsEventProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WindowsEventProperty :: Prelude.Type
+instance ToResourceProperties WindowsEventProperty
+instance Prelude.Eq WindowsEventProperty
+instance Prelude.Show WindowsEventProperty
+instance JSON.ToJSON WindowsEventProperty
diff --git a/stratosphere-applicationinsights.cabal b/stratosphere-applicationinsights.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-applicationinsights.cabal
@@ -0,0 +1,91 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-applicationinsights
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ApplicationInsights.
+description:    Integration into stratosphere to generate resources and properties for AWS ApplicationInsights
+category:       AWS, Cloud, ApplicationInsights
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.ApplicationInsights.Application
+      Stratosphere.ApplicationInsights.Application.AlarmMetricProperty
+      Stratosphere.ApplicationInsights.Application.AlarmProperty
+      Stratosphere.ApplicationInsights.Application.ComponentConfigurationProperty
+      Stratosphere.ApplicationInsights.Application.ComponentMonitoringSettingProperty
+      Stratosphere.ApplicationInsights.Application.ConfigurationDetailsProperty
+      Stratosphere.ApplicationInsights.Application.CustomComponentProperty
+      Stratosphere.ApplicationInsights.Application.HAClusterPrometheusExporterProperty
+      Stratosphere.ApplicationInsights.Application.HANAPrometheusExporterProperty
+      Stratosphere.ApplicationInsights.Application.JMXPrometheusExporterProperty
+      Stratosphere.ApplicationInsights.Application.LogPatternProperty
+      Stratosphere.ApplicationInsights.Application.LogPatternSetProperty
+      Stratosphere.ApplicationInsights.Application.LogProperty
+      Stratosphere.ApplicationInsights.Application.NetWeaverPrometheusExporterProperty
+      Stratosphere.ApplicationInsights.Application.ProcessProperty
+      Stratosphere.ApplicationInsights.Application.SQLServerPrometheusExporterProperty
+      Stratosphere.ApplicationInsights.Application.SubComponentConfigurationDetailsProperty
+      Stratosphere.ApplicationInsights.Application.SubComponentTypeConfigurationProperty
+      Stratosphere.ApplicationInsights.Application.WindowsEventProperty
+  other-modules:
+      Paths_stratosphere_applicationinsights
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
