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/Amplify/App.hs b/gen/Stratosphere/Amplify/App.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App.hs
@@ -0,0 +1,190 @@
+module Stratosphere.Amplify.App (
+        module Exports, App(..), mkApp
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Amplify.App.AutoBranchCreationConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.BasicAuthConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.CacheConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.CustomRuleProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.EnvironmentVariableProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.JobConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data App
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html>
+    App {haddock_workaround_ :: (),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-accesstoken>
+         accessToken :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-autobranchcreationconfig>
+         autoBranchCreationConfig :: (Prelude.Maybe AutoBranchCreationConfigProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-basicauthconfig>
+         basicAuthConfig :: (Prelude.Maybe BasicAuthConfigProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-buildspec>
+         buildSpec :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-cacheconfig>
+         cacheConfig :: (Prelude.Maybe CacheConfigProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-computerolearn>
+         computeRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customheaders>
+         customHeaders :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customrules>
+         customRules :: (Prelude.Maybe [CustomRuleProperty]),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-description>
+         description :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-enablebranchautodeletion>
+         enableBranchAutoDeletion :: (Prelude.Maybe (Value Prelude.Bool)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-environmentvariables>
+         environmentVariables :: (Prelude.Maybe [EnvironmentVariableProperty]),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-iamservicerole>
+         iAMServiceRole :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-jobconfig>
+         jobConfig :: (Prelude.Maybe JobConfigProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-name>
+         name :: (Value Prelude.Text),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-oauthtoken>
+         oauthToken :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-platform>
+         platform :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-repository>
+         repository :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-tags>
+         tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApp :: Value Prelude.Text -> App
+mkApp name
+  = App
+      {haddock_workaround_ = (), name = name,
+       accessToken = Prelude.Nothing,
+       autoBranchCreationConfig = Prelude.Nothing,
+       basicAuthConfig = Prelude.Nothing, buildSpec = Prelude.Nothing,
+       cacheConfig = Prelude.Nothing, computeRoleArn = Prelude.Nothing,
+       customHeaders = Prelude.Nothing, customRules = Prelude.Nothing,
+       description = Prelude.Nothing,
+       enableBranchAutoDeletion = Prelude.Nothing,
+       environmentVariables = Prelude.Nothing,
+       iAMServiceRole = Prelude.Nothing, jobConfig = Prelude.Nothing,
+       oauthToken = Prelude.Nothing, platform = Prelude.Nothing,
+       repository = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties App where
+  toResourceProperties App {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AccessToken" Prelude.<$> accessToken,
+                               (JSON..=) "AutoBranchCreationConfig"
+                                 Prelude.<$> autoBranchCreationConfig,
+                               (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+                               (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                               (JSON..=) "CacheConfig" Prelude.<$> cacheConfig,
+                               (JSON..=) "ComputeRoleArn" Prelude.<$> computeRoleArn,
+                               (JSON..=) "CustomHeaders" Prelude.<$> customHeaders,
+                               (JSON..=) "CustomRules" Prelude.<$> customRules,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnableBranchAutoDeletion"
+                                 Prelude.<$> enableBranchAutoDeletion,
+                               (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                               (JSON..=) "IAMServiceRole" Prelude.<$> iAMServiceRole,
+                               (JSON..=) "JobConfig" Prelude.<$> jobConfig,
+                               (JSON..=) "OauthToken" Prelude.<$> oauthToken,
+                               (JSON..=) "Platform" Prelude.<$> platform,
+                               (JSON..=) "Repository" Prelude.<$> repository,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON App where
+  toJSON App {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AccessToken" Prelude.<$> accessToken,
+                  (JSON..=) "AutoBranchCreationConfig"
+                    Prelude.<$> autoBranchCreationConfig,
+                  (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+                  (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                  (JSON..=) "CacheConfig" Prelude.<$> cacheConfig,
+                  (JSON..=) "ComputeRoleArn" Prelude.<$> computeRoleArn,
+                  (JSON..=) "CustomHeaders" Prelude.<$> customHeaders,
+                  (JSON..=) "CustomRules" Prelude.<$> customRules,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnableBranchAutoDeletion"
+                    Prelude.<$> enableBranchAutoDeletion,
+                  (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                  (JSON..=) "IAMServiceRole" Prelude.<$> iAMServiceRole,
+                  (JSON..=) "JobConfig" Prelude.<$> jobConfig,
+                  (JSON..=) "OauthToken" Prelude.<$> oauthToken,
+                  (JSON..=) "Platform" Prelude.<$> platform,
+                  (JSON..=) "Repository" Prelude.<$> repository,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AccessToken" App where
+  type PropertyType "AccessToken" App = Value Prelude.Text
+  set newValue App {..}
+    = App {accessToken = Prelude.pure newValue, ..}
+instance Property "AutoBranchCreationConfig" App where
+  type PropertyType "AutoBranchCreationConfig" App = AutoBranchCreationConfigProperty
+  set newValue App {..}
+    = App {autoBranchCreationConfig = Prelude.pure newValue, ..}
+instance Property "BasicAuthConfig" App where
+  type PropertyType "BasicAuthConfig" App = BasicAuthConfigProperty
+  set newValue App {..}
+    = App {basicAuthConfig = Prelude.pure newValue, ..}
+instance Property "BuildSpec" App where
+  type PropertyType "BuildSpec" App = Value Prelude.Text
+  set newValue App {..} = App {buildSpec = Prelude.pure newValue, ..}
+instance Property "CacheConfig" App where
+  type PropertyType "CacheConfig" App = CacheConfigProperty
+  set newValue App {..}
+    = App {cacheConfig = Prelude.pure newValue, ..}
+instance Property "ComputeRoleArn" App where
+  type PropertyType "ComputeRoleArn" App = Value Prelude.Text
+  set newValue App {..}
+    = App {computeRoleArn = Prelude.pure newValue, ..}
+instance Property "CustomHeaders" App where
+  type PropertyType "CustomHeaders" App = Value Prelude.Text
+  set newValue App {..}
+    = App {customHeaders = Prelude.pure newValue, ..}
+instance Property "CustomRules" App where
+  type PropertyType "CustomRules" App = [CustomRuleProperty]
+  set newValue App {..}
+    = App {customRules = Prelude.pure newValue, ..}
+instance Property "Description" App where
+  type PropertyType "Description" App = Value Prelude.Text
+  set newValue App {..}
+    = App {description = Prelude.pure newValue, ..}
+instance Property "EnableBranchAutoDeletion" App where
+  type PropertyType "EnableBranchAutoDeletion" App = Value Prelude.Bool
+  set newValue App {..}
+    = App {enableBranchAutoDeletion = Prelude.pure newValue, ..}
+instance Property "EnvironmentVariables" App where
+  type PropertyType "EnvironmentVariables" App = [EnvironmentVariableProperty]
+  set newValue App {..}
+    = App {environmentVariables = Prelude.pure newValue, ..}
+instance Property "IAMServiceRole" App where
+  type PropertyType "IAMServiceRole" App = Value Prelude.Text
+  set newValue App {..}
+    = App {iAMServiceRole = Prelude.pure newValue, ..}
+instance Property "JobConfig" App where
+  type PropertyType "JobConfig" App = JobConfigProperty
+  set newValue App {..} = App {jobConfig = Prelude.pure newValue, ..}
+instance Property "Name" App where
+  type PropertyType "Name" App = Value Prelude.Text
+  set newValue App {..} = App {name = newValue, ..}
+instance Property "OauthToken" App where
+  type PropertyType "OauthToken" App = Value Prelude.Text
+  set newValue App {..}
+    = App {oauthToken = Prelude.pure newValue, ..}
+instance Property "Platform" App where
+  type PropertyType "Platform" App = Value Prelude.Text
+  set newValue App {..} = App {platform = Prelude.pure newValue, ..}
+instance Property "Repository" App where
+  type PropertyType "Repository" App = Value Prelude.Text
+  set newValue App {..}
+    = App {repository = Prelude.pure newValue, ..}
+instance Property "Tags" App where
+  type PropertyType "Tags" App = [Tag]
+  set newValue App {..} = App {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs b/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs
@@ -0,0 +1,151 @@
+module Stratosphere.Amplify.App.AutoBranchCreationConfigProperty (
+        module Exports, AutoBranchCreationConfigProperty(..),
+        mkAutoBranchCreationConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Amplify.App.BasicAuthConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.App.EnvironmentVariableProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoBranchCreationConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html>
+    AutoBranchCreationConfigProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-autobranchcreationpatterns>
+                                      autoBranchCreationPatterns :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-basicauthconfig>
+                                      basicAuthConfig :: (Prelude.Maybe BasicAuthConfigProperty),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-buildspec>
+                                      buildSpec :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-enableautobranchcreation>
+                                      enableAutoBranchCreation :: (Prelude.Maybe (Value Prelude.Bool)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-enableautobuild>
+                                      enableAutoBuild :: (Prelude.Maybe (Value Prelude.Bool)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-enableperformancemode>
+                                      enablePerformanceMode :: (Prelude.Maybe (Value Prelude.Bool)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-enablepullrequestpreview>
+                                      enablePullRequestPreview :: (Prelude.Maybe (Value Prelude.Bool)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-environmentvariables>
+                                      environmentVariables :: (Prelude.Maybe [EnvironmentVariableProperty]),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-framework>
+                                      framework :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-pullrequestenvironmentname>
+                                      pullRequestEnvironmentName :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-autobranchcreationconfig.html#cfn-amplify-app-autobranchcreationconfig-stage>
+                                      stage :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoBranchCreationConfigProperty ::
+  AutoBranchCreationConfigProperty
+mkAutoBranchCreationConfigProperty
+  = AutoBranchCreationConfigProperty
+      {haddock_workaround_ = (),
+       autoBranchCreationPatterns = Prelude.Nothing,
+       basicAuthConfig = Prelude.Nothing, buildSpec = Prelude.Nothing,
+       enableAutoBranchCreation = Prelude.Nothing,
+       enableAutoBuild = Prelude.Nothing,
+       enablePerformanceMode = Prelude.Nothing,
+       enablePullRequestPreview = Prelude.Nothing,
+       environmentVariables = Prelude.Nothing,
+       framework = Prelude.Nothing,
+       pullRequestEnvironmentName = Prelude.Nothing,
+       stage = Prelude.Nothing}
+instance ToResourceProperties AutoBranchCreationConfigProperty where
+  toResourceProperties AutoBranchCreationConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.AutoBranchCreationConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AutoBranchCreationPatterns"
+                              Prelude.<$> autoBranchCreationPatterns,
+                            (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+                            (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                            (JSON..=) "EnableAutoBranchCreation"
+                              Prelude.<$> enableAutoBranchCreation,
+                            (JSON..=) "EnableAutoBuild" Prelude.<$> enableAutoBuild,
+                            (JSON..=) "EnablePerformanceMode"
+                              Prelude.<$> enablePerformanceMode,
+                            (JSON..=) "EnablePullRequestPreview"
+                              Prelude.<$> enablePullRequestPreview,
+                            (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                            (JSON..=) "Framework" Prelude.<$> framework,
+                            (JSON..=) "PullRequestEnvironmentName"
+                              Prelude.<$> pullRequestEnvironmentName,
+                            (JSON..=) "Stage" Prelude.<$> stage])}
+instance JSON.ToJSON AutoBranchCreationConfigProperty where
+  toJSON AutoBranchCreationConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AutoBranchCreationPatterns"
+                 Prelude.<$> autoBranchCreationPatterns,
+               (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+               (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+               (JSON..=) "EnableAutoBranchCreation"
+                 Prelude.<$> enableAutoBranchCreation,
+               (JSON..=) "EnableAutoBuild" Prelude.<$> enableAutoBuild,
+               (JSON..=) "EnablePerformanceMode"
+                 Prelude.<$> enablePerformanceMode,
+               (JSON..=) "EnablePullRequestPreview"
+                 Prelude.<$> enablePullRequestPreview,
+               (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+               (JSON..=) "Framework" Prelude.<$> framework,
+               (JSON..=) "PullRequestEnvironmentName"
+                 Prelude.<$> pullRequestEnvironmentName,
+               (JSON..=) "Stage" Prelude.<$> stage]))
+instance Property "AutoBranchCreationPatterns" AutoBranchCreationConfigProperty where
+  type PropertyType "AutoBranchCreationPatterns" AutoBranchCreationConfigProperty = ValueList Prelude.Text
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {autoBranchCreationPatterns = Prelude.pure newValue, ..}
+instance Property "BasicAuthConfig" AutoBranchCreationConfigProperty where
+  type PropertyType "BasicAuthConfig" AutoBranchCreationConfigProperty = BasicAuthConfigProperty
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {basicAuthConfig = Prelude.pure newValue, ..}
+instance Property "BuildSpec" AutoBranchCreationConfigProperty where
+  type PropertyType "BuildSpec" AutoBranchCreationConfigProperty = Value Prelude.Text
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {buildSpec = Prelude.pure newValue, ..}
+instance Property "EnableAutoBranchCreation" AutoBranchCreationConfigProperty where
+  type PropertyType "EnableAutoBranchCreation" AutoBranchCreationConfigProperty = Value Prelude.Bool
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {enableAutoBranchCreation = Prelude.pure newValue, ..}
+instance Property "EnableAutoBuild" AutoBranchCreationConfigProperty where
+  type PropertyType "EnableAutoBuild" AutoBranchCreationConfigProperty = Value Prelude.Bool
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {enableAutoBuild = Prelude.pure newValue, ..}
+instance Property "EnablePerformanceMode" AutoBranchCreationConfigProperty where
+  type PropertyType "EnablePerformanceMode" AutoBranchCreationConfigProperty = Value Prelude.Bool
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {enablePerformanceMode = Prelude.pure newValue, ..}
+instance Property "EnablePullRequestPreview" AutoBranchCreationConfigProperty where
+  type PropertyType "EnablePullRequestPreview" AutoBranchCreationConfigProperty = Value Prelude.Bool
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {enablePullRequestPreview = Prelude.pure newValue, ..}
+instance Property "EnvironmentVariables" AutoBranchCreationConfigProperty where
+  type PropertyType "EnvironmentVariables" AutoBranchCreationConfigProperty = [EnvironmentVariableProperty]
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {environmentVariables = Prelude.pure newValue, ..}
+instance Property "Framework" AutoBranchCreationConfigProperty where
+  type PropertyType "Framework" AutoBranchCreationConfigProperty = Value Prelude.Text
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {framework = Prelude.pure newValue, ..}
+instance Property "PullRequestEnvironmentName" AutoBranchCreationConfigProperty where
+  type PropertyType "PullRequestEnvironmentName" AutoBranchCreationConfigProperty = Value Prelude.Text
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {pullRequestEnvironmentName = Prelude.pure newValue, ..}
+instance Property "Stage" AutoBranchCreationConfigProperty where
+  type PropertyType "Stage" AutoBranchCreationConfigProperty = Value Prelude.Text
+  set newValue AutoBranchCreationConfigProperty {..}
+    = AutoBranchCreationConfigProperty
+        {stage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs-boot b/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/AutoBranchCreationConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.AutoBranchCreationConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AutoBranchCreationConfigProperty :: Prelude.Type
+instance ToResourceProperties AutoBranchCreationConfigProperty
+instance Prelude.Eq AutoBranchCreationConfigProperty
+instance Prelude.Show AutoBranchCreationConfigProperty
+instance JSON.ToJSON AutoBranchCreationConfigProperty
diff --git a/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs b/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.Amplify.App.BasicAuthConfigProperty (
+        BasicAuthConfigProperty(..), mkBasicAuthConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BasicAuthConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html>
+    BasicAuthConfigProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-enablebasicauth>
+                             enableBasicAuth :: (Prelude.Maybe (Value Prelude.Bool)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-password>
+                             password :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-username>
+                             username :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBasicAuthConfigProperty :: BasicAuthConfigProperty
+mkBasicAuthConfigProperty
+  = BasicAuthConfigProperty
+      {haddock_workaround_ = (), enableBasicAuth = Prelude.Nothing,
+       password = Prelude.Nothing, username = Prelude.Nothing}
+instance ToResourceProperties BasicAuthConfigProperty where
+  toResourceProperties BasicAuthConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.BasicAuthConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EnableBasicAuth" Prelude.<$> enableBasicAuth,
+                            (JSON..=) "Password" Prelude.<$> password,
+                            (JSON..=) "Username" Prelude.<$> username])}
+instance JSON.ToJSON BasicAuthConfigProperty where
+  toJSON BasicAuthConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EnableBasicAuth" Prelude.<$> enableBasicAuth,
+               (JSON..=) "Password" Prelude.<$> password,
+               (JSON..=) "Username" Prelude.<$> username]))
+instance Property "EnableBasicAuth" BasicAuthConfigProperty where
+  type PropertyType "EnableBasicAuth" BasicAuthConfigProperty = Value Prelude.Bool
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty
+        {enableBasicAuth = Prelude.pure newValue, ..}
+instance Property "Password" BasicAuthConfigProperty where
+  type PropertyType "Password" BasicAuthConfigProperty = Value Prelude.Text
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty {password = Prelude.pure newValue, ..}
+instance Property "Username" BasicAuthConfigProperty where
+  type PropertyType "Username" BasicAuthConfigProperty = Value Prelude.Text
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty {username = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs-boot b/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/BasicAuthConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.BasicAuthConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BasicAuthConfigProperty :: Prelude.Type
+instance ToResourceProperties BasicAuthConfigProperty
+instance Prelude.Eq BasicAuthConfigProperty
+instance Prelude.Show BasicAuthConfigProperty
+instance JSON.ToJSON BasicAuthConfigProperty
diff --git a/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs b/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Amplify.App.CacheConfigProperty (
+        CacheConfigProperty(..), mkCacheConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CacheConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-cacheconfig.html>
+    CacheConfigProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-cacheconfig.html#cfn-amplify-app-cacheconfig-type>
+                         type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCacheConfigProperty :: CacheConfigProperty
+mkCacheConfigProperty
+  = CacheConfigProperty
+      {haddock_workaround_ = (), type' = Prelude.Nothing}
+instance ToResourceProperties CacheConfigProperty where
+  toResourceProperties CacheConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.CacheConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON CacheConfigProperty where
+  toJSON CacheConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type']))
+instance Property "Type" CacheConfigProperty where
+  type PropertyType "Type" CacheConfigProperty = Value Prelude.Text
+  set newValue CacheConfigProperty {..}
+    = CacheConfigProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs-boot b/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/CacheConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.CacheConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CacheConfigProperty :: Prelude.Type
+instance ToResourceProperties CacheConfigProperty
+instance Prelude.Eq CacheConfigProperty
+instance Prelude.Show CacheConfigProperty
+instance JSON.ToJSON CacheConfigProperty
diff --git a/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs b/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.Amplify.App.CustomRuleProperty (
+        CustomRuleProperty(..), mkCustomRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html>
+    CustomRuleProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-condition>
+                        condition :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-source>
+                        source :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-status>
+                        status :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-target>
+                        target :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomRuleProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> CustomRuleProperty
+mkCustomRuleProperty source target
+  = CustomRuleProperty
+      {haddock_workaround_ = (), source = source, target = target,
+       condition = Prelude.Nothing, status = Prelude.Nothing}
+instance ToResourceProperties CustomRuleProperty where
+  toResourceProperties CustomRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.CustomRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Source" JSON..= source, "Target" JSON..= target]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Condition" Prelude.<$> condition,
+                               (JSON..=) "Status" Prelude.<$> status]))}
+instance JSON.ToJSON CustomRuleProperty where
+  toJSON CustomRuleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Source" JSON..= source, "Target" JSON..= target]
+              (Prelude.catMaybes
+                 [(JSON..=) "Condition" Prelude.<$> condition,
+                  (JSON..=) "Status" Prelude.<$> status])))
+instance Property "Condition" CustomRuleProperty where
+  type PropertyType "Condition" CustomRuleProperty = Value Prelude.Text
+  set newValue CustomRuleProperty {..}
+    = CustomRuleProperty {condition = Prelude.pure newValue, ..}
+instance Property "Source" CustomRuleProperty where
+  type PropertyType "Source" CustomRuleProperty = Value Prelude.Text
+  set newValue CustomRuleProperty {..}
+    = CustomRuleProperty {source = newValue, ..}
+instance Property "Status" CustomRuleProperty where
+  type PropertyType "Status" CustomRuleProperty = Value Prelude.Text
+  set newValue CustomRuleProperty {..}
+    = CustomRuleProperty {status = Prelude.pure newValue, ..}
+instance Property "Target" CustomRuleProperty where
+  type PropertyType "Target" CustomRuleProperty = Value Prelude.Text
+  set newValue CustomRuleProperty {..}
+    = CustomRuleProperty {target = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs-boot b/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/CustomRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.CustomRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomRuleProperty :: Prelude.Type
+instance ToResourceProperties CustomRuleProperty
+instance Prelude.Eq CustomRuleProperty
+instance Prelude.Show CustomRuleProperty
+instance JSON.ToJSON CustomRuleProperty
diff --git a/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs b/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Amplify.App.EnvironmentVariableProperty (
+        EnvironmentVariableProperty(..), mkEnvironmentVariableProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentVariableProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html>
+    EnvironmentVariableProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html#cfn-amplify-app-environmentvariable-name>
+                                 name :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html#cfn-amplify-app-environmentvariable-value>
+                                 value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentVariableProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> EnvironmentVariableProperty
+mkEnvironmentVariableProperty name value
+  = EnvironmentVariableProperty
+      {haddock_workaround_ = (), name = name, value = value}
+instance ToResourceProperties EnvironmentVariableProperty where
+  toResourceProperties EnvironmentVariableProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.EnvironmentVariable",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Value" JSON..= value]}
+instance JSON.ToJSON EnvironmentVariableProperty where
+  toJSON EnvironmentVariableProperty {..}
+    = JSON.object ["Name" JSON..= name, "Value" JSON..= value]
+instance Property "Name" EnvironmentVariableProperty where
+  type PropertyType "Name" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {name = newValue, ..}
+instance Property "Value" EnvironmentVariableProperty where
+  type PropertyType "Value" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs-boot b/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/EnvironmentVariableProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.EnvironmentVariableProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentVariableProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentVariableProperty
+instance Prelude.Eq EnvironmentVariableProperty
+instance Prelude.Show EnvironmentVariableProperty
+instance JSON.ToJSON EnvironmentVariableProperty
diff --git a/gen/Stratosphere/Amplify/App/JobConfigProperty.hs b/gen/Stratosphere/Amplify/App/JobConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/JobConfigProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Amplify.App.JobConfigProperty (
+        JobConfigProperty(..), mkJobConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data JobConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-jobconfig.html>
+    JobConfigProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-jobconfig.html#cfn-amplify-app-jobconfig-buildcomputetype>
+                       buildComputeType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkJobConfigProperty :: Value Prelude.Text -> JobConfigProperty
+mkJobConfigProperty buildComputeType
+  = JobConfigProperty
+      {haddock_workaround_ = (), buildComputeType = buildComputeType}
+instance ToResourceProperties JobConfigProperty where
+  toResourceProperties JobConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::App.JobConfig",
+         supportsTags = Prelude.False,
+         properties = ["BuildComputeType" JSON..= buildComputeType]}
+instance JSON.ToJSON JobConfigProperty where
+  toJSON JobConfigProperty {..}
+    = JSON.object ["BuildComputeType" JSON..= buildComputeType]
+instance Property "BuildComputeType" JobConfigProperty where
+  type PropertyType "BuildComputeType" JobConfigProperty = Value Prelude.Text
+  set newValue JobConfigProperty {..}
+    = JobConfigProperty {buildComputeType = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/App/JobConfigProperty.hs-boot b/gen/Stratosphere/Amplify/App/JobConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/App/JobConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.App.JobConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data JobConfigProperty :: Prelude.Type
+instance ToResourceProperties JobConfigProperty
+instance Prelude.Eq JobConfigProperty
+instance Prelude.Show JobConfigProperty
+instance JSON.ToJSON JobConfigProperty
diff --git a/gen/Stratosphere/Amplify/Branch.hs b/gen/Stratosphere/Amplify/Branch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch.hs
@@ -0,0 +1,173 @@
+module Stratosphere.Amplify.Branch (
+        module Exports, Branch(..), mkBranch
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Amplify.Branch.BackendProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.Branch.BasicAuthConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.Branch.EnvironmentVariableProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Branch
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html>
+    Branch {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-appid>
+            appId :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-backend>
+            backend :: (Prelude.Maybe BackendProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-basicauthconfig>
+            basicAuthConfig :: (Prelude.Maybe BasicAuthConfigProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-branchname>
+            branchName :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-buildspec>
+            buildSpec :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-computerolearn>
+            computeRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-description>
+            description :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-enableautobuild>
+            enableAutoBuild :: (Prelude.Maybe (Value Prelude.Bool)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-enableperformancemode>
+            enablePerformanceMode :: (Prelude.Maybe (Value Prelude.Bool)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-enablepullrequestpreview>
+            enablePullRequestPreview :: (Prelude.Maybe (Value Prelude.Bool)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-enableskewprotection>
+            enableSkewProtection :: (Prelude.Maybe (Value Prelude.Bool)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-environmentvariables>
+            environmentVariables :: (Prelude.Maybe [EnvironmentVariableProperty]),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-framework>
+            framework :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-pullrequestenvironmentname>
+            pullRequestEnvironmentName :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-stage>
+            stage :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-tags>
+            tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBranch :: Value Prelude.Text -> Value Prelude.Text -> Branch
+mkBranch appId branchName
+  = Branch
+      {haddock_workaround_ = (), appId = appId, branchName = branchName,
+       backend = Prelude.Nothing, basicAuthConfig = Prelude.Nothing,
+       buildSpec = Prelude.Nothing, computeRoleArn = Prelude.Nothing,
+       description = Prelude.Nothing, enableAutoBuild = Prelude.Nothing,
+       enablePerformanceMode = Prelude.Nothing,
+       enablePullRequestPreview = Prelude.Nothing,
+       enableSkewProtection = Prelude.Nothing,
+       environmentVariables = Prelude.Nothing,
+       framework = Prelude.Nothing,
+       pullRequestEnvironmentName = Prelude.Nothing,
+       stage = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Branch where
+  toResourceProperties Branch {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Branch", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AppId" JSON..= appId, "BranchName" JSON..= branchName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Backend" Prelude.<$> backend,
+                               (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+                               (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                               (JSON..=) "ComputeRoleArn" Prelude.<$> computeRoleArn,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnableAutoBuild" Prelude.<$> enableAutoBuild,
+                               (JSON..=) "EnablePerformanceMode"
+                                 Prelude.<$> enablePerformanceMode,
+                               (JSON..=) "EnablePullRequestPreview"
+                                 Prelude.<$> enablePullRequestPreview,
+                               (JSON..=) "EnableSkewProtection" Prelude.<$> enableSkewProtection,
+                               (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                               (JSON..=) "Framework" Prelude.<$> framework,
+                               (JSON..=) "PullRequestEnvironmentName"
+                                 Prelude.<$> pullRequestEnvironmentName,
+                               (JSON..=) "Stage" Prelude.<$> stage,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Branch where
+  toJSON Branch {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AppId" JSON..= appId, "BranchName" JSON..= branchName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Backend" Prelude.<$> backend,
+                  (JSON..=) "BasicAuthConfig" Prelude.<$> basicAuthConfig,
+                  (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                  (JSON..=) "ComputeRoleArn" Prelude.<$> computeRoleArn,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnableAutoBuild" Prelude.<$> enableAutoBuild,
+                  (JSON..=) "EnablePerformanceMode"
+                    Prelude.<$> enablePerformanceMode,
+                  (JSON..=) "EnablePullRequestPreview"
+                    Prelude.<$> enablePullRequestPreview,
+                  (JSON..=) "EnableSkewProtection" Prelude.<$> enableSkewProtection,
+                  (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                  (JSON..=) "Framework" Prelude.<$> framework,
+                  (JSON..=) "PullRequestEnvironmentName"
+                    Prelude.<$> pullRequestEnvironmentName,
+                  (JSON..=) "Stage" Prelude.<$> stage,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AppId" Branch where
+  type PropertyType "AppId" Branch = Value Prelude.Text
+  set newValue Branch {..} = Branch {appId = newValue, ..}
+instance Property "Backend" Branch where
+  type PropertyType "Backend" Branch = BackendProperty
+  set newValue Branch {..}
+    = Branch {backend = Prelude.pure newValue, ..}
+instance Property "BasicAuthConfig" Branch where
+  type PropertyType "BasicAuthConfig" Branch = BasicAuthConfigProperty
+  set newValue Branch {..}
+    = Branch {basicAuthConfig = Prelude.pure newValue, ..}
+instance Property "BranchName" Branch where
+  type PropertyType "BranchName" Branch = Value Prelude.Text
+  set newValue Branch {..} = Branch {branchName = newValue, ..}
+instance Property "BuildSpec" Branch where
+  type PropertyType "BuildSpec" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {buildSpec = Prelude.pure newValue, ..}
+instance Property "ComputeRoleArn" Branch where
+  type PropertyType "ComputeRoleArn" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {computeRoleArn = Prelude.pure newValue, ..}
+instance Property "Description" Branch where
+  type PropertyType "Description" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {description = Prelude.pure newValue, ..}
+instance Property "EnableAutoBuild" Branch where
+  type PropertyType "EnableAutoBuild" Branch = Value Prelude.Bool
+  set newValue Branch {..}
+    = Branch {enableAutoBuild = Prelude.pure newValue, ..}
+instance Property "EnablePerformanceMode" Branch where
+  type PropertyType "EnablePerformanceMode" Branch = Value Prelude.Bool
+  set newValue Branch {..}
+    = Branch {enablePerformanceMode = Prelude.pure newValue, ..}
+instance Property "EnablePullRequestPreview" Branch where
+  type PropertyType "EnablePullRequestPreview" Branch = Value Prelude.Bool
+  set newValue Branch {..}
+    = Branch {enablePullRequestPreview = Prelude.pure newValue, ..}
+instance Property "EnableSkewProtection" Branch where
+  type PropertyType "EnableSkewProtection" Branch = Value Prelude.Bool
+  set newValue Branch {..}
+    = Branch {enableSkewProtection = Prelude.pure newValue, ..}
+instance Property "EnvironmentVariables" Branch where
+  type PropertyType "EnvironmentVariables" Branch = [EnvironmentVariableProperty]
+  set newValue Branch {..}
+    = Branch {environmentVariables = Prelude.pure newValue, ..}
+instance Property "Framework" Branch where
+  type PropertyType "Framework" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {framework = Prelude.pure newValue, ..}
+instance Property "PullRequestEnvironmentName" Branch where
+  type PropertyType "PullRequestEnvironmentName" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {pullRequestEnvironmentName = Prelude.pure newValue, ..}
+instance Property "Stage" Branch where
+  type PropertyType "Stage" Branch = Value Prelude.Text
+  set newValue Branch {..}
+    = Branch {stage = Prelude.pure newValue, ..}
+instance Property "Tags" Branch where
+  type PropertyType "Tags" Branch = [Tag]
+  set newValue Branch {..}
+    = Branch {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Branch/BackendProperty.hs b/gen/Stratosphere/Amplify/Branch/BackendProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/BackendProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Amplify.Branch.BackendProperty (
+        BackendProperty(..), mkBackendProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BackendProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-backend.html>
+    BackendProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-backend.html#cfn-amplify-branch-backend-stackarn>
+                     stackArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBackendProperty :: BackendProperty
+mkBackendProperty
+  = BackendProperty
+      {haddock_workaround_ = (), stackArn = Prelude.Nothing}
+instance ToResourceProperties BackendProperty where
+  toResourceProperties BackendProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Branch.Backend",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "StackArn" Prelude.<$> stackArn])}
+instance JSON.ToJSON BackendProperty where
+  toJSON BackendProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "StackArn" Prelude.<$> stackArn]))
+instance Property "StackArn" BackendProperty where
+  type PropertyType "StackArn" BackendProperty = Value Prelude.Text
+  set newValue BackendProperty {..}
+    = BackendProperty {stackArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Branch/BackendProperty.hs-boot b/gen/Stratosphere/Amplify/Branch/BackendProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/BackendProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Branch.BackendProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BackendProperty :: Prelude.Type
+instance ToResourceProperties BackendProperty
+instance Prelude.Eq BackendProperty
+instance Prelude.Show BackendProperty
+instance JSON.ToJSON BackendProperty
diff --git a/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs b/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.Amplify.Branch.BasicAuthConfigProperty (
+        BasicAuthConfigProperty(..), mkBasicAuthConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BasicAuthConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html>
+    BasicAuthConfigProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-enablebasicauth>
+                             enableBasicAuth :: (Prelude.Maybe (Value Prelude.Bool)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-password>
+                             password :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-username>
+                             username :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBasicAuthConfigProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> BasicAuthConfigProperty
+mkBasicAuthConfigProperty password username
+  = BasicAuthConfigProperty
+      {haddock_workaround_ = (), password = password,
+       username = username, enableBasicAuth = Prelude.Nothing}
+instance ToResourceProperties BasicAuthConfigProperty where
+  toResourceProperties BasicAuthConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Branch.BasicAuthConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Password" JSON..= password, "Username" JSON..= username]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EnableBasicAuth" Prelude.<$> enableBasicAuth]))}
+instance JSON.ToJSON BasicAuthConfigProperty where
+  toJSON BasicAuthConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Password" JSON..= password, "Username" JSON..= username]
+              (Prelude.catMaybes
+                 [(JSON..=) "EnableBasicAuth" Prelude.<$> enableBasicAuth])))
+instance Property "EnableBasicAuth" BasicAuthConfigProperty where
+  type PropertyType "EnableBasicAuth" BasicAuthConfigProperty = Value Prelude.Bool
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty
+        {enableBasicAuth = Prelude.pure newValue, ..}
+instance Property "Password" BasicAuthConfigProperty where
+  type PropertyType "Password" BasicAuthConfigProperty = Value Prelude.Text
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty {password = newValue, ..}
+instance Property "Username" BasicAuthConfigProperty where
+  type PropertyType "Username" BasicAuthConfigProperty = Value Prelude.Text
+  set newValue BasicAuthConfigProperty {..}
+    = BasicAuthConfigProperty {username = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs-boot b/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/BasicAuthConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Branch.BasicAuthConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BasicAuthConfigProperty :: Prelude.Type
+instance ToResourceProperties BasicAuthConfigProperty
+instance Prelude.Eq BasicAuthConfigProperty
+instance Prelude.Show BasicAuthConfigProperty
+instance JSON.ToJSON BasicAuthConfigProperty
diff --git a/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs b/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Amplify.Branch.EnvironmentVariableProperty (
+        EnvironmentVariableProperty(..), mkEnvironmentVariableProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentVariableProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html>
+    EnvironmentVariableProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html#cfn-amplify-branch-environmentvariable-name>
+                                 name :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html#cfn-amplify-branch-environmentvariable-value>
+                                 value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentVariableProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> EnvironmentVariableProperty
+mkEnvironmentVariableProperty name value
+  = EnvironmentVariableProperty
+      {haddock_workaround_ = (), name = name, value = value}
+instance ToResourceProperties EnvironmentVariableProperty where
+  toResourceProperties EnvironmentVariableProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Branch.EnvironmentVariable",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Value" JSON..= value]}
+instance JSON.ToJSON EnvironmentVariableProperty where
+  toJSON EnvironmentVariableProperty {..}
+    = JSON.object ["Name" JSON..= name, "Value" JSON..= value]
+instance Property "Name" EnvironmentVariableProperty where
+  type PropertyType "Name" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {name = newValue, ..}
+instance Property "Value" EnvironmentVariableProperty where
+  type PropertyType "Value" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs-boot b/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Branch/EnvironmentVariableProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Branch.EnvironmentVariableProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentVariableProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentVariableProperty
+instance Prelude.Eq EnvironmentVariableProperty
+instance Prelude.Show EnvironmentVariableProperty
+instance JSON.ToJSON EnvironmentVariableProperty
diff --git a/gen/Stratosphere/Amplify/Domain.hs b/gen/Stratosphere/Amplify/Domain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain.hs
@@ -0,0 +1,93 @@
+module Stratosphere.Amplify.Domain (
+        module Exports, Domain(..), mkDomain
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Amplify.Domain.CertificateSettingsProperty as Exports
+import {-# SOURCE #-} Stratosphere.Amplify.Domain.SubDomainSettingProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Domain
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html>
+    Domain {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-appid>
+            appId :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-autosubdomaincreationpatterns>
+            autoSubDomainCreationPatterns :: (Prelude.Maybe (ValueList Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-autosubdomainiamrole>
+            autoSubDomainIAMRole :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-certificatesettings>
+            certificateSettings :: (Prelude.Maybe CertificateSettingsProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-domainname>
+            domainName :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-enableautosubdomain>
+            enableAutoSubDomain :: (Prelude.Maybe (Value Prelude.Bool)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-subdomainsettings>
+            subDomainSettings :: [SubDomainSettingProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomain ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> [SubDomainSettingProperty] -> Domain
+mkDomain appId domainName subDomainSettings
+  = Domain
+      {haddock_workaround_ = (), appId = appId, domainName = domainName,
+       subDomainSettings = subDomainSettings,
+       autoSubDomainCreationPatterns = Prelude.Nothing,
+       autoSubDomainIAMRole = Prelude.Nothing,
+       certificateSettings = Prelude.Nothing,
+       enableAutoSubDomain = Prelude.Nothing}
+instance ToResourceProperties Domain where
+  toResourceProperties Domain {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Domain", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AppId" JSON..= appId, "DomainName" JSON..= domainName,
+                            "SubDomainSettings" JSON..= subDomainSettings]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoSubDomainCreationPatterns"
+                                 Prelude.<$> autoSubDomainCreationPatterns,
+                               (JSON..=) "AutoSubDomainIAMRole" Prelude.<$> autoSubDomainIAMRole,
+                               (JSON..=) "CertificateSettings" Prelude.<$> certificateSettings,
+                               (JSON..=) "EnableAutoSubDomain" Prelude.<$> enableAutoSubDomain]))}
+instance JSON.ToJSON Domain where
+  toJSON Domain {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AppId" JSON..= appId, "DomainName" JSON..= domainName,
+               "SubDomainSettings" JSON..= subDomainSettings]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoSubDomainCreationPatterns"
+                    Prelude.<$> autoSubDomainCreationPatterns,
+                  (JSON..=) "AutoSubDomainIAMRole" Prelude.<$> autoSubDomainIAMRole,
+                  (JSON..=) "CertificateSettings" Prelude.<$> certificateSettings,
+                  (JSON..=) "EnableAutoSubDomain" Prelude.<$> enableAutoSubDomain])))
+instance Property "AppId" Domain where
+  type PropertyType "AppId" Domain = Value Prelude.Text
+  set newValue Domain {..} = Domain {appId = newValue, ..}
+instance Property "AutoSubDomainCreationPatterns" Domain where
+  type PropertyType "AutoSubDomainCreationPatterns" Domain = ValueList Prelude.Text
+  set newValue Domain {..}
+    = Domain
+        {autoSubDomainCreationPatterns = Prelude.pure newValue, ..}
+instance Property "AutoSubDomainIAMRole" Domain where
+  type PropertyType "AutoSubDomainIAMRole" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {autoSubDomainIAMRole = Prelude.pure newValue, ..}
+instance Property "CertificateSettings" Domain where
+  type PropertyType "CertificateSettings" Domain = CertificateSettingsProperty
+  set newValue Domain {..}
+    = Domain {certificateSettings = Prelude.pure newValue, ..}
+instance Property "DomainName" Domain where
+  type PropertyType "DomainName" Domain = Value Prelude.Text
+  set newValue Domain {..} = Domain {domainName = newValue, ..}
+instance Property "EnableAutoSubDomain" Domain where
+  type PropertyType "EnableAutoSubDomain" Domain = Value Prelude.Bool
+  set newValue Domain {..}
+    = Domain {enableAutoSubDomain = Prelude.pure newValue, ..}
+instance Property "SubDomainSettings" Domain where
+  type PropertyType "SubDomainSettings" Domain = [SubDomainSettingProperty]
+  set newValue Domain {..}
+    = Domain {subDomainSettings = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs b/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.Amplify.Domain.CertificateProperty (
+        CertificateProperty(..), mkCertificateProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CertificateProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificate.html>
+    CertificateProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificate.html#cfn-amplify-domain-certificate-certificatearn>
+                         certificateArn :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificate.html#cfn-amplify-domain-certificate-certificatetype>
+                         certificateType :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificate.html#cfn-amplify-domain-certificate-certificateverificationdnsrecord>
+                         certificateVerificationDNSRecord :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCertificateProperty :: CertificateProperty
+mkCertificateProperty
+  = CertificateProperty
+      {haddock_workaround_ = (), certificateArn = Prelude.Nothing,
+       certificateType = Prelude.Nothing,
+       certificateVerificationDNSRecord = Prelude.Nothing}
+instance ToResourceProperties CertificateProperty where
+  toResourceProperties CertificateProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Domain.Certificate",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CertificateArn" Prelude.<$> certificateArn,
+                            (JSON..=) "CertificateType" Prelude.<$> certificateType,
+                            (JSON..=) "CertificateVerificationDNSRecord"
+                              Prelude.<$> certificateVerificationDNSRecord])}
+instance JSON.ToJSON CertificateProperty where
+  toJSON CertificateProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CertificateArn" Prelude.<$> certificateArn,
+               (JSON..=) "CertificateType" Prelude.<$> certificateType,
+               (JSON..=) "CertificateVerificationDNSRecord"
+                 Prelude.<$> certificateVerificationDNSRecord]))
+instance Property "CertificateArn" CertificateProperty where
+  type PropertyType "CertificateArn" CertificateProperty = Value Prelude.Text
+  set newValue CertificateProperty {..}
+    = CertificateProperty {certificateArn = Prelude.pure newValue, ..}
+instance Property "CertificateType" CertificateProperty where
+  type PropertyType "CertificateType" CertificateProperty = Value Prelude.Text
+  set newValue CertificateProperty {..}
+    = CertificateProperty {certificateType = Prelude.pure newValue, ..}
+instance Property "CertificateVerificationDNSRecord" CertificateProperty where
+  type PropertyType "CertificateVerificationDNSRecord" CertificateProperty = Value Prelude.Text
+  set newValue CertificateProperty {..}
+    = CertificateProperty
+        {certificateVerificationDNSRecord = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs-boot b/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/CertificateProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Domain.CertificateProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CertificateProperty :: Prelude.Type
+instance ToResourceProperties CertificateProperty
+instance Prelude.Eq CertificateProperty
+instance Prelude.Show CertificateProperty
+instance JSON.ToJSON CertificateProperty
diff --git a/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs b/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.Amplify.Domain.CertificateSettingsProperty (
+        CertificateSettingsProperty(..), mkCertificateSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CertificateSettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificatesettings.html>
+    CertificateSettingsProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificatesettings.html#cfn-amplify-domain-certificatesettings-certificatetype>
+                                 certificateType :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-certificatesettings.html#cfn-amplify-domain-certificatesettings-customcertificatearn>
+                                 customCertificateArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCertificateSettingsProperty :: CertificateSettingsProperty
+mkCertificateSettingsProperty
+  = CertificateSettingsProperty
+      {haddock_workaround_ = (), certificateType = Prelude.Nothing,
+       customCertificateArn = Prelude.Nothing}
+instance ToResourceProperties CertificateSettingsProperty where
+  toResourceProperties CertificateSettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Domain.CertificateSettings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CertificateType" Prelude.<$> certificateType,
+                            (JSON..=) "CustomCertificateArn"
+                              Prelude.<$> customCertificateArn])}
+instance JSON.ToJSON CertificateSettingsProperty where
+  toJSON CertificateSettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CertificateType" Prelude.<$> certificateType,
+               (JSON..=) "CustomCertificateArn"
+                 Prelude.<$> customCertificateArn]))
+instance Property "CertificateType" CertificateSettingsProperty where
+  type PropertyType "CertificateType" CertificateSettingsProperty = Value Prelude.Text
+  set newValue CertificateSettingsProperty {..}
+    = CertificateSettingsProperty
+        {certificateType = Prelude.pure newValue, ..}
+instance Property "CustomCertificateArn" CertificateSettingsProperty where
+  type PropertyType "CustomCertificateArn" CertificateSettingsProperty = Value Prelude.Text
+  set newValue CertificateSettingsProperty {..}
+    = CertificateSettingsProperty
+        {customCertificateArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs-boot b/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/CertificateSettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Domain.CertificateSettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CertificateSettingsProperty :: Prelude.Type
+instance ToResourceProperties CertificateSettingsProperty
+instance Prelude.Eq CertificateSettingsProperty
+instance Prelude.Show CertificateSettingsProperty
+instance JSON.ToJSON CertificateSettingsProperty
diff --git a/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs b/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.Amplify.Domain.SubDomainSettingProperty (
+        SubDomainSettingProperty(..), mkSubDomainSettingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SubDomainSettingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html>
+    SubDomainSettingProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html#cfn-amplify-domain-subdomainsetting-branchname>
+                              branchName :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html#cfn-amplify-domain-subdomainsetting-prefix>
+                              prefix :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubDomainSettingProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SubDomainSettingProperty
+mkSubDomainSettingProperty branchName prefix
+  = SubDomainSettingProperty
+      {haddock_workaround_ = (), branchName = branchName,
+       prefix = prefix}
+instance ToResourceProperties SubDomainSettingProperty where
+  toResourceProperties SubDomainSettingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Amplify::Domain.SubDomainSetting",
+         supportsTags = Prelude.False,
+         properties = ["BranchName" JSON..= branchName,
+                       "Prefix" JSON..= prefix]}
+instance JSON.ToJSON SubDomainSettingProperty where
+  toJSON SubDomainSettingProperty {..}
+    = JSON.object
+        ["BranchName" JSON..= branchName, "Prefix" JSON..= prefix]
+instance Property "BranchName" SubDomainSettingProperty where
+  type PropertyType "BranchName" SubDomainSettingProperty = Value Prelude.Text
+  set newValue SubDomainSettingProperty {..}
+    = SubDomainSettingProperty {branchName = newValue, ..}
+instance Property "Prefix" SubDomainSettingProperty where
+  type PropertyType "Prefix" SubDomainSettingProperty = Value Prelude.Text
+  set newValue SubDomainSettingProperty {..}
+    = SubDomainSettingProperty {prefix = newValue, ..}
diff --git a/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs-boot b/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Amplify/Domain/SubDomainSettingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Amplify.Domain.SubDomainSettingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SubDomainSettingProperty :: Prelude.Type
+instance ToResourceProperties SubDomainSettingProperty
+instance Prelude.Eq SubDomainSettingProperty
+instance Prelude.Show SubDomainSettingProperty
+instance JSON.ToJSON SubDomainSettingProperty
diff --git a/stratosphere-amplify.cabal b/stratosphere-amplify.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-amplify.cabal
@@ -0,0 +1,87 @@
+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-amplify
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS Amplify.
+description:    Integration into stratosphere to generate resources and properties for AWS Amplify
+category:       AWS, Cloud, Amplify
+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.Amplify.App
+      Stratosphere.Amplify.App.AutoBranchCreationConfigProperty
+      Stratosphere.Amplify.App.BasicAuthConfigProperty
+      Stratosphere.Amplify.App.CacheConfigProperty
+      Stratosphere.Amplify.App.CustomRuleProperty
+      Stratosphere.Amplify.App.EnvironmentVariableProperty
+      Stratosphere.Amplify.App.JobConfigProperty
+      Stratosphere.Amplify.Branch
+      Stratosphere.Amplify.Branch.BackendProperty
+      Stratosphere.Amplify.Branch.BasicAuthConfigProperty
+      Stratosphere.Amplify.Branch.EnvironmentVariableProperty
+      Stratosphere.Amplify.Domain
+      Stratosphere.Amplify.Domain.CertificateProperty
+      Stratosphere.Amplify.Domain.CertificateSettingsProperty
+      Stratosphere.Amplify.Domain.SubDomainSettingProperty
+  other-modules:
+      Paths_stratosphere_amplify
+  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
