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/AppIntegrations/Application.hs b/gen/Stratosphere/AppIntegrations/Application.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application.hs
@@ -0,0 +1,123 @@
+module Stratosphere.AppIntegrations.Application (
+        module Exports, Application(..), mkApplication
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppIntegrations.Application.ApplicationConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppIntegrations.Application.ApplicationSourceConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppIntegrations.Application.IframeConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Application
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html>
+    Application {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-applicationconfig>
+                 applicationConfig :: (Prelude.Maybe ApplicationConfigProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-applicationsourceconfig>
+                 applicationSourceConfig :: ApplicationSourceConfigProperty,
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-description>
+                 description :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-iframeconfig>
+                 iframeConfig :: (Prelude.Maybe IframeConfigProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-initializationtimeout>
+                 initializationTimeout :: (Prelude.Maybe (Value Prelude.Integer)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-isservice>
+                 isService :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-namespace>
+                 namespace :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-permissions>
+                 permissions :: (Prelude.Maybe (ValueList Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-application.html#cfn-appintegrations-application-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplication ::
+  ApplicationSourceConfigProperty
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> Application
+mkApplication applicationSourceConfig description name namespace
+  = Application
+      {haddock_workaround_ = (),
+       applicationSourceConfig = applicationSourceConfig,
+       description = description, name = name, namespace = namespace,
+       applicationConfig = Prelude.Nothing,
+       iframeConfig = Prelude.Nothing,
+       initializationTimeout = Prelude.Nothing,
+       isService = Prelude.Nothing, permissions = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Application where
+  toResourceProperties Application {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationSourceConfig" JSON..= applicationSourceConfig,
+                            "Description" JSON..= description, "Name" JSON..= name,
+                            "Namespace" JSON..= namespace]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApplicationConfig" Prelude.<$> applicationConfig,
+                               (JSON..=) "IframeConfig" Prelude.<$> iframeConfig,
+                               (JSON..=) "InitializationTimeout"
+                                 Prelude.<$> initializationTimeout,
+                               (JSON..=) "IsService" Prelude.<$> isService,
+                               (JSON..=) "Permissions" Prelude.<$> permissions,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Application where
+  toJSON Application {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationSourceConfig" JSON..= applicationSourceConfig,
+               "Description" JSON..= description, "Name" JSON..= name,
+               "Namespace" JSON..= namespace]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApplicationConfig" Prelude.<$> applicationConfig,
+                  (JSON..=) "IframeConfig" Prelude.<$> iframeConfig,
+                  (JSON..=) "InitializationTimeout"
+                    Prelude.<$> initializationTimeout,
+                  (JSON..=) "IsService" Prelude.<$> isService,
+                  (JSON..=) "Permissions" Prelude.<$> permissions,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "ApplicationConfig" Application where
+  type PropertyType "ApplicationConfig" Application = ApplicationConfigProperty
+  set newValue Application {..}
+    = Application {applicationConfig = Prelude.pure newValue, ..}
+instance Property "ApplicationSourceConfig" Application where
+  type PropertyType "ApplicationSourceConfig" Application = ApplicationSourceConfigProperty
+  set newValue Application {..}
+    = Application {applicationSourceConfig = newValue, ..}
+instance Property "Description" Application where
+  type PropertyType "Description" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {description = newValue, ..}
+instance Property "IframeConfig" Application where
+  type PropertyType "IframeConfig" Application = IframeConfigProperty
+  set newValue Application {..}
+    = Application {iframeConfig = Prelude.pure newValue, ..}
+instance Property "InitializationTimeout" Application where
+  type PropertyType "InitializationTimeout" Application = Value Prelude.Integer
+  set newValue Application {..}
+    = Application {initializationTimeout = Prelude.pure newValue, ..}
+instance Property "IsService" Application where
+  type PropertyType "IsService" Application = Value Prelude.Bool
+  set newValue Application {..}
+    = Application {isService = Prelude.pure newValue, ..}
+instance Property "Name" Application where
+  type PropertyType "Name" Application = Value Prelude.Text
+  set newValue Application {..} = Application {name = newValue, ..}
+instance Property "Namespace" Application where
+  type PropertyType "Namespace" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {namespace = newValue, ..}
+instance Property "Permissions" Application where
+  type PropertyType "Permissions" Application = ValueList Prelude.Text
+  set newValue Application {..}
+    = Application {permissions = 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/AppIntegrations/Application/ApplicationConfigProperty.hs b/gen/Stratosphere/AppIntegrations/Application/ApplicationConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ApplicationConfigProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AppIntegrations.Application.ApplicationConfigProperty (
+        module Exports, ApplicationConfigProperty(..),
+        mkApplicationConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppIntegrations.Application.ContactHandlingProperty as Exports
+import Stratosphere.ResourceProperties
+data ApplicationConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-applicationconfig.html>
+    ApplicationConfigProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-applicationconfig.html#cfn-appintegrations-application-applicationconfig-contacthandling>
+                               contactHandling :: (Prelude.Maybe ContactHandlingProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplicationConfigProperty :: ApplicationConfigProperty
+mkApplicationConfigProperty
+  = ApplicationConfigProperty
+      {haddock_workaround_ = (), contactHandling = Prelude.Nothing}
+instance ToResourceProperties ApplicationConfigProperty where
+  toResourceProperties ApplicationConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application.ApplicationConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ContactHandling" Prelude.<$> contactHandling])}
+instance JSON.ToJSON ApplicationConfigProperty where
+  toJSON ApplicationConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ContactHandling" Prelude.<$> contactHandling]))
+instance Property "ContactHandling" ApplicationConfigProperty where
+  type PropertyType "ContactHandling" ApplicationConfigProperty = ContactHandlingProperty
+  set newValue ApplicationConfigProperty {..}
+    = ApplicationConfigProperty
+        {contactHandling = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/Application/ApplicationConfigProperty.hs-boot b/gen/Stratosphere/AppIntegrations/Application/ApplicationConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ApplicationConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.Application.ApplicationConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ApplicationConfigProperty :: Prelude.Type
+instance ToResourceProperties ApplicationConfigProperty
+instance Prelude.Eq ApplicationConfigProperty
+instance Prelude.Show ApplicationConfigProperty
+instance JSON.ToJSON ApplicationConfigProperty
diff --git a/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs b/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.AppIntegrations.Application.ApplicationSourceConfigProperty (
+        module Exports, ApplicationSourceConfigProperty(..),
+        mkApplicationSourceConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppIntegrations.Application.ExternalUrlConfigProperty as Exports
+import Stratosphere.ResourceProperties
+data ApplicationSourceConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-applicationsourceconfig.html>
+    ApplicationSourceConfigProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-applicationsourceconfig.html#cfn-appintegrations-application-applicationsourceconfig-externalurlconfig>
+                                     externalUrlConfig :: ExternalUrlConfigProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplicationSourceConfigProperty ::
+  ExternalUrlConfigProperty -> ApplicationSourceConfigProperty
+mkApplicationSourceConfigProperty externalUrlConfig
+  = ApplicationSourceConfigProperty
+      {haddock_workaround_ = (), externalUrlConfig = externalUrlConfig}
+instance ToResourceProperties ApplicationSourceConfigProperty where
+  toResourceProperties ApplicationSourceConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application.ApplicationSourceConfig",
+         supportsTags = Prelude.False,
+         properties = ["ExternalUrlConfig" JSON..= externalUrlConfig]}
+instance JSON.ToJSON ApplicationSourceConfigProperty where
+  toJSON ApplicationSourceConfigProperty {..}
+    = JSON.object ["ExternalUrlConfig" JSON..= externalUrlConfig]
+instance Property "ExternalUrlConfig" ApplicationSourceConfigProperty where
+  type PropertyType "ExternalUrlConfig" ApplicationSourceConfigProperty = ExternalUrlConfigProperty
+  set newValue ApplicationSourceConfigProperty {..}
+    = ApplicationSourceConfigProperty
+        {externalUrlConfig = newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs-boot b/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ApplicationSourceConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.Application.ApplicationSourceConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ApplicationSourceConfigProperty :: Prelude.Type
+instance ToResourceProperties ApplicationSourceConfigProperty
+instance Prelude.Eq ApplicationSourceConfigProperty
+instance Prelude.Show ApplicationSourceConfigProperty
+instance JSON.ToJSON ApplicationSourceConfigProperty
diff --git a/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs b/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.AppIntegrations.Application.ContactHandlingProperty (
+        ContactHandlingProperty(..), mkContactHandlingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ContactHandlingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-contacthandling.html>
+    ContactHandlingProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-contacthandling.html#cfn-appintegrations-application-contacthandling-scope>
+                             scope :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkContactHandlingProperty ::
+  Value Prelude.Text -> ContactHandlingProperty
+mkContactHandlingProperty scope
+  = ContactHandlingProperty {haddock_workaround_ = (), scope = scope}
+instance ToResourceProperties ContactHandlingProperty where
+  toResourceProperties ContactHandlingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application.ContactHandling",
+         supportsTags = Prelude.False, properties = ["Scope" JSON..= scope]}
+instance JSON.ToJSON ContactHandlingProperty where
+  toJSON ContactHandlingProperty {..}
+    = JSON.object ["Scope" JSON..= scope]
+instance Property "Scope" ContactHandlingProperty where
+  type PropertyType "Scope" ContactHandlingProperty = Value Prelude.Text
+  set newValue ContactHandlingProperty {..}
+    = ContactHandlingProperty {scope = newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs-boot b/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ContactHandlingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.Application.ContactHandlingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ContactHandlingProperty :: Prelude.Type
+instance ToResourceProperties ContactHandlingProperty
+instance Prelude.Eq ContactHandlingProperty
+instance Prelude.Show ContactHandlingProperty
+instance JSON.ToJSON ContactHandlingProperty
diff --git a/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs b/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AppIntegrations.Application.ExternalUrlConfigProperty (
+        ExternalUrlConfigProperty(..), mkExternalUrlConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ExternalUrlConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-externalurlconfig.html>
+    ExternalUrlConfigProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-externalurlconfig.html#cfn-appintegrations-application-externalurlconfig-accessurl>
+                               accessUrl :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-externalurlconfig.html#cfn-appintegrations-application-externalurlconfig-approvedorigins>
+                               approvedOrigins :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExternalUrlConfigProperty ::
+  Value Prelude.Text -> ExternalUrlConfigProperty
+mkExternalUrlConfigProperty accessUrl
+  = ExternalUrlConfigProperty
+      {haddock_workaround_ = (), accessUrl = accessUrl,
+       approvedOrigins = Prelude.Nothing}
+instance ToResourceProperties ExternalUrlConfigProperty where
+  toResourceProperties ExternalUrlConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application.ExternalUrlConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AccessUrl" JSON..= accessUrl]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApprovedOrigins" Prelude.<$> approvedOrigins]))}
+instance JSON.ToJSON ExternalUrlConfigProperty where
+  toJSON ExternalUrlConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AccessUrl" JSON..= accessUrl]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApprovedOrigins" Prelude.<$> approvedOrigins])))
+instance Property "AccessUrl" ExternalUrlConfigProperty where
+  type PropertyType "AccessUrl" ExternalUrlConfigProperty = Value Prelude.Text
+  set newValue ExternalUrlConfigProperty {..}
+    = ExternalUrlConfigProperty {accessUrl = newValue, ..}
+instance Property "ApprovedOrigins" ExternalUrlConfigProperty where
+  type PropertyType "ApprovedOrigins" ExternalUrlConfigProperty = ValueList Prelude.Text
+  set newValue ExternalUrlConfigProperty {..}
+    = ExternalUrlConfigProperty
+        {approvedOrigins = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs-boot b/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/ExternalUrlConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.Application.ExternalUrlConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExternalUrlConfigProperty :: Prelude.Type
+instance ToResourceProperties ExternalUrlConfigProperty
+instance Prelude.Eq ExternalUrlConfigProperty
+instance Prelude.Show ExternalUrlConfigProperty
+instance JSON.ToJSON ExternalUrlConfigProperty
diff --git a/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs b/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AppIntegrations.Application.IframeConfigProperty (
+        IframeConfigProperty(..), mkIframeConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IframeConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-iframeconfig.html>
+    IframeConfigProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-iframeconfig.html#cfn-appintegrations-application-iframeconfig-allow>
+                          allow :: (Prelude.Maybe (ValueList Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-application-iframeconfig.html#cfn-appintegrations-application-iframeconfig-sandbox>
+                          sandbox :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIframeConfigProperty :: IframeConfigProperty
+mkIframeConfigProperty
+  = IframeConfigProperty
+      {haddock_workaround_ = (), allow = Prelude.Nothing,
+       sandbox = Prelude.Nothing}
+instance ToResourceProperties IframeConfigProperty where
+  toResourceProperties IframeConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::Application.IframeConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Allow" Prelude.<$> allow,
+                            (JSON..=) "Sandbox" Prelude.<$> sandbox])}
+instance JSON.ToJSON IframeConfigProperty where
+  toJSON IframeConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Allow" Prelude.<$> allow,
+               (JSON..=) "Sandbox" Prelude.<$> sandbox]))
+instance Property "Allow" IframeConfigProperty where
+  type PropertyType "Allow" IframeConfigProperty = ValueList Prelude.Text
+  set newValue IframeConfigProperty {..}
+    = IframeConfigProperty {allow = Prelude.pure newValue, ..}
+instance Property "Sandbox" IframeConfigProperty where
+  type PropertyType "Sandbox" IframeConfigProperty = ValueList Prelude.Text
+  set newValue IframeConfigProperty {..}
+    = IframeConfigProperty {sandbox = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs-boot b/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/Application/IframeConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.Application.IframeConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IframeConfigProperty :: Prelude.Type
+instance ToResourceProperties IframeConfigProperty
+instance Prelude.Eq IframeConfigProperty
+instance Prelude.Show IframeConfigProperty
+instance JSON.ToJSON IframeConfigProperty
diff --git a/gen/Stratosphere/AppIntegrations/DataIntegration.hs b/gen/Stratosphere/AppIntegrations/DataIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/DataIntegration.hs
@@ -0,0 +1,101 @@
+module Stratosphere.AppIntegrations.DataIntegration (
+        module Exports, DataIntegration(..), mkDataIntegration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppIntegrations.DataIntegration.FileConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AppIntegrations.DataIntegration.ScheduleConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data DataIntegration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html>
+    DataIntegration {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-description>
+                     description :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-fileconfiguration>
+                     fileConfiguration :: (Prelude.Maybe FileConfigurationProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-kmskey>
+                     kmsKey :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-name>
+                     name :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-objectconfiguration>
+                     objectConfiguration :: (Prelude.Maybe JSON.Object),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-scheduleconfig>
+                     scheduleConfig :: (Prelude.Maybe ScheduleConfigProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-sourceuri>
+                     sourceURI :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-dataintegration.html#cfn-appintegrations-dataintegration-tags>
+                     tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDataIntegration ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> DataIntegration
+mkDataIntegration kmsKey name sourceURI
+  = DataIntegration
+      {haddock_workaround_ = (), kmsKey = kmsKey, name = name,
+       sourceURI = sourceURI, description = Prelude.Nothing,
+       fileConfiguration = Prelude.Nothing,
+       objectConfiguration = Prelude.Nothing,
+       scheduleConfig = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties DataIntegration where
+  toResourceProperties DataIntegration {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::DataIntegration",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["KmsKey" JSON..= kmsKey, "Name" JSON..= name,
+                            "SourceURI" JSON..= sourceURI]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "FileConfiguration" Prelude.<$> fileConfiguration,
+                               (JSON..=) "ObjectConfiguration" Prelude.<$> objectConfiguration,
+                               (JSON..=) "ScheduleConfig" Prelude.<$> scheduleConfig,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON DataIntegration where
+  toJSON DataIntegration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["KmsKey" JSON..= kmsKey, "Name" JSON..= name,
+               "SourceURI" JSON..= sourceURI]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "FileConfiguration" Prelude.<$> fileConfiguration,
+                  (JSON..=) "ObjectConfiguration" Prelude.<$> objectConfiguration,
+                  (JSON..=) "ScheduleConfig" Prelude.<$> scheduleConfig,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" DataIntegration where
+  type PropertyType "Description" DataIntegration = Value Prelude.Text
+  set newValue DataIntegration {..}
+    = DataIntegration {description = Prelude.pure newValue, ..}
+instance Property "FileConfiguration" DataIntegration where
+  type PropertyType "FileConfiguration" DataIntegration = FileConfigurationProperty
+  set newValue DataIntegration {..}
+    = DataIntegration {fileConfiguration = Prelude.pure newValue, ..}
+instance Property "KmsKey" DataIntegration where
+  type PropertyType "KmsKey" DataIntegration = Value Prelude.Text
+  set newValue DataIntegration {..}
+    = DataIntegration {kmsKey = newValue, ..}
+instance Property "Name" DataIntegration where
+  type PropertyType "Name" DataIntegration = Value Prelude.Text
+  set newValue DataIntegration {..}
+    = DataIntegration {name = newValue, ..}
+instance Property "ObjectConfiguration" DataIntegration where
+  type PropertyType "ObjectConfiguration" DataIntegration = JSON.Object
+  set newValue DataIntegration {..}
+    = DataIntegration {objectConfiguration = Prelude.pure newValue, ..}
+instance Property "ScheduleConfig" DataIntegration where
+  type PropertyType "ScheduleConfig" DataIntegration = ScheduleConfigProperty
+  set newValue DataIntegration {..}
+    = DataIntegration {scheduleConfig = Prelude.pure newValue, ..}
+instance Property "SourceURI" DataIntegration where
+  type PropertyType "SourceURI" DataIntegration = Value Prelude.Text
+  set newValue DataIntegration {..}
+    = DataIntegration {sourceURI = newValue, ..}
+instance Property "Tags" DataIntegration where
+  type PropertyType "Tags" DataIntegration = [Tag]
+  set newValue DataIntegration {..}
+    = DataIntegration {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs b/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AppIntegrations.DataIntegration.FileConfigurationProperty (
+        FileConfigurationProperty(..), mkFileConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FileConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-fileconfiguration.html>
+    FileConfigurationProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-fileconfiguration.html#cfn-appintegrations-dataintegration-fileconfiguration-filters>
+                               filters :: (Prelude.Maybe JSON.Object),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-fileconfiguration.html#cfn-appintegrations-dataintegration-fileconfiguration-folders>
+                               folders :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFileConfigurationProperty ::
+  ValueList Prelude.Text -> FileConfigurationProperty
+mkFileConfigurationProperty folders
+  = FileConfigurationProperty
+      {haddock_workaround_ = (), folders = folders,
+       filters = Prelude.Nothing}
+instance ToResourceProperties FileConfigurationProperty where
+  toResourceProperties FileConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::DataIntegration.FileConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Folders" JSON..= folders]
+                           (Prelude.catMaybes [(JSON..=) "Filters" Prelude.<$> filters]))}
+instance JSON.ToJSON FileConfigurationProperty where
+  toJSON FileConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Folders" JSON..= folders]
+              (Prelude.catMaybes [(JSON..=) "Filters" Prelude.<$> filters])))
+instance Property "Filters" FileConfigurationProperty where
+  type PropertyType "Filters" FileConfigurationProperty = JSON.Object
+  set newValue FileConfigurationProperty {..}
+    = FileConfigurationProperty {filters = Prelude.pure newValue, ..}
+instance Property "Folders" FileConfigurationProperty where
+  type PropertyType "Folders" FileConfigurationProperty = ValueList Prelude.Text
+  set newValue FileConfigurationProperty {..}
+    = FileConfigurationProperty {folders = newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs-boot b/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/DataIntegration/FileConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.DataIntegration.FileConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FileConfigurationProperty :: Prelude.Type
+instance ToResourceProperties FileConfigurationProperty
+instance Prelude.Eq FileConfigurationProperty
+instance Prelude.Show FileConfigurationProperty
+instance JSON.ToJSON FileConfigurationProperty
diff --git a/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs b/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.AppIntegrations.DataIntegration.ScheduleConfigProperty (
+        ScheduleConfigProperty(..), mkScheduleConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScheduleConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-scheduleconfig.html>
+    ScheduleConfigProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-scheduleconfig.html#cfn-appintegrations-dataintegration-scheduleconfig-firstexecutionfrom>
+                            firstExecutionFrom :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-scheduleconfig.html#cfn-appintegrations-dataintegration-scheduleconfig-object>
+                            object :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-dataintegration-scheduleconfig.html#cfn-appintegrations-dataintegration-scheduleconfig-scheduleexpression>
+                            scheduleExpression :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScheduleConfigProperty ::
+  Value Prelude.Text -> ScheduleConfigProperty
+mkScheduleConfigProperty scheduleExpression
+  = ScheduleConfigProperty
+      {haddock_workaround_ = (), scheduleExpression = scheduleExpression,
+       firstExecutionFrom = Prelude.Nothing, object = Prelude.Nothing}
+instance ToResourceProperties ScheduleConfigProperty where
+  toResourceProperties ScheduleConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::DataIntegration.ScheduleConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ScheduleExpression" JSON..= scheduleExpression]
+                           (Prelude.catMaybes
+                              [(JSON..=) "FirstExecutionFrom" Prelude.<$> firstExecutionFrom,
+                               (JSON..=) "Object" Prelude.<$> object]))}
+instance JSON.ToJSON ScheduleConfigProperty where
+  toJSON ScheduleConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ScheduleExpression" JSON..= scheduleExpression]
+              (Prelude.catMaybes
+                 [(JSON..=) "FirstExecutionFrom" Prelude.<$> firstExecutionFrom,
+                  (JSON..=) "Object" Prelude.<$> object])))
+instance Property "FirstExecutionFrom" ScheduleConfigProperty where
+  type PropertyType "FirstExecutionFrom" ScheduleConfigProperty = Value Prelude.Text
+  set newValue ScheduleConfigProperty {..}
+    = ScheduleConfigProperty
+        {firstExecutionFrom = Prelude.pure newValue, ..}
+instance Property "Object" ScheduleConfigProperty where
+  type PropertyType "Object" ScheduleConfigProperty = Value Prelude.Text
+  set newValue ScheduleConfigProperty {..}
+    = ScheduleConfigProperty {object = Prelude.pure newValue, ..}
+instance Property "ScheduleExpression" ScheduleConfigProperty where
+  type PropertyType "ScheduleExpression" ScheduleConfigProperty = Value Prelude.Text
+  set newValue ScheduleConfigProperty {..}
+    = ScheduleConfigProperty {scheduleExpression = newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs-boot b/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/DataIntegration/ScheduleConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.DataIntegration.ScheduleConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScheduleConfigProperty :: Prelude.Type
+instance ToResourceProperties ScheduleConfigProperty
+instance Prelude.Eq ScheduleConfigProperty
+instance Prelude.Show ScheduleConfigProperty
+instance JSON.ToJSON ScheduleConfigProperty
diff --git a/gen/Stratosphere/AppIntegrations/EventIntegration.hs b/gen/Stratosphere/AppIntegrations/EventIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/EventIntegration.hs
@@ -0,0 +1,74 @@
+module Stratosphere.AppIntegrations.EventIntegration (
+        module Exports, EventIntegration(..), mkEventIntegration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AppIntegrations.EventIntegration.EventFilterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EventIntegration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html>
+    EventIntegration {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html#cfn-appintegrations-eventintegration-description>
+                      description :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html#cfn-appintegrations-eventintegration-eventbridgebus>
+                      eventBridgeBus :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html#cfn-appintegrations-eventintegration-eventfilter>
+                      eventFilter :: EventFilterProperty,
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html#cfn-appintegrations-eventintegration-name>
+                      name :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appintegrations-eventintegration.html#cfn-appintegrations-eventintegration-tags>
+                      tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventIntegration ::
+  Value Prelude.Text
+  -> EventFilterProperty -> Value Prelude.Text -> EventIntegration
+mkEventIntegration eventBridgeBus eventFilter name
+  = EventIntegration
+      {haddock_workaround_ = (), eventBridgeBus = eventBridgeBus,
+       eventFilter = eventFilter, name = name,
+       description = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties EventIntegration where
+  toResourceProperties EventIntegration {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::EventIntegration",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EventBridgeBus" JSON..= eventBridgeBus,
+                            "EventFilter" JSON..= eventFilter, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EventIntegration where
+  toJSON EventIntegration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EventBridgeBus" JSON..= eventBridgeBus,
+               "EventFilter" JSON..= eventFilter, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" EventIntegration where
+  type PropertyType "Description" EventIntegration = Value Prelude.Text
+  set newValue EventIntegration {..}
+    = EventIntegration {description = Prelude.pure newValue, ..}
+instance Property "EventBridgeBus" EventIntegration where
+  type PropertyType "EventBridgeBus" EventIntegration = Value Prelude.Text
+  set newValue EventIntegration {..}
+    = EventIntegration {eventBridgeBus = newValue, ..}
+instance Property "EventFilter" EventIntegration where
+  type PropertyType "EventFilter" EventIntegration = EventFilterProperty
+  set newValue EventIntegration {..}
+    = EventIntegration {eventFilter = newValue, ..}
+instance Property "Name" EventIntegration where
+  type PropertyType "Name" EventIntegration = Value Prelude.Text
+  set newValue EventIntegration {..}
+    = EventIntegration {name = newValue, ..}
+instance Property "Tags" EventIntegration where
+  type PropertyType "Tags" EventIntegration = [Tag]
+  set newValue EventIntegration {..}
+    = EventIntegration {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs b/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.AppIntegrations.EventIntegration.EventFilterProperty (
+        EventFilterProperty(..), mkEventFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EventFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-eventintegration-eventfilter.html>
+    EventFilterProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appintegrations-eventintegration-eventfilter.html#cfn-appintegrations-eventintegration-eventfilter-source>
+                         source :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventFilterProperty :: Value Prelude.Text -> EventFilterProperty
+mkEventFilterProperty source
+  = EventFilterProperty {haddock_workaround_ = (), source = source}
+instance ToResourceProperties EventFilterProperty where
+  toResourceProperties EventFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AppIntegrations::EventIntegration.EventFilter",
+         supportsTags = Prelude.False,
+         properties = ["Source" JSON..= source]}
+instance JSON.ToJSON EventFilterProperty where
+  toJSON EventFilterProperty {..}
+    = JSON.object ["Source" JSON..= source]
+instance Property "Source" EventFilterProperty where
+  type PropertyType "Source" EventFilterProperty = Value Prelude.Text
+  set newValue EventFilterProperty {..}
+    = EventFilterProperty {source = newValue, ..}
diff --git a/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs-boot b/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AppIntegrations/EventIntegration/EventFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AppIntegrations.EventIntegration.EventFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EventFilterProperty :: Prelude.Type
+instance ToResourceProperties EventFilterProperty
+instance Prelude.Eq EventFilterProperty
+instance Prelude.Show EventFilterProperty
+instance JSON.ToJSON EventFilterProperty
diff --git a/stratosphere-appintegrations.cabal b/stratosphere-appintegrations.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-appintegrations.cabal
@@ -0,0 +1,83 @@
+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-appintegrations
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AppIntegrations.
+description:    Integration into stratosphere to generate resources and properties for AWS AppIntegrations
+category:       AWS, Cloud, AppIntegrations
+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.AppIntegrations.Application
+      Stratosphere.AppIntegrations.Application.ApplicationConfigProperty
+      Stratosphere.AppIntegrations.Application.ApplicationSourceConfigProperty
+      Stratosphere.AppIntegrations.Application.ContactHandlingProperty
+      Stratosphere.AppIntegrations.Application.ExternalUrlConfigProperty
+      Stratosphere.AppIntegrations.Application.IframeConfigProperty
+      Stratosphere.AppIntegrations.DataIntegration
+      Stratosphere.AppIntegrations.DataIntegration.FileConfigurationProperty
+      Stratosphere.AppIntegrations.DataIntegration.ScheduleConfigProperty
+      Stratosphere.AppIntegrations.EventIntegration
+      Stratosphere.AppIntegrations.EventIntegration.EventFilterProperty
+  other-modules:
+      Paths_stratosphere_appintegrations
+  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
