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/CodePipeline/CustomActionType.hs b/gen/Stratosphere/CodePipeline/CustomActionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType.hs
@@ -0,0 +1,112 @@
+module Stratosphere.CodePipeline.CustomActionType (
+        module Exports, CustomActionType(..), mkCustomActionType
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.CustomActionType.ArtifactDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.CustomActionType.ConfigurationPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.CustomActionType.SettingsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data CustomActionType
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html>
+    CustomActionType {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-category>
+                      category :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-configurationproperties>
+                      configurationProperties :: (Prelude.Maybe [ConfigurationPropertiesProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-inputartifactdetails>
+                      inputArtifactDetails :: ArtifactDetailsProperty,
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-outputartifactdetails>
+                      outputArtifactDetails :: ArtifactDetailsProperty,
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-provider>
+                      provider :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-settings>
+                      settings :: (Prelude.Maybe SettingsProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-tags>
+                      tags :: (Prelude.Maybe [Tag]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-version>
+                      version :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomActionType ::
+  Value Prelude.Text
+  -> ArtifactDetailsProperty
+     -> ArtifactDetailsProperty
+        -> Value Prelude.Text -> Value Prelude.Text -> CustomActionType
+mkCustomActionType
+  category
+  inputArtifactDetails
+  outputArtifactDetails
+  provider
+  version
+  = CustomActionType
+      {haddock_workaround_ = (), category = category,
+       inputArtifactDetails = inputArtifactDetails,
+       outputArtifactDetails = outputArtifactDetails, provider = provider,
+       version = version, configurationProperties = Prelude.Nothing,
+       settings = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties CustomActionType where
+  toResourceProperties CustomActionType {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::CustomActionType",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Category" JSON..= category,
+                            "InputArtifactDetails" JSON..= inputArtifactDetails,
+                            "OutputArtifactDetails" JSON..= outputArtifactDetails,
+                            "Provider" JSON..= provider, "Version" JSON..= version]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConfigurationProperties"
+                                 Prelude.<$> configurationProperties,
+                               (JSON..=) "Settings" Prelude.<$> settings,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON CustomActionType where
+  toJSON CustomActionType {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Category" JSON..= category,
+               "InputArtifactDetails" JSON..= inputArtifactDetails,
+               "OutputArtifactDetails" JSON..= outputArtifactDetails,
+               "Provider" JSON..= provider, "Version" JSON..= version]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConfigurationProperties"
+                    Prelude.<$> configurationProperties,
+                  (JSON..=) "Settings" Prelude.<$> settings,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Category" CustomActionType where
+  type PropertyType "Category" CustomActionType = Value Prelude.Text
+  set newValue CustomActionType {..}
+    = CustomActionType {category = newValue, ..}
+instance Property "ConfigurationProperties" CustomActionType where
+  type PropertyType "ConfigurationProperties" CustomActionType = [ConfigurationPropertiesProperty]
+  set newValue CustomActionType {..}
+    = CustomActionType
+        {configurationProperties = Prelude.pure newValue, ..}
+instance Property "InputArtifactDetails" CustomActionType where
+  type PropertyType "InputArtifactDetails" CustomActionType = ArtifactDetailsProperty
+  set newValue CustomActionType {..}
+    = CustomActionType {inputArtifactDetails = newValue, ..}
+instance Property "OutputArtifactDetails" CustomActionType where
+  type PropertyType "OutputArtifactDetails" CustomActionType = ArtifactDetailsProperty
+  set newValue CustomActionType {..}
+    = CustomActionType {outputArtifactDetails = newValue, ..}
+instance Property "Provider" CustomActionType where
+  type PropertyType "Provider" CustomActionType = Value Prelude.Text
+  set newValue CustomActionType {..}
+    = CustomActionType {provider = newValue, ..}
+instance Property "Settings" CustomActionType where
+  type PropertyType "Settings" CustomActionType = SettingsProperty
+  set newValue CustomActionType {..}
+    = CustomActionType {settings = Prelude.pure newValue, ..}
+instance Property "Tags" CustomActionType where
+  type PropertyType "Tags" CustomActionType = [Tag]
+  set newValue CustomActionType {..}
+    = CustomActionType {tags = Prelude.pure newValue, ..}
+instance Property "Version" CustomActionType where
+  type PropertyType "Version" CustomActionType = Value Prelude.Text
+  set newValue CustomActionType {..}
+    = CustomActionType {version = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs b/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.CodePipeline.CustomActionType.ArtifactDetailsProperty (
+        ArtifactDetailsProperty(..), mkArtifactDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ArtifactDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html>
+    ArtifactDetailsProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-maximumcount>
+                             maximumCount :: (Value Prelude.Integer),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-minimumcount>
+                             minimumCount :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArtifactDetailsProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> ArtifactDetailsProperty
+mkArtifactDetailsProperty maximumCount minimumCount
+  = ArtifactDetailsProperty
+      {haddock_workaround_ = (), maximumCount = maximumCount,
+       minimumCount = minimumCount}
+instance ToResourceProperties ArtifactDetailsProperty where
+  toResourceProperties ArtifactDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::CustomActionType.ArtifactDetails",
+         supportsTags = Prelude.False,
+         properties = ["MaximumCount" JSON..= maximumCount,
+                       "MinimumCount" JSON..= minimumCount]}
+instance JSON.ToJSON ArtifactDetailsProperty where
+  toJSON ArtifactDetailsProperty {..}
+    = JSON.object
+        ["MaximumCount" JSON..= maximumCount,
+         "MinimumCount" JSON..= minimumCount]
+instance Property "MaximumCount" ArtifactDetailsProperty where
+  type PropertyType "MaximumCount" ArtifactDetailsProperty = Value Prelude.Integer
+  set newValue ArtifactDetailsProperty {..}
+    = ArtifactDetailsProperty {maximumCount = newValue, ..}
+instance Property "MinimumCount" ArtifactDetailsProperty where
+  type PropertyType "MinimumCount" ArtifactDetailsProperty = Value Prelude.Integer
+  set newValue ArtifactDetailsProperty {..}
+    = ArtifactDetailsProperty {minimumCount = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs-boot b/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/ArtifactDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.CustomActionType.ArtifactDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ArtifactDetailsProperty :: Prelude.Type
+instance ToResourceProperties ArtifactDetailsProperty
+instance Prelude.Eq ArtifactDetailsProperty
+instance Prelude.Show ArtifactDetailsProperty
+instance JSON.ToJSON ArtifactDetailsProperty
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs b/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs
@@ -0,0 +1,93 @@
+module Stratosphere.CodePipeline.CustomActionType.ConfigurationPropertiesProperty (
+        ConfigurationPropertiesProperty(..),
+        mkConfigurationPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConfigurationPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html>
+    ConfigurationPropertiesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-description>
+                                     description :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-key>
+                                     key :: (Value Prelude.Bool),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-name>
+                                     name :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-queryable>
+                                     queryable :: (Prelude.Maybe (Value Prelude.Bool)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-required>
+                                     required :: (Value Prelude.Bool),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-secret>
+                                     secret :: (Value Prelude.Bool),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-type>
+                                     type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConfigurationPropertiesProperty ::
+  Value Prelude.Bool
+  -> Value Prelude.Text
+     -> Value Prelude.Bool
+        -> Value Prelude.Bool -> ConfigurationPropertiesProperty
+mkConfigurationPropertiesProperty key name required secret
+  = ConfigurationPropertiesProperty
+      {haddock_workaround_ = (), key = key, name = name,
+       required = required, secret = secret,
+       description = Prelude.Nothing, queryable = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties ConfigurationPropertiesProperty where
+  toResourceProperties ConfigurationPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::CustomActionType.ConfigurationProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Key" JSON..= key, "Name" JSON..= name,
+                            "Required" JSON..= required, "Secret" JSON..= secret]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Queryable" Prelude.<$> queryable,
+                               (JSON..=) "Type" Prelude.<$> type']))}
+instance JSON.ToJSON ConfigurationPropertiesProperty where
+  toJSON ConfigurationPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Key" JSON..= key, "Name" JSON..= name,
+               "Required" JSON..= required, "Secret" JSON..= secret]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Queryable" Prelude.<$> queryable,
+                  (JSON..=) "Type" Prelude.<$> type'])))
+instance Property "Description" ConfigurationPropertiesProperty where
+  type PropertyType "Description" ConfigurationPropertiesProperty = Value Prelude.Text
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "Key" ConfigurationPropertiesProperty where
+  type PropertyType "Key" ConfigurationPropertiesProperty = Value Prelude.Bool
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty {key = newValue, ..}
+instance Property "Name" ConfigurationPropertiesProperty where
+  type PropertyType "Name" ConfigurationPropertiesProperty = Value Prelude.Text
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty {name = newValue, ..}
+instance Property "Queryable" ConfigurationPropertiesProperty where
+  type PropertyType "Queryable" ConfigurationPropertiesProperty = Value Prelude.Bool
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty
+        {queryable = Prelude.pure newValue, ..}
+instance Property "Required" ConfigurationPropertiesProperty where
+  type PropertyType "Required" ConfigurationPropertiesProperty = Value Prelude.Bool
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty {required = newValue, ..}
+instance Property "Secret" ConfigurationPropertiesProperty where
+  type PropertyType "Secret" ConfigurationPropertiesProperty = Value Prelude.Bool
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty {secret = newValue, ..}
+instance Property "Type" ConfigurationPropertiesProperty where
+  type PropertyType "Type" ConfigurationPropertiesProperty = Value Prelude.Text
+  set newValue ConfigurationPropertiesProperty {..}
+    = ConfigurationPropertiesProperty
+        {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs-boot b/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/ConfigurationPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.CustomActionType.ConfigurationPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConfigurationPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ConfigurationPropertiesProperty
+instance Prelude.Eq ConfigurationPropertiesProperty
+instance Prelude.Show ConfigurationPropertiesProperty
+instance JSON.ToJSON ConfigurationPropertiesProperty
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs b/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.CodePipeline.CustomActionType.SettingsProperty (
+        SettingsProperty(..), mkSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html>
+    SettingsProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-entityurltemplate>
+                      entityUrlTemplate :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-executionurltemplate>
+                      executionUrlTemplate :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-revisionurltemplate>
+                      revisionUrlTemplate :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-thirdpartyconfigurationurl>
+                      thirdPartyConfigurationUrl :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSettingsProperty :: SettingsProperty
+mkSettingsProperty
+  = SettingsProperty
+      {haddock_workaround_ = (), entityUrlTemplate = Prelude.Nothing,
+       executionUrlTemplate = Prelude.Nothing,
+       revisionUrlTemplate = Prelude.Nothing,
+       thirdPartyConfigurationUrl = Prelude.Nothing}
+instance ToResourceProperties SettingsProperty where
+  toResourceProperties SettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::CustomActionType.Settings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EntityUrlTemplate" Prelude.<$> entityUrlTemplate,
+                            (JSON..=) "ExecutionUrlTemplate" Prelude.<$> executionUrlTemplate,
+                            (JSON..=) "RevisionUrlTemplate" Prelude.<$> revisionUrlTemplate,
+                            (JSON..=) "ThirdPartyConfigurationUrl"
+                              Prelude.<$> thirdPartyConfigurationUrl])}
+instance JSON.ToJSON SettingsProperty where
+  toJSON SettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EntityUrlTemplate" Prelude.<$> entityUrlTemplate,
+               (JSON..=) "ExecutionUrlTemplate" Prelude.<$> executionUrlTemplate,
+               (JSON..=) "RevisionUrlTemplate" Prelude.<$> revisionUrlTemplate,
+               (JSON..=) "ThirdPartyConfigurationUrl"
+                 Prelude.<$> thirdPartyConfigurationUrl]))
+instance Property "EntityUrlTemplate" SettingsProperty where
+  type PropertyType "EntityUrlTemplate" SettingsProperty = Value Prelude.Text
+  set newValue SettingsProperty {..}
+    = SettingsProperty {entityUrlTemplate = Prelude.pure newValue, ..}
+instance Property "ExecutionUrlTemplate" SettingsProperty where
+  type PropertyType "ExecutionUrlTemplate" SettingsProperty = Value Prelude.Text
+  set newValue SettingsProperty {..}
+    = SettingsProperty
+        {executionUrlTemplate = Prelude.pure newValue, ..}
+instance Property "RevisionUrlTemplate" SettingsProperty where
+  type PropertyType "RevisionUrlTemplate" SettingsProperty = Value Prelude.Text
+  set newValue SettingsProperty {..}
+    = SettingsProperty
+        {revisionUrlTemplate = Prelude.pure newValue, ..}
+instance Property "ThirdPartyConfigurationUrl" SettingsProperty where
+  type PropertyType "ThirdPartyConfigurationUrl" SettingsProperty = Value Prelude.Text
+  set newValue SettingsProperty {..}
+    = SettingsProperty
+        {thirdPartyConfigurationUrl = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs-boot b/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/CustomActionType/SettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.CustomActionType.SettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SettingsProperty :: Prelude.Type
+instance ToResourceProperties SettingsProperty
+instance Prelude.Eq SettingsProperty
+instance Prelude.Show SettingsProperty
+instance JSON.ToJSON SettingsProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline.hs b/gen/Stratosphere/CodePipeline/Pipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline.hs
@@ -0,0 +1,141 @@
+module Stratosphere.CodePipeline.Pipeline (
+        module Exports, Pipeline(..), mkPipeline
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ArtifactStoreProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ArtifactStoreMapProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.PipelineTriggerDeclarationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.StageDeclarationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.StageTransitionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.VariableDeclarationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Pipeline
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html>
+    Pipeline {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-artifactstore>
+              artifactStore :: (Prelude.Maybe ArtifactStoreProperty),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-artifactstores>
+              artifactStores :: (Prelude.Maybe [ArtifactStoreMapProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-disableinboundstagetransitions>
+              disableInboundStageTransitions :: (Prelude.Maybe [StageTransitionProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-executionmode>
+              executionMode :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-name>
+              name :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-pipelinetype>
+              pipelineType :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-restartexecutiononupdate>
+              restartExecutionOnUpdate :: (Prelude.Maybe (Value Prelude.Bool)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-rolearn>
+              roleArn :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-stages>
+              stages :: [StageDeclarationProperty],
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-tags>
+              tags :: (Prelude.Maybe [Tag]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-triggers>
+              triggers :: (Prelude.Maybe [PipelineTriggerDeclarationProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-variables>
+              variables :: (Prelude.Maybe [VariableDeclarationProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPipeline ::
+  Value Prelude.Text -> [StageDeclarationProperty] -> Pipeline
+mkPipeline roleArn stages
+  = Pipeline
+      {haddock_workaround_ = (), roleArn = roleArn, stages = stages,
+       artifactStore = Prelude.Nothing, artifactStores = Prelude.Nothing,
+       disableInboundStageTransitions = Prelude.Nothing,
+       executionMode = Prelude.Nothing, name = Prelude.Nothing,
+       pipelineType = Prelude.Nothing,
+       restartExecutionOnUpdate = Prelude.Nothing, tags = Prelude.Nothing,
+       triggers = Prelude.Nothing, variables = Prelude.Nothing}
+instance ToResourceProperties Pipeline where
+  toResourceProperties Pipeline {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RoleArn" JSON..= roleArn, "Stages" JSON..= stages]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ArtifactStore" Prelude.<$> artifactStore,
+                               (JSON..=) "ArtifactStores" Prelude.<$> artifactStores,
+                               (JSON..=) "DisableInboundStageTransitions"
+                                 Prelude.<$> disableInboundStageTransitions,
+                               (JSON..=) "ExecutionMode" Prelude.<$> executionMode,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "PipelineType" Prelude.<$> pipelineType,
+                               (JSON..=) "RestartExecutionOnUpdate"
+                                 Prelude.<$> restartExecutionOnUpdate,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Triggers" Prelude.<$> triggers,
+                               (JSON..=) "Variables" Prelude.<$> variables]))}
+instance JSON.ToJSON Pipeline where
+  toJSON Pipeline {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RoleArn" JSON..= roleArn, "Stages" JSON..= stages]
+              (Prelude.catMaybes
+                 [(JSON..=) "ArtifactStore" Prelude.<$> artifactStore,
+                  (JSON..=) "ArtifactStores" Prelude.<$> artifactStores,
+                  (JSON..=) "DisableInboundStageTransitions"
+                    Prelude.<$> disableInboundStageTransitions,
+                  (JSON..=) "ExecutionMode" Prelude.<$> executionMode,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "PipelineType" Prelude.<$> pipelineType,
+                  (JSON..=) "RestartExecutionOnUpdate"
+                    Prelude.<$> restartExecutionOnUpdate,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Triggers" Prelude.<$> triggers,
+                  (JSON..=) "Variables" Prelude.<$> variables])))
+instance Property "ArtifactStore" Pipeline where
+  type PropertyType "ArtifactStore" Pipeline = ArtifactStoreProperty
+  set newValue Pipeline {..}
+    = Pipeline {artifactStore = Prelude.pure newValue, ..}
+instance Property "ArtifactStores" Pipeline where
+  type PropertyType "ArtifactStores" Pipeline = [ArtifactStoreMapProperty]
+  set newValue Pipeline {..}
+    = Pipeline {artifactStores = Prelude.pure newValue, ..}
+instance Property "DisableInboundStageTransitions" Pipeline where
+  type PropertyType "DisableInboundStageTransitions" Pipeline = [StageTransitionProperty]
+  set newValue Pipeline {..}
+    = Pipeline
+        {disableInboundStageTransitions = Prelude.pure newValue, ..}
+instance Property "ExecutionMode" Pipeline where
+  type PropertyType "ExecutionMode" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..}
+    = Pipeline {executionMode = Prelude.pure newValue, ..}
+instance Property "Name" Pipeline where
+  type PropertyType "Name" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..}
+    = Pipeline {name = Prelude.pure newValue, ..}
+instance Property "PipelineType" Pipeline where
+  type PropertyType "PipelineType" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..}
+    = Pipeline {pipelineType = Prelude.pure newValue, ..}
+instance Property "RestartExecutionOnUpdate" Pipeline where
+  type PropertyType "RestartExecutionOnUpdate" Pipeline = Value Prelude.Bool
+  set newValue Pipeline {..}
+    = Pipeline {restartExecutionOnUpdate = Prelude.pure newValue, ..}
+instance Property "RoleArn" Pipeline where
+  type PropertyType "RoleArn" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..} = Pipeline {roleArn = newValue, ..}
+instance Property "Stages" Pipeline where
+  type PropertyType "Stages" Pipeline = [StageDeclarationProperty]
+  set newValue Pipeline {..} = Pipeline {stages = newValue, ..}
+instance Property "Tags" Pipeline where
+  type PropertyType "Tags" Pipeline = [Tag]
+  set newValue Pipeline {..}
+    = Pipeline {tags = Prelude.pure newValue, ..}
+instance Property "Triggers" Pipeline where
+  type PropertyType "Triggers" Pipeline = [PipelineTriggerDeclarationProperty]
+  set newValue Pipeline {..}
+    = Pipeline {triggers = Prelude.pure newValue, ..}
+instance Property "Variables" Pipeline where
+  type PropertyType "Variables" Pipeline = [VariableDeclarationProperty]
+  set newValue Pipeline {..}
+    = Pipeline {variables = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs
@@ -0,0 +1,153 @@
+module Stratosphere.CodePipeline.Pipeline.ActionDeclarationProperty (
+        module Exports, ActionDeclarationProperty(..),
+        mkActionDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ActionTypeIdProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.EnvironmentVariableProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.InputArtifactProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.OutputArtifactProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ActionDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html>
+    ActionDeclarationProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-actiontypeid>
+                               actionTypeId :: ActionTypeIdProperty,
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-commands>
+                               commands :: (Prelude.Maybe (ValueList Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-configuration>
+                               configuration :: (Prelude.Maybe JSON.Object),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-environmentvariables>
+                               environmentVariables :: (Prelude.Maybe [EnvironmentVariableProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-inputartifacts>
+                               inputArtifacts :: (Prelude.Maybe [InputArtifactProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-name>
+                               name :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-namespace>
+                               namespace :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-outputartifacts>
+                               outputArtifacts :: (Prelude.Maybe [OutputArtifactProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-outputvariables>
+                               outputVariables :: (Prelude.Maybe (ValueList Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-region>
+                               region :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-rolearn>
+                               roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-runorder>
+                               runOrder :: (Prelude.Maybe (Value Prelude.Integer)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiondeclaration.html#cfn-codepipeline-pipeline-actiondeclaration-timeoutinminutes>
+                               timeoutInMinutes :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionDeclarationProperty ::
+  ActionTypeIdProperty
+  -> Value Prelude.Text -> ActionDeclarationProperty
+mkActionDeclarationProperty actionTypeId name
+  = ActionDeclarationProperty
+      {haddock_workaround_ = (), actionTypeId = actionTypeId,
+       name = name, commands = Prelude.Nothing,
+       configuration = Prelude.Nothing,
+       environmentVariables = Prelude.Nothing,
+       inputArtifacts = Prelude.Nothing, namespace = Prelude.Nothing,
+       outputArtifacts = Prelude.Nothing,
+       outputVariables = Prelude.Nothing, region = Prelude.Nothing,
+       roleArn = Prelude.Nothing, runOrder = Prelude.Nothing,
+       timeoutInMinutes = Prelude.Nothing}
+instance ToResourceProperties ActionDeclarationProperty where
+  toResourceProperties ActionDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.ActionDeclaration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ActionTypeId" JSON..= actionTypeId, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Commands" Prelude.<$> commands,
+                               (JSON..=) "Configuration" Prelude.<$> configuration,
+                               (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                               (JSON..=) "InputArtifacts" Prelude.<$> inputArtifacts,
+                               (JSON..=) "Namespace" Prelude.<$> namespace,
+                               (JSON..=) "OutputArtifacts" Prelude.<$> outputArtifacts,
+                               (JSON..=) "OutputVariables" Prelude.<$> outputVariables,
+                               (JSON..=) "Region" Prelude.<$> region,
+                               (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                               (JSON..=) "RunOrder" Prelude.<$> runOrder,
+                               (JSON..=) "TimeoutInMinutes" Prelude.<$> timeoutInMinutes]))}
+instance JSON.ToJSON ActionDeclarationProperty where
+  toJSON ActionDeclarationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ActionTypeId" JSON..= actionTypeId, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Commands" Prelude.<$> commands,
+                  (JSON..=) "Configuration" Prelude.<$> configuration,
+                  (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                  (JSON..=) "InputArtifacts" Prelude.<$> inputArtifacts,
+                  (JSON..=) "Namespace" Prelude.<$> namespace,
+                  (JSON..=) "OutputArtifacts" Prelude.<$> outputArtifacts,
+                  (JSON..=) "OutputVariables" Prelude.<$> outputVariables,
+                  (JSON..=) "Region" Prelude.<$> region,
+                  (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                  (JSON..=) "RunOrder" Prelude.<$> runOrder,
+                  (JSON..=) "TimeoutInMinutes" Prelude.<$> timeoutInMinutes])))
+instance Property "ActionTypeId" ActionDeclarationProperty where
+  type PropertyType "ActionTypeId" ActionDeclarationProperty = ActionTypeIdProperty
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {actionTypeId = newValue, ..}
+instance Property "Commands" ActionDeclarationProperty where
+  type PropertyType "Commands" ActionDeclarationProperty = ValueList Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {commands = Prelude.pure newValue, ..}
+instance Property "Configuration" ActionDeclarationProperty where
+  type PropertyType "Configuration" ActionDeclarationProperty = JSON.Object
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {configuration = Prelude.pure newValue, ..}
+instance Property "EnvironmentVariables" ActionDeclarationProperty where
+  type PropertyType "EnvironmentVariables" ActionDeclarationProperty = [EnvironmentVariableProperty]
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {environmentVariables = Prelude.pure newValue, ..}
+instance Property "InputArtifacts" ActionDeclarationProperty where
+  type PropertyType "InputArtifacts" ActionDeclarationProperty = [InputArtifactProperty]
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {inputArtifacts = Prelude.pure newValue, ..}
+instance Property "Name" ActionDeclarationProperty where
+  type PropertyType "Name" ActionDeclarationProperty = Value Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {name = newValue, ..}
+instance Property "Namespace" ActionDeclarationProperty where
+  type PropertyType "Namespace" ActionDeclarationProperty = Value Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {namespace = Prelude.pure newValue, ..}
+instance Property "OutputArtifacts" ActionDeclarationProperty where
+  type PropertyType "OutputArtifacts" ActionDeclarationProperty = [OutputArtifactProperty]
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {outputArtifacts = Prelude.pure newValue, ..}
+instance Property "OutputVariables" ActionDeclarationProperty where
+  type PropertyType "OutputVariables" ActionDeclarationProperty = ValueList Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {outputVariables = Prelude.pure newValue, ..}
+instance Property "Region" ActionDeclarationProperty where
+  type PropertyType "Region" ActionDeclarationProperty = Value Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {region = Prelude.pure newValue, ..}
+instance Property "RoleArn" ActionDeclarationProperty where
+  type PropertyType "RoleArn" ActionDeclarationProperty = Value Prelude.Text
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {roleArn = Prelude.pure newValue, ..}
+instance Property "RunOrder" ActionDeclarationProperty where
+  type PropertyType "RunOrder" ActionDeclarationProperty = Value Prelude.Integer
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty {runOrder = Prelude.pure newValue, ..}
+instance Property "TimeoutInMinutes" ActionDeclarationProperty where
+  type PropertyType "TimeoutInMinutes" ActionDeclarationProperty = Value Prelude.Integer
+  set newValue ActionDeclarationProperty {..}
+    = ActionDeclarationProperty
+        {timeoutInMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ActionDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.ActionDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionDeclarationProperty :: Prelude.Type
+instance ToResourceProperties ActionDeclarationProperty
+instance Prelude.Eq ActionDeclarationProperty
+instance Prelude.Show ActionDeclarationProperty
+instance JSON.ToJSON ActionDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.CodePipeline.Pipeline.ActionTypeIdProperty (
+        ActionTypeIdProperty(..), mkActionTypeIdProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ActionTypeIdProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiontypeid.html>
+    ActionTypeIdProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiontypeid.html#cfn-codepipeline-pipeline-actiontypeid-category>
+                          category :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiontypeid.html#cfn-codepipeline-pipeline-actiontypeid-owner>
+                          owner :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiontypeid.html#cfn-codepipeline-pipeline-actiontypeid-provider>
+                          provider :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-actiontypeid.html#cfn-codepipeline-pipeline-actiontypeid-version>
+                          version :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionTypeIdProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> ActionTypeIdProperty
+mkActionTypeIdProperty category owner provider version
+  = ActionTypeIdProperty
+      {haddock_workaround_ = (), category = category, owner = owner,
+       provider = provider, version = version}
+instance ToResourceProperties ActionTypeIdProperty where
+  toResourceProperties ActionTypeIdProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.ActionTypeId",
+         supportsTags = Prelude.False,
+         properties = ["Category" JSON..= category, "Owner" JSON..= owner,
+                       "Provider" JSON..= provider, "Version" JSON..= version]}
+instance JSON.ToJSON ActionTypeIdProperty where
+  toJSON ActionTypeIdProperty {..}
+    = JSON.object
+        ["Category" JSON..= category, "Owner" JSON..= owner,
+         "Provider" JSON..= provider, "Version" JSON..= version]
+instance Property "Category" ActionTypeIdProperty where
+  type PropertyType "Category" ActionTypeIdProperty = Value Prelude.Text
+  set newValue ActionTypeIdProperty {..}
+    = ActionTypeIdProperty {category = newValue, ..}
+instance Property "Owner" ActionTypeIdProperty where
+  type PropertyType "Owner" ActionTypeIdProperty = Value Prelude.Text
+  set newValue ActionTypeIdProperty {..}
+    = ActionTypeIdProperty {owner = newValue, ..}
+instance Property "Provider" ActionTypeIdProperty where
+  type PropertyType "Provider" ActionTypeIdProperty = Value Prelude.Text
+  set newValue ActionTypeIdProperty {..}
+    = ActionTypeIdProperty {provider = newValue, ..}
+instance Property "Version" ActionTypeIdProperty where
+  type PropertyType "Version" ActionTypeIdProperty = Value Prelude.Text
+  set newValue ActionTypeIdProperty {..}
+    = ActionTypeIdProperty {version = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ActionTypeIdProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.ActionTypeIdProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionTypeIdProperty :: Prelude.Type
+instance ToResourceProperties ActionTypeIdProperty
+instance Prelude.Eq ActionTypeIdProperty
+instance Prelude.Show ActionTypeIdProperty
+instance JSON.ToJSON ActionTypeIdProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.CodePipeline.Pipeline.ArtifactStoreMapProperty (
+        module Exports, ArtifactStoreMapProperty(..),
+        mkArtifactStoreMapProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ArtifactStoreProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ArtifactStoreMapProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html>
+    ArtifactStoreMapProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html#cfn-codepipeline-pipeline-artifactstoremap-artifactstore>
+                              artifactStore :: ArtifactStoreProperty,
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html#cfn-codepipeline-pipeline-artifactstoremap-region>
+                              region :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArtifactStoreMapProperty ::
+  ArtifactStoreProperty
+  -> Value Prelude.Text -> ArtifactStoreMapProperty
+mkArtifactStoreMapProperty artifactStore region
+  = ArtifactStoreMapProperty
+      {haddock_workaround_ = (), artifactStore = artifactStore,
+       region = region}
+instance ToResourceProperties ArtifactStoreMapProperty where
+  toResourceProperties ArtifactStoreMapProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.ArtifactStoreMap",
+         supportsTags = Prelude.False,
+         properties = ["ArtifactStore" JSON..= artifactStore,
+                       "Region" JSON..= region]}
+instance JSON.ToJSON ArtifactStoreMapProperty where
+  toJSON ArtifactStoreMapProperty {..}
+    = JSON.object
+        ["ArtifactStore" JSON..= artifactStore, "Region" JSON..= region]
+instance Property "ArtifactStore" ArtifactStoreMapProperty where
+  type PropertyType "ArtifactStore" ArtifactStoreMapProperty = ArtifactStoreProperty
+  set newValue ArtifactStoreMapProperty {..}
+    = ArtifactStoreMapProperty {artifactStore = newValue, ..}
+instance Property "Region" ArtifactStoreMapProperty where
+  type PropertyType "Region" ArtifactStoreMapProperty = Value Prelude.Text
+  set newValue ArtifactStoreMapProperty {..}
+    = ArtifactStoreMapProperty {region = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreMapProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.ArtifactStoreMapProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ArtifactStoreMapProperty :: Prelude.Type
+instance ToResourceProperties ArtifactStoreMapProperty
+instance Prelude.Eq ArtifactStoreMapProperty
+instance Prelude.Show ArtifactStoreMapProperty
+instance JSON.ToJSON ArtifactStoreMapProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.CodePipeline.Pipeline.ArtifactStoreProperty (
+        module Exports, ArtifactStoreProperty(..), mkArtifactStoreProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.EncryptionKeyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ArtifactStoreProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html>
+    ArtifactStoreProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-encryptionkey>
+                           encryptionKey :: (Prelude.Maybe EncryptionKeyProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-location>
+                           location :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-type>
+                           type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArtifactStoreProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ArtifactStoreProperty
+mkArtifactStoreProperty location type'
+  = ArtifactStoreProperty
+      {haddock_workaround_ = (), location = location, type' = type',
+       encryptionKey = Prelude.Nothing}
+instance ToResourceProperties ArtifactStoreProperty where
+  toResourceProperties ArtifactStoreProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.ArtifactStore",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Location" JSON..= location, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "EncryptionKey" Prelude.<$> encryptionKey]))}
+instance JSON.ToJSON ArtifactStoreProperty where
+  toJSON ArtifactStoreProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Location" JSON..= location, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "EncryptionKey" Prelude.<$> encryptionKey])))
+instance Property "EncryptionKey" ArtifactStoreProperty where
+  type PropertyType "EncryptionKey" ArtifactStoreProperty = EncryptionKeyProperty
+  set newValue ArtifactStoreProperty {..}
+    = ArtifactStoreProperty {encryptionKey = Prelude.pure newValue, ..}
+instance Property "Location" ArtifactStoreProperty where
+  type PropertyType "Location" ArtifactStoreProperty = Value Prelude.Text
+  set newValue ArtifactStoreProperty {..}
+    = ArtifactStoreProperty {location = newValue, ..}
+instance Property "Type" ArtifactStoreProperty where
+  type PropertyType "Type" ArtifactStoreProperty = Value Prelude.Text
+  set newValue ArtifactStoreProperty {..}
+    = ArtifactStoreProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ArtifactStoreProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.ArtifactStoreProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ArtifactStoreProperty :: Prelude.Type
+instance ToResourceProperties ArtifactStoreProperty
+instance Prelude.Eq ArtifactStoreProperty
+instance Prelude.Show ArtifactStoreProperty
+instance JSON.ToJSON ArtifactStoreProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.CodePipeline.Pipeline.BeforeEntryConditionsProperty (
+        module Exports, BeforeEntryConditionsProperty(..),
+        mkBeforeEntryConditionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ConditionProperty as Exports
+import Stratosphere.ResourceProperties
+data BeforeEntryConditionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-beforeentryconditions.html>
+    BeforeEntryConditionsProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-beforeentryconditions.html#cfn-codepipeline-pipeline-beforeentryconditions-conditions>
+                                   conditions :: (Prelude.Maybe [ConditionProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBeforeEntryConditionsProperty :: BeforeEntryConditionsProperty
+mkBeforeEntryConditionsProperty
+  = BeforeEntryConditionsProperty
+      {haddock_workaround_ = (), conditions = Prelude.Nothing}
+instance ToResourceProperties BeforeEntryConditionsProperty where
+  toResourceProperties BeforeEntryConditionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.BeforeEntryConditions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Conditions" Prelude.<$> conditions])}
+instance JSON.ToJSON BeforeEntryConditionsProperty where
+  toJSON BeforeEntryConditionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Conditions" Prelude.<$> conditions]))
+instance Property "Conditions" BeforeEntryConditionsProperty where
+  type PropertyType "Conditions" BeforeEntryConditionsProperty = [ConditionProperty]
+  set newValue BeforeEntryConditionsProperty {..}
+    = BeforeEntryConditionsProperty
+        {conditions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/BeforeEntryConditionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.BeforeEntryConditionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BeforeEntryConditionsProperty :: Prelude.Type
+instance ToResourceProperties BeforeEntryConditionsProperty
+instance Prelude.Eq BeforeEntryConditionsProperty
+instance Prelude.Show BeforeEntryConditionsProperty
+instance JSON.ToJSON BeforeEntryConditionsProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CodePipeline.Pipeline.BlockerDeclarationProperty (
+        BlockerDeclarationProperty(..), mkBlockerDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BlockerDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-blockerdeclaration.html>
+    BlockerDeclarationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-blockerdeclaration.html#cfn-codepipeline-pipeline-blockerdeclaration-name>
+                                name :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-blockerdeclaration.html#cfn-codepipeline-pipeline-blockerdeclaration-type>
+                                type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBlockerDeclarationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> BlockerDeclarationProperty
+mkBlockerDeclarationProperty name type'
+  = BlockerDeclarationProperty
+      {haddock_workaround_ = (), name = name, type' = type'}
+instance ToResourceProperties BlockerDeclarationProperty where
+  toResourceProperties BlockerDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.BlockerDeclaration",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Type" JSON..= type']}
+instance JSON.ToJSON BlockerDeclarationProperty where
+  toJSON BlockerDeclarationProperty {..}
+    = JSON.object ["Name" JSON..= name, "Type" JSON..= type']
+instance Property "Name" BlockerDeclarationProperty where
+  type PropertyType "Name" BlockerDeclarationProperty = Value Prelude.Text
+  set newValue BlockerDeclarationProperty {..}
+    = BlockerDeclarationProperty {name = newValue, ..}
+instance Property "Type" BlockerDeclarationProperty where
+  type PropertyType "Type" BlockerDeclarationProperty = Value Prelude.Text
+  set newValue BlockerDeclarationProperty {..}
+    = BlockerDeclarationProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/BlockerDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.BlockerDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BlockerDeclarationProperty :: Prelude.Type
+instance ToResourceProperties BlockerDeclarationProperty
+instance Prelude.Eq BlockerDeclarationProperty
+instance Prelude.Show BlockerDeclarationProperty
+instance JSON.ToJSON BlockerDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CodePipeline.Pipeline.ConditionProperty (
+        module Exports, ConditionProperty(..), mkConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.RuleDeclarationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-condition.html>
+    ConditionProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-condition.html#cfn-codepipeline-pipeline-condition-result>
+                       result :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-condition.html#cfn-codepipeline-pipeline-condition-rules>
+                       rules :: (Prelude.Maybe [RuleDeclarationProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConditionProperty :: ConditionProperty
+mkConditionProperty
+  = ConditionProperty
+      {haddock_workaround_ = (), result = Prelude.Nothing,
+       rules = Prelude.Nothing}
+instance ToResourceProperties ConditionProperty where
+  toResourceProperties ConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.Condition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Result" Prelude.<$> result,
+                            (JSON..=) "Rules" Prelude.<$> rules])}
+instance JSON.ToJSON ConditionProperty where
+  toJSON ConditionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Result" Prelude.<$> result,
+               (JSON..=) "Rules" Prelude.<$> rules]))
+instance Property "Result" ConditionProperty where
+  type PropertyType "Result" ConditionProperty = Value Prelude.Text
+  set newValue ConditionProperty {..}
+    = ConditionProperty {result = Prelude.pure newValue, ..}
+instance Property "Rules" ConditionProperty where
+  type PropertyType "Rules" ConditionProperty = [RuleDeclarationProperty]
+  set newValue ConditionProperty {..}
+    = ConditionProperty {rules = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/ConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.ConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConditionProperty :: Prelude.Type
+instance ToResourceProperties ConditionProperty
+instance Prelude.Eq ConditionProperty
+instance Prelude.Show ConditionProperty
+instance JSON.ToJSON ConditionProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.CodePipeline.Pipeline.EncryptionKeyProperty (
+        EncryptionKeyProperty(..), mkEncryptionKeyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EncryptionKeyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-encryptionkey.html>
+    EncryptionKeyProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-encryptionkey.html#cfn-codepipeline-pipeline-encryptionkey-id>
+                           id :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-encryptionkey.html#cfn-codepipeline-pipeline-encryptionkey-type>
+                           type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEncryptionKeyProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> EncryptionKeyProperty
+mkEncryptionKeyProperty id type'
+  = EncryptionKeyProperty
+      {haddock_workaround_ = (), id = id, type' = type'}
+instance ToResourceProperties EncryptionKeyProperty where
+  toResourceProperties EncryptionKeyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.EncryptionKey",
+         supportsTags = Prelude.False,
+         properties = ["Id" JSON..= id, "Type" JSON..= type']}
+instance JSON.ToJSON EncryptionKeyProperty where
+  toJSON EncryptionKeyProperty {..}
+    = JSON.object ["Id" JSON..= id, "Type" JSON..= type']
+instance Property "Id" EncryptionKeyProperty where
+  type PropertyType "Id" EncryptionKeyProperty = Value Prelude.Text
+  set newValue EncryptionKeyProperty {..}
+    = EncryptionKeyProperty {id = newValue, ..}
+instance Property "Type" EncryptionKeyProperty where
+  type PropertyType "Type" EncryptionKeyProperty = Value Prelude.Text
+  set newValue EncryptionKeyProperty {..}
+    = EncryptionKeyProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/EncryptionKeyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.EncryptionKeyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EncryptionKeyProperty :: Prelude.Type
+instance ToResourceProperties EncryptionKeyProperty
+instance Prelude.Eq EncryptionKeyProperty
+instance Prelude.Show EncryptionKeyProperty
+instance JSON.ToJSON EncryptionKeyProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodePipeline.Pipeline.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-codepipeline-pipeline-environmentvariable.html>
+    EnvironmentVariableProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-environmentvariable.html#cfn-codepipeline-pipeline-environmentvariable-name>
+                                 name :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-environmentvariable.html#cfn-codepipeline-pipeline-environmentvariable-type>
+                                 type' :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-environmentvariable.html#cfn-codepipeline-pipeline-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,
+       type' = Prelude.Nothing}
+instance ToResourceProperties EnvironmentVariableProperty where
+  toResourceProperties EnvironmentVariableProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.EnvironmentVariable",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name, "Value" JSON..= value]
+                           (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type']))}
+instance JSON.ToJSON EnvironmentVariableProperty where
+  toJSON EnvironmentVariableProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name, "Value" JSON..= value]
+              (Prelude.catMaybes [(JSON..=) "Type" Prelude.<$> type'])))
+instance Property "Name" EnvironmentVariableProperty where
+  type PropertyType "Name" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {name = newValue, ..}
+instance Property "Type" EnvironmentVariableProperty where
+  type PropertyType "Type" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {type' = Prelude.pure newValue, ..}
+instance Property "Value" EnvironmentVariableProperty where
+  type PropertyType "Value" EnvironmentVariableProperty = Value Prelude.Text
+  set newValue EnvironmentVariableProperty {..}
+    = EnvironmentVariableProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/EnvironmentVariableProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.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/CodePipeline/Pipeline/FailureConditionsProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/FailureConditionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/FailureConditionsProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodePipeline.Pipeline.FailureConditionsProperty (
+        module Exports, FailureConditionsProperty(..),
+        mkFailureConditionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ConditionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.RetryConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FailureConditionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-failureconditions.html>
+    FailureConditionsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-failureconditions.html#cfn-codepipeline-pipeline-failureconditions-conditions>
+                               conditions :: (Prelude.Maybe [ConditionProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-failureconditions.html#cfn-codepipeline-pipeline-failureconditions-result>
+                               result :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-failureconditions.html#cfn-codepipeline-pipeline-failureconditions-retryconfiguration>
+                               retryConfiguration :: (Prelude.Maybe RetryConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFailureConditionsProperty :: FailureConditionsProperty
+mkFailureConditionsProperty
+  = FailureConditionsProperty
+      {haddock_workaround_ = (), conditions = Prelude.Nothing,
+       result = Prelude.Nothing, retryConfiguration = Prelude.Nothing}
+instance ToResourceProperties FailureConditionsProperty where
+  toResourceProperties FailureConditionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.FailureConditions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Conditions" Prelude.<$> conditions,
+                            (JSON..=) "Result" Prelude.<$> result,
+                            (JSON..=) "RetryConfiguration" Prelude.<$> retryConfiguration])}
+instance JSON.ToJSON FailureConditionsProperty where
+  toJSON FailureConditionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Conditions" Prelude.<$> conditions,
+               (JSON..=) "Result" Prelude.<$> result,
+               (JSON..=) "RetryConfiguration" Prelude.<$> retryConfiguration]))
+instance Property "Conditions" FailureConditionsProperty where
+  type PropertyType "Conditions" FailureConditionsProperty = [ConditionProperty]
+  set newValue FailureConditionsProperty {..}
+    = FailureConditionsProperty
+        {conditions = Prelude.pure newValue, ..}
+instance Property "Result" FailureConditionsProperty where
+  type PropertyType "Result" FailureConditionsProperty = Value Prelude.Text
+  set newValue FailureConditionsProperty {..}
+    = FailureConditionsProperty {result = Prelude.pure newValue, ..}
+instance Property "RetryConfiguration" FailureConditionsProperty where
+  type PropertyType "RetryConfiguration" FailureConditionsProperty = RetryConfigurationProperty
+  set newValue FailureConditionsProperty {..}
+    = FailureConditionsProperty
+        {retryConfiguration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/FailureConditionsProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/FailureConditionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/FailureConditionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.FailureConditionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FailureConditionsProperty :: Prelude.Type
+instance ToResourceProperties FailureConditionsProperty
+instance Prelude.Eq FailureConditionsProperty
+instance Prelude.Show FailureConditionsProperty
+instance JSON.ToJSON FailureConditionsProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodePipeline.Pipeline.GitBranchFilterCriteriaProperty (
+        GitBranchFilterCriteriaProperty(..),
+        mkGitBranchFilterCriteriaProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitBranchFilterCriteriaProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitbranchfiltercriteria.html>
+    GitBranchFilterCriteriaProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitbranchfiltercriteria.html#cfn-codepipeline-pipeline-gitbranchfiltercriteria-excludes>
+                                     excludes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitbranchfiltercriteria.html#cfn-codepipeline-pipeline-gitbranchfiltercriteria-includes>
+                                     includes :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitBranchFilterCriteriaProperty ::
+  GitBranchFilterCriteriaProperty
+mkGitBranchFilterCriteriaProperty
+  = GitBranchFilterCriteriaProperty
+      {haddock_workaround_ = (), excludes = Prelude.Nothing,
+       includes = Prelude.Nothing}
+instance ToResourceProperties GitBranchFilterCriteriaProperty where
+  toResourceProperties GitBranchFilterCriteriaProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitBranchFilterCriteria",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Excludes" Prelude.<$> excludes,
+                            (JSON..=) "Includes" Prelude.<$> includes])}
+instance JSON.ToJSON GitBranchFilterCriteriaProperty where
+  toJSON GitBranchFilterCriteriaProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Excludes" Prelude.<$> excludes,
+               (JSON..=) "Includes" Prelude.<$> includes]))
+instance Property "Excludes" GitBranchFilterCriteriaProperty where
+  type PropertyType "Excludes" GitBranchFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitBranchFilterCriteriaProperty {..}
+    = GitBranchFilterCriteriaProperty
+        {excludes = Prelude.pure newValue, ..}
+instance Property "Includes" GitBranchFilterCriteriaProperty where
+  type PropertyType "Includes" GitBranchFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitBranchFilterCriteriaProperty {..}
+    = GitBranchFilterCriteriaProperty
+        {includes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitBranchFilterCriteriaProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitBranchFilterCriteriaProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitBranchFilterCriteriaProperty :: Prelude.Type
+instance ToResourceProperties GitBranchFilterCriteriaProperty
+instance Prelude.Eq GitBranchFilterCriteriaProperty
+instance Prelude.Show GitBranchFilterCriteriaProperty
+instance JSON.ToJSON GitBranchFilterCriteriaProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.CodePipeline.Pipeline.GitConfigurationProperty (
+        module Exports, GitConfigurationProperty(..),
+        mkGitConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitPullRequestFilterProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitPushFilterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitconfiguration.html>
+    GitConfigurationProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitconfiguration.html#cfn-codepipeline-pipeline-gitconfiguration-pullrequest>
+                              pullRequest :: (Prelude.Maybe [GitPullRequestFilterProperty]),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitconfiguration.html#cfn-codepipeline-pipeline-gitconfiguration-push>
+                              push :: (Prelude.Maybe [GitPushFilterProperty]),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitconfiguration.html#cfn-codepipeline-pipeline-gitconfiguration-sourceactionname>
+                              sourceActionName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitConfigurationProperty ::
+  Value Prelude.Text -> GitConfigurationProperty
+mkGitConfigurationProperty sourceActionName
+  = GitConfigurationProperty
+      {haddock_workaround_ = (), sourceActionName = sourceActionName,
+       pullRequest = Prelude.Nothing, push = Prelude.Nothing}
+instance ToResourceProperties GitConfigurationProperty where
+  toResourceProperties GitConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceActionName" JSON..= sourceActionName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PullRequest" Prelude.<$> pullRequest,
+                               (JSON..=) "Push" Prelude.<$> push]))}
+instance JSON.ToJSON GitConfigurationProperty where
+  toJSON GitConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceActionName" JSON..= sourceActionName]
+              (Prelude.catMaybes
+                 [(JSON..=) "PullRequest" Prelude.<$> pullRequest,
+                  (JSON..=) "Push" Prelude.<$> push])))
+instance Property "PullRequest" GitConfigurationProperty where
+  type PropertyType "PullRequest" GitConfigurationProperty = [GitPullRequestFilterProperty]
+  set newValue GitConfigurationProperty {..}
+    = GitConfigurationProperty
+        {pullRequest = Prelude.pure newValue, ..}
+instance Property "Push" GitConfigurationProperty where
+  type PropertyType "Push" GitConfigurationProperty = [GitPushFilterProperty]
+  set newValue GitConfigurationProperty {..}
+    = GitConfigurationProperty {push = Prelude.pure newValue, ..}
+instance Property "SourceActionName" GitConfigurationProperty where
+  type PropertyType "SourceActionName" GitConfigurationProperty = Value Prelude.Text
+  set newValue GitConfigurationProperty {..}
+    = GitConfigurationProperty {sourceActionName = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitConfigurationProperty :: Prelude.Type
+instance ToResourceProperties GitConfigurationProperty
+instance Prelude.Eq GitConfigurationProperty
+instance Prelude.Show GitConfigurationProperty
+instance JSON.ToJSON GitConfigurationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodePipeline.Pipeline.GitFilePathFilterCriteriaProperty (
+        GitFilePathFilterCriteriaProperty(..),
+        mkGitFilePathFilterCriteriaProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitFilePathFilterCriteriaProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitfilepathfiltercriteria.html>
+    GitFilePathFilterCriteriaProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitfilepathfiltercriteria.html#cfn-codepipeline-pipeline-gitfilepathfiltercriteria-excludes>
+                                       excludes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitfilepathfiltercriteria.html#cfn-codepipeline-pipeline-gitfilepathfiltercriteria-includes>
+                                       includes :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitFilePathFilterCriteriaProperty ::
+  GitFilePathFilterCriteriaProperty
+mkGitFilePathFilterCriteriaProperty
+  = GitFilePathFilterCriteriaProperty
+      {haddock_workaround_ = (), excludes = Prelude.Nothing,
+       includes = Prelude.Nothing}
+instance ToResourceProperties GitFilePathFilterCriteriaProperty where
+  toResourceProperties GitFilePathFilterCriteriaProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitFilePathFilterCriteria",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Excludes" Prelude.<$> excludes,
+                            (JSON..=) "Includes" Prelude.<$> includes])}
+instance JSON.ToJSON GitFilePathFilterCriteriaProperty where
+  toJSON GitFilePathFilterCriteriaProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Excludes" Prelude.<$> excludes,
+               (JSON..=) "Includes" Prelude.<$> includes]))
+instance Property "Excludes" GitFilePathFilterCriteriaProperty where
+  type PropertyType "Excludes" GitFilePathFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitFilePathFilterCriteriaProperty {..}
+    = GitFilePathFilterCriteriaProperty
+        {excludes = Prelude.pure newValue, ..}
+instance Property "Includes" GitFilePathFilterCriteriaProperty where
+  type PropertyType "Includes" GitFilePathFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitFilePathFilterCriteriaProperty {..}
+    = GitFilePathFilterCriteriaProperty
+        {includes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitFilePathFilterCriteriaProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitFilePathFilterCriteriaProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitFilePathFilterCriteriaProperty :: Prelude.Type
+instance ToResourceProperties GitFilePathFilterCriteriaProperty
+instance Prelude.Eq GitFilePathFilterCriteriaProperty
+instance Prelude.Show GitFilePathFilterCriteriaProperty
+instance JSON.ToJSON GitFilePathFilterCriteriaProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodePipeline.Pipeline.GitPullRequestFilterProperty (
+        module Exports, GitPullRequestFilterProperty(..),
+        mkGitPullRequestFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitBranchFilterCriteriaProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitFilePathFilterCriteriaProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitPullRequestFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpullrequestfilter.html>
+    GitPullRequestFilterProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpullrequestfilter.html#cfn-codepipeline-pipeline-gitpullrequestfilter-branches>
+                                  branches :: (Prelude.Maybe GitBranchFilterCriteriaProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpullrequestfilter.html#cfn-codepipeline-pipeline-gitpullrequestfilter-events>
+                                  events :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpullrequestfilter.html#cfn-codepipeline-pipeline-gitpullrequestfilter-filepaths>
+                                  filePaths :: (Prelude.Maybe GitFilePathFilterCriteriaProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitPullRequestFilterProperty :: GitPullRequestFilterProperty
+mkGitPullRequestFilterProperty
+  = GitPullRequestFilterProperty
+      {haddock_workaround_ = (), branches = Prelude.Nothing,
+       events = Prelude.Nothing, filePaths = Prelude.Nothing}
+instance ToResourceProperties GitPullRequestFilterProperty where
+  toResourceProperties GitPullRequestFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitPullRequestFilter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Branches" Prelude.<$> branches,
+                            (JSON..=) "Events" Prelude.<$> events,
+                            (JSON..=) "FilePaths" Prelude.<$> filePaths])}
+instance JSON.ToJSON GitPullRequestFilterProperty where
+  toJSON GitPullRequestFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Branches" Prelude.<$> branches,
+               (JSON..=) "Events" Prelude.<$> events,
+               (JSON..=) "FilePaths" Prelude.<$> filePaths]))
+instance Property "Branches" GitPullRequestFilterProperty where
+  type PropertyType "Branches" GitPullRequestFilterProperty = GitBranchFilterCriteriaProperty
+  set newValue GitPullRequestFilterProperty {..}
+    = GitPullRequestFilterProperty
+        {branches = Prelude.pure newValue, ..}
+instance Property "Events" GitPullRequestFilterProperty where
+  type PropertyType "Events" GitPullRequestFilterProperty = ValueList Prelude.Text
+  set newValue GitPullRequestFilterProperty {..}
+    = GitPullRequestFilterProperty {events = Prelude.pure newValue, ..}
+instance Property "FilePaths" GitPullRequestFilterProperty where
+  type PropertyType "FilePaths" GitPullRequestFilterProperty = GitFilePathFilterCriteriaProperty
+  set newValue GitPullRequestFilterProperty {..}
+    = GitPullRequestFilterProperty
+        {filePaths = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitPullRequestFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitPullRequestFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitPullRequestFilterProperty :: Prelude.Type
+instance ToResourceProperties GitPullRequestFilterProperty
+instance Prelude.Eq GitPullRequestFilterProperty
+instance Prelude.Show GitPullRequestFilterProperty
+instance JSON.ToJSON GitPullRequestFilterProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.CodePipeline.Pipeline.GitPushFilterProperty (
+        module Exports, GitPushFilterProperty(..), mkGitPushFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitBranchFilterCriteriaProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitFilePathFilterCriteriaProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitTagFilterCriteriaProperty as Exports
+import Stratosphere.ResourceProperties
+data GitPushFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpushfilter.html>
+    GitPushFilterProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpushfilter.html#cfn-codepipeline-pipeline-gitpushfilter-branches>
+                           branches :: (Prelude.Maybe GitBranchFilterCriteriaProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpushfilter.html#cfn-codepipeline-pipeline-gitpushfilter-filepaths>
+                           filePaths :: (Prelude.Maybe GitFilePathFilterCriteriaProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gitpushfilter.html#cfn-codepipeline-pipeline-gitpushfilter-tags>
+                           tags :: (Prelude.Maybe GitTagFilterCriteriaProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitPushFilterProperty :: GitPushFilterProperty
+mkGitPushFilterProperty
+  = GitPushFilterProperty
+      {haddock_workaround_ = (), branches = Prelude.Nothing,
+       filePaths = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties GitPushFilterProperty where
+  toResourceProperties GitPushFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitPushFilter",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Branches" Prelude.<$> branches,
+                            (JSON..=) "FilePaths" Prelude.<$> filePaths,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON GitPushFilterProperty where
+  toJSON GitPushFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Branches" Prelude.<$> branches,
+               (JSON..=) "FilePaths" Prelude.<$> filePaths,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "Branches" GitPushFilterProperty where
+  type PropertyType "Branches" GitPushFilterProperty = GitBranchFilterCriteriaProperty
+  set newValue GitPushFilterProperty {..}
+    = GitPushFilterProperty {branches = Prelude.pure newValue, ..}
+instance Property "FilePaths" GitPushFilterProperty where
+  type PropertyType "FilePaths" GitPushFilterProperty = GitFilePathFilterCriteriaProperty
+  set newValue GitPushFilterProperty {..}
+    = GitPushFilterProperty {filePaths = Prelude.pure newValue, ..}
+instance Property "Tags" GitPushFilterProperty where
+  type PropertyType "Tags" GitPushFilterProperty = GitTagFilterCriteriaProperty
+  set newValue GitPushFilterProperty {..}
+    = GitPushFilterProperty {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitPushFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitPushFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitPushFilterProperty :: Prelude.Type
+instance ToResourceProperties GitPushFilterProperty
+instance Prelude.Eq GitPushFilterProperty
+instance Prelude.Show GitPushFilterProperty
+instance JSON.ToJSON GitPushFilterProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.CodePipeline.Pipeline.GitTagFilterCriteriaProperty (
+        GitTagFilterCriteriaProperty(..), mkGitTagFilterCriteriaProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitTagFilterCriteriaProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gittagfiltercriteria.html>
+    GitTagFilterCriteriaProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gittagfiltercriteria.html#cfn-codepipeline-pipeline-gittagfiltercriteria-excludes>
+                                  excludes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-gittagfiltercriteria.html#cfn-codepipeline-pipeline-gittagfiltercriteria-includes>
+                                  includes :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitTagFilterCriteriaProperty :: GitTagFilterCriteriaProperty
+mkGitTagFilterCriteriaProperty
+  = GitTagFilterCriteriaProperty
+      {haddock_workaround_ = (), excludes = Prelude.Nothing,
+       includes = Prelude.Nothing}
+instance ToResourceProperties GitTagFilterCriteriaProperty where
+  toResourceProperties GitTagFilterCriteriaProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.GitTagFilterCriteria",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Excludes" Prelude.<$> excludes,
+                            (JSON..=) "Includes" Prelude.<$> includes])}
+instance JSON.ToJSON GitTagFilterCriteriaProperty where
+  toJSON GitTagFilterCriteriaProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Excludes" Prelude.<$> excludes,
+               (JSON..=) "Includes" Prelude.<$> includes]))
+instance Property "Excludes" GitTagFilterCriteriaProperty where
+  type PropertyType "Excludes" GitTagFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitTagFilterCriteriaProperty {..}
+    = GitTagFilterCriteriaProperty
+        {excludes = Prelude.pure newValue, ..}
+instance Property "Includes" GitTagFilterCriteriaProperty where
+  type PropertyType "Includes" GitTagFilterCriteriaProperty = ValueList Prelude.Text
+  set newValue GitTagFilterCriteriaProperty {..}
+    = GitTagFilterCriteriaProperty
+        {includes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/GitTagFilterCriteriaProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.GitTagFilterCriteriaProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitTagFilterCriteriaProperty :: Prelude.Type
+instance ToResourceProperties GitTagFilterCriteriaProperty
+instance Prelude.Eq GitTagFilterCriteriaProperty
+instance Prelude.Show GitTagFilterCriteriaProperty
+instance JSON.ToJSON GitTagFilterCriteriaProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.CodePipeline.Pipeline.InputArtifactProperty (
+        InputArtifactProperty(..), mkInputArtifactProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InputArtifactProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-inputartifact.html>
+    InputArtifactProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-inputartifact.html#cfn-codepipeline-pipeline-inputartifact-name>
+                           name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInputArtifactProperty ::
+  Value Prelude.Text -> InputArtifactProperty
+mkInputArtifactProperty name
+  = InputArtifactProperty {haddock_workaround_ = (), name = name}
+instance ToResourceProperties InputArtifactProperty where
+  toResourceProperties InputArtifactProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.InputArtifact",
+         supportsTags = Prelude.False, properties = ["Name" JSON..= name]}
+instance JSON.ToJSON InputArtifactProperty where
+  toJSON InputArtifactProperty {..}
+    = JSON.object ["Name" JSON..= name]
+instance Property "Name" InputArtifactProperty where
+  type PropertyType "Name" InputArtifactProperty = Value Prelude.Text
+  set newValue InputArtifactProperty {..}
+    = InputArtifactProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/InputArtifactProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.InputArtifactProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InputArtifactProperty :: Prelude.Type
+instance ToResourceProperties InputArtifactProperty
+instance Prelude.Eq InputArtifactProperty
+instance Prelude.Show InputArtifactProperty
+instance JSON.ToJSON InputArtifactProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.CodePipeline.Pipeline.OutputArtifactProperty (
+        OutputArtifactProperty(..), mkOutputArtifactProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutputArtifactProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-outputartifact.html>
+    OutputArtifactProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-outputartifact.html#cfn-codepipeline-pipeline-outputartifact-files>
+                            files :: (Prelude.Maybe (ValueList Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-outputartifact.html#cfn-codepipeline-pipeline-outputartifact-name>
+                            name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutputArtifactProperty ::
+  Value Prelude.Text -> OutputArtifactProperty
+mkOutputArtifactProperty name
+  = OutputArtifactProperty
+      {haddock_workaround_ = (), name = name, files = Prelude.Nothing}
+instance ToResourceProperties OutputArtifactProperty where
+  toResourceProperties OutputArtifactProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.OutputArtifact",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes [(JSON..=) "Files" Prelude.<$> files]))}
+instance JSON.ToJSON OutputArtifactProperty where
+  toJSON OutputArtifactProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes [(JSON..=) "Files" Prelude.<$> files])))
+instance Property "Files" OutputArtifactProperty where
+  type PropertyType "Files" OutputArtifactProperty = ValueList Prelude.Text
+  set newValue OutputArtifactProperty {..}
+    = OutputArtifactProperty {files = Prelude.pure newValue, ..}
+instance Property "Name" OutputArtifactProperty where
+  type PropertyType "Name" OutputArtifactProperty = Value Prelude.Text
+  set newValue OutputArtifactProperty {..}
+    = OutputArtifactProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/OutputArtifactProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.OutputArtifactProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutputArtifactProperty :: Prelude.Type
+instance ToResourceProperties OutputArtifactProperty
+instance Prelude.Eq OutputArtifactProperty
+instance Prelude.Show OutputArtifactProperty
+instance JSON.ToJSON OutputArtifactProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.CodePipeline.Pipeline.PipelineTriggerDeclarationProperty (
+        module Exports, PipelineTriggerDeclarationProperty(..),
+        mkPipelineTriggerDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.GitConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PipelineTriggerDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-pipelinetriggerdeclaration.html>
+    PipelineTriggerDeclarationProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-pipelinetriggerdeclaration.html#cfn-codepipeline-pipeline-pipelinetriggerdeclaration-gitconfiguration>
+                                        gitConfiguration :: (Prelude.Maybe GitConfigurationProperty),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-pipelinetriggerdeclaration.html#cfn-codepipeline-pipeline-pipelinetriggerdeclaration-providertype>
+                                        providerType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPipelineTriggerDeclarationProperty ::
+  Value Prelude.Text -> PipelineTriggerDeclarationProperty
+mkPipelineTriggerDeclarationProperty providerType
+  = PipelineTriggerDeclarationProperty
+      {haddock_workaround_ = (), providerType = providerType,
+       gitConfiguration = Prelude.Nothing}
+instance ToResourceProperties PipelineTriggerDeclarationProperty where
+  toResourceProperties PipelineTriggerDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.PipelineTriggerDeclaration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ProviderType" JSON..= providerType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "GitConfiguration" Prelude.<$> gitConfiguration]))}
+instance JSON.ToJSON PipelineTriggerDeclarationProperty where
+  toJSON PipelineTriggerDeclarationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ProviderType" JSON..= providerType]
+              (Prelude.catMaybes
+                 [(JSON..=) "GitConfiguration" Prelude.<$> gitConfiguration])))
+instance Property "GitConfiguration" PipelineTriggerDeclarationProperty where
+  type PropertyType "GitConfiguration" PipelineTriggerDeclarationProperty = GitConfigurationProperty
+  set newValue PipelineTriggerDeclarationProperty {..}
+    = PipelineTriggerDeclarationProperty
+        {gitConfiguration = Prelude.pure newValue, ..}
+instance Property "ProviderType" PipelineTriggerDeclarationProperty where
+  type PropertyType "ProviderType" PipelineTriggerDeclarationProperty = Value Prelude.Text
+  set newValue PipelineTriggerDeclarationProperty {..}
+    = PipelineTriggerDeclarationProperty {providerType = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/PipelineTriggerDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.PipelineTriggerDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PipelineTriggerDeclarationProperty :: Prelude.Type
+instance ToResourceProperties PipelineTriggerDeclarationProperty
+instance Prelude.Eq PipelineTriggerDeclarationProperty
+instance Prelude.Show PipelineTriggerDeclarationProperty
+instance JSON.ToJSON PipelineTriggerDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.CodePipeline.Pipeline.RetryConfigurationProperty (
+        RetryConfigurationProperty(..), mkRetryConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RetryConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-retryconfiguration.html>
+    RetryConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-retryconfiguration.html#cfn-codepipeline-pipeline-retryconfiguration-retrymode>
+                                retryMode :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRetryConfigurationProperty :: RetryConfigurationProperty
+mkRetryConfigurationProperty
+  = RetryConfigurationProperty
+      {haddock_workaround_ = (), retryMode = Prelude.Nothing}
+instance ToResourceProperties RetryConfigurationProperty where
+  toResourceProperties RetryConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.RetryConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "RetryMode" Prelude.<$> retryMode])}
+instance JSON.ToJSON RetryConfigurationProperty where
+  toJSON RetryConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "RetryMode" Prelude.<$> retryMode]))
+instance Property "RetryMode" RetryConfigurationProperty where
+  type PropertyType "RetryMode" RetryConfigurationProperty = Value Prelude.Text
+  set newValue RetryConfigurationProperty {..}
+    = RetryConfigurationProperty
+        {retryMode = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RetryConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.RetryConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RetryConfigurationProperty :: Prelude.Type
+instance ToResourceProperties RetryConfigurationProperty
+instance Prelude.Eq RetryConfigurationProperty
+instance Prelude.Show RetryConfigurationProperty
+instance JSON.ToJSON RetryConfigurationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs
@@ -0,0 +1,92 @@
+module Stratosphere.CodePipeline.Pipeline.RuleDeclarationProperty (
+        module Exports, RuleDeclarationProperty(..),
+        mkRuleDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.InputArtifactProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.RuleTypeIdProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html>
+    RuleDeclarationProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-commands>
+                             commands :: (Prelude.Maybe (ValueList Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-configuration>
+                             configuration :: (Prelude.Maybe JSON.Object),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-inputartifacts>
+                             inputArtifacts :: (Prelude.Maybe [InputArtifactProperty]),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-name>
+                             name :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-region>
+                             region :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-rolearn>
+                             roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruledeclaration.html#cfn-codepipeline-pipeline-ruledeclaration-ruletypeid>
+                             ruleTypeId :: (Prelude.Maybe RuleTypeIdProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleDeclarationProperty :: RuleDeclarationProperty
+mkRuleDeclarationProperty
+  = RuleDeclarationProperty
+      {haddock_workaround_ = (), commands = Prelude.Nothing,
+       configuration = Prelude.Nothing, inputArtifacts = Prelude.Nothing,
+       name = Prelude.Nothing, region = Prelude.Nothing,
+       roleArn = Prelude.Nothing, ruleTypeId = Prelude.Nothing}
+instance ToResourceProperties RuleDeclarationProperty where
+  toResourceProperties RuleDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.RuleDeclaration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Commands" Prelude.<$> commands,
+                            (JSON..=) "Configuration" Prelude.<$> configuration,
+                            (JSON..=) "InputArtifacts" Prelude.<$> inputArtifacts,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Region" Prelude.<$> region,
+                            (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                            (JSON..=) "RuleTypeId" Prelude.<$> ruleTypeId])}
+instance JSON.ToJSON RuleDeclarationProperty where
+  toJSON RuleDeclarationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Commands" Prelude.<$> commands,
+               (JSON..=) "Configuration" Prelude.<$> configuration,
+               (JSON..=) "InputArtifacts" Prelude.<$> inputArtifacts,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Region" Prelude.<$> region,
+               (JSON..=) "RoleArn" Prelude.<$> roleArn,
+               (JSON..=) "RuleTypeId" Prelude.<$> ruleTypeId]))
+instance Property "Commands" RuleDeclarationProperty where
+  type PropertyType "Commands" RuleDeclarationProperty = ValueList Prelude.Text
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty {commands = Prelude.pure newValue, ..}
+instance Property "Configuration" RuleDeclarationProperty where
+  type PropertyType "Configuration" RuleDeclarationProperty = JSON.Object
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty
+        {configuration = Prelude.pure newValue, ..}
+instance Property "InputArtifacts" RuleDeclarationProperty where
+  type PropertyType "InputArtifacts" RuleDeclarationProperty = [InputArtifactProperty]
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty
+        {inputArtifacts = Prelude.pure newValue, ..}
+instance Property "Name" RuleDeclarationProperty where
+  type PropertyType "Name" RuleDeclarationProperty = Value Prelude.Text
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty {name = Prelude.pure newValue, ..}
+instance Property "Region" RuleDeclarationProperty where
+  type PropertyType "Region" RuleDeclarationProperty = Value Prelude.Text
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty {region = Prelude.pure newValue, ..}
+instance Property "RoleArn" RuleDeclarationProperty where
+  type PropertyType "RoleArn" RuleDeclarationProperty = Value Prelude.Text
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty {roleArn = Prelude.pure newValue, ..}
+instance Property "RuleTypeId" RuleDeclarationProperty where
+  type PropertyType "RuleTypeId" RuleDeclarationProperty = RuleTypeIdProperty
+  set newValue RuleDeclarationProperty {..}
+    = RuleDeclarationProperty {ruleTypeId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RuleDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.RuleDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleDeclarationProperty :: Prelude.Type
+instance ToResourceProperties RuleDeclarationProperty
+instance Prelude.Eq RuleDeclarationProperty
+instance Prelude.Show RuleDeclarationProperty
+instance JSON.ToJSON RuleDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.CodePipeline.Pipeline.RuleTypeIdProperty (
+        RuleTypeIdProperty(..), mkRuleTypeIdProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleTypeIdProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruletypeid.html>
+    RuleTypeIdProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruletypeid.html#cfn-codepipeline-pipeline-ruletypeid-category>
+                        category :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruletypeid.html#cfn-codepipeline-pipeline-ruletypeid-owner>
+                        owner :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruletypeid.html#cfn-codepipeline-pipeline-ruletypeid-provider>
+                        provider :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-ruletypeid.html#cfn-codepipeline-pipeline-ruletypeid-version>
+                        version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleTypeIdProperty :: RuleTypeIdProperty
+mkRuleTypeIdProperty
+  = RuleTypeIdProperty
+      {haddock_workaround_ = (), category = Prelude.Nothing,
+       owner = Prelude.Nothing, provider = Prelude.Nothing,
+       version = Prelude.Nothing}
+instance ToResourceProperties RuleTypeIdProperty where
+  toResourceProperties RuleTypeIdProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.RuleTypeId",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Category" Prelude.<$> category,
+                            (JSON..=) "Owner" Prelude.<$> owner,
+                            (JSON..=) "Provider" Prelude.<$> provider,
+                            (JSON..=) "Version" Prelude.<$> version])}
+instance JSON.ToJSON RuleTypeIdProperty where
+  toJSON RuleTypeIdProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Category" Prelude.<$> category,
+               (JSON..=) "Owner" Prelude.<$> owner,
+               (JSON..=) "Provider" Prelude.<$> provider,
+               (JSON..=) "Version" Prelude.<$> version]))
+instance Property "Category" RuleTypeIdProperty where
+  type PropertyType "Category" RuleTypeIdProperty = Value Prelude.Text
+  set newValue RuleTypeIdProperty {..}
+    = RuleTypeIdProperty {category = Prelude.pure newValue, ..}
+instance Property "Owner" RuleTypeIdProperty where
+  type PropertyType "Owner" RuleTypeIdProperty = Value Prelude.Text
+  set newValue RuleTypeIdProperty {..}
+    = RuleTypeIdProperty {owner = Prelude.pure newValue, ..}
+instance Property "Provider" RuleTypeIdProperty where
+  type PropertyType "Provider" RuleTypeIdProperty = Value Prelude.Text
+  set newValue RuleTypeIdProperty {..}
+    = RuleTypeIdProperty {provider = Prelude.pure newValue, ..}
+instance Property "Version" RuleTypeIdProperty where
+  type PropertyType "Version" RuleTypeIdProperty = Value Prelude.Text
+  set newValue RuleTypeIdProperty {..}
+    = RuleTypeIdProperty {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/RuleTypeIdProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.RuleTypeIdProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleTypeIdProperty :: Prelude.Type
+instance ToResourceProperties RuleTypeIdProperty
+instance Prelude.Eq RuleTypeIdProperty
+instance Prelude.Show RuleTypeIdProperty
+instance JSON.ToJSON RuleTypeIdProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs
@@ -0,0 +1,87 @@
+module Stratosphere.CodePipeline.Pipeline.StageDeclarationProperty (
+        module Exports, StageDeclarationProperty(..),
+        mkStageDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ActionDeclarationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.BeforeEntryConditionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.BlockerDeclarationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.FailureConditionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.SuccessConditionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StageDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html>
+    StageDeclarationProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-actions>
+                              actions :: [ActionDeclarationProperty],
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-beforeentry>
+                              beforeEntry :: (Prelude.Maybe BeforeEntryConditionsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-blockers>
+                              blockers :: (Prelude.Maybe [BlockerDeclarationProperty]),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-name>
+                              name :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onfailure>
+                              onFailure :: (Prelude.Maybe FailureConditionsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onsuccess>
+                              onSuccess :: (Prelude.Maybe SuccessConditionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStageDeclarationProperty ::
+  [ActionDeclarationProperty]
+  -> Value Prelude.Text -> StageDeclarationProperty
+mkStageDeclarationProperty actions name
+  = StageDeclarationProperty
+      {haddock_workaround_ = (), actions = actions, name = name,
+       beforeEntry = Prelude.Nothing, blockers = Prelude.Nothing,
+       onFailure = Prelude.Nothing, onSuccess = Prelude.Nothing}
+instance ToResourceProperties StageDeclarationProperty where
+  toResourceProperties StageDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.StageDeclaration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Actions" JSON..= actions, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BeforeEntry" Prelude.<$> beforeEntry,
+                               (JSON..=) "Blockers" Prelude.<$> blockers,
+                               (JSON..=) "OnFailure" Prelude.<$> onFailure,
+                               (JSON..=) "OnSuccess" Prelude.<$> onSuccess]))}
+instance JSON.ToJSON StageDeclarationProperty where
+  toJSON StageDeclarationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Actions" JSON..= actions, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "BeforeEntry" Prelude.<$> beforeEntry,
+                  (JSON..=) "Blockers" Prelude.<$> blockers,
+                  (JSON..=) "OnFailure" Prelude.<$> onFailure,
+                  (JSON..=) "OnSuccess" Prelude.<$> onSuccess])))
+instance Property "Actions" StageDeclarationProperty where
+  type PropertyType "Actions" StageDeclarationProperty = [ActionDeclarationProperty]
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty {actions = newValue, ..}
+instance Property "BeforeEntry" StageDeclarationProperty where
+  type PropertyType "BeforeEntry" StageDeclarationProperty = BeforeEntryConditionsProperty
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty
+        {beforeEntry = Prelude.pure newValue, ..}
+instance Property "Blockers" StageDeclarationProperty where
+  type PropertyType "Blockers" StageDeclarationProperty = [BlockerDeclarationProperty]
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty {blockers = Prelude.pure newValue, ..}
+instance Property "Name" StageDeclarationProperty where
+  type PropertyType "Name" StageDeclarationProperty = Value Prelude.Text
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty {name = newValue, ..}
+instance Property "OnFailure" StageDeclarationProperty where
+  type PropertyType "OnFailure" StageDeclarationProperty = FailureConditionsProperty
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty {onFailure = Prelude.pure newValue, ..}
+instance Property "OnSuccess" StageDeclarationProperty where
+  type PropertyType "OnSuccess" StageDeclarationProperty = SuccessConditionsProperty
+  set newValue StageDeclarationProperty {..}
+    = StageDeclarationProperty {onSuccess = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/StageDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.StageDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StageDeclarationProperty :: Prelude.Type
+instance ToResourceProperties StageDeclarationProperty
+instance Prelude.Eq StageDeclarationProperty
+instance Prelude.Show StageDeclarationProperty
+instance JSON.ToJSON StageDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.CodePipeline.Pipeline.StageTransitionProperty (
+        StageTransitionProperty(..), mkStageTransitionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StageTransitionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagetransition.html>
+    StageTransitionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagetransition.html#cfn-codepipeline-pipeline-stagetransition-reason>
+                             reason :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagetransition.html#cfn-codepipeline-pipeline-stagetransition-stagename>
+                             stageName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStageTransitionProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> StageTransitionProperty
+mkStageTransitionProperty reason stageName
+  = StageTransitionProperty
+      {haddock_workaround_ = (), reason = reason, stageName = stageName}
+instance ToResourceProperties StageTransitionProperty where
+  toResourceProperties StageTransitionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.StageTransition",
+         supportsTags = Prelude.False,
+         properties = ["Reason" JSON..= reason,
+                       "StageName" JSON..= stageName]}
+instance JSON.ToJSON StageTransitionProperty where
+  toJSON StageTransitionProperty {..}
+    = JSON.object
+        ["Reason" JSON..= reason, "StageName" JSON..= stageName]
+instance Property "Reason" StageTransitionProperty where
+  type PropertyType "Reason" StageTransitionProperty = Value Prelude.Text
+  set newValue StageTransitionProperty {..}
+    = StageTransitionProperty {reason = newValue, ..}
+instance Property "StageName" StageTransitionProperty where
+  type PropertyType "StageName" StageTransitionProperty = Value Prelude.Text
+  set newValue StageTransitionProperty {..}
+    = StageTransitionProperty {stageName = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/StageTransitionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.StageTransitionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StageTransitionProperty :: Prelude.Type
+instance ToResourceProperties StageTransitionProperty
+instance Prelude.Eq StageTransitionProperty
+instance Prelude.Show StageTransitionProperty
+instance JSON.ToJSON StageTransitionProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.CodePipeline.Pipeline.SuccessConditionsProperty (
+        module Exports, SuccessConditionsProperty(..),
+        mkSuccessConditionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Pipeline.ConditionProperty as Exports
+import Stratosphere.ResourceProperties
+data SuccessConditionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-successconditions.html>
+    SuccessConditionsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-successconditions.html#cfn-codepipeline-pipeline-successconditions-conditions>
+                               conditions :: (Prelude.Maybe [ConditionProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSuccessConditionsProperty :: SuccessConditionsProperty
+mkSuccessConditionsProperty
+  = SuccessConditionsProperty
+      {haddock_workaround_ = (), conditions = Prelude.Nothing}
+instance ToResourceProperties SuccessConditionsProperty where
+  toResourceProperties SuccessConditionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.SuccessConditions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Conditions" Prelude.<$> conditions])}
+instance JSON.ToJSON SuccessConditionsProperty where
+  toJSON SuccessConditionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Conditions" Prelude.<$> conditions]))
+instance Property "Conditions" SuccessConditionsProperty where
+  type PropertyType "Conditions" SuccessConditionsProperty = [ConditionProperty]
+  set newValue SuccessConditionsProperty {..}
+    = SuccessConditionsProperty
+        {conditions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/SuccessConditionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.SuccessConditionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SuccessConditionsProperty :: Prelude.Type
+instance ToResourceProperties SuccessConditionsProperty
+instance Prelude.Eq SuccessConditionsProperty
+instance Prelude.Show SuccessConditionsProperty
+instance JSON.ToJSON SuccessConditionsProperty
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs b/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodePipeline.Pipeline.VariableDeclarationProperty (
+        VariableDeclarationProperty(..), mkVariableDeclarationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data VariableDeclarationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-variabledeclaration.html>
+    VariableDeclarationProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-variabledeclaration.html#cfn-codepipeline-pipeline-variabledeclaration-defaultvalue>
+                                 defaultValue :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-variabledeclaration.html#cfn-codepipeline-pipeline-variabledeclaration-description>
+                                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-variabledeclaration.html#cfn-codepipeline-pipeline-variabledeclaration-name>
+                                 name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVariableDeclarationProperty ::
+  Value Prelude.Text -> VariableDeclarationProperty
+mkVariableDeclarationProperty name
+  = VariableDeclarationProperty
+      {haddock_workaround_ = (), name = name,
+       defaultValue = Prelude.Nothing, description = Prelude.Nothing}
+instance ToResourceProperties VariableDeclarationProperty where
+  toResourceProperties VariableDeclarationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Pipeline.VariableDeclaration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                               (JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON VariableDeclarationProperty where
+  toJSON VariableDeclarationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                  (JSON..=) "Description" Prelude.<$> description])))
+instance Property "DefaultValue" VariableDeclarationProperty where
+  type PropertyType "DefaultValue" VariableDeclarationProperty = Value Prelude.Text
+  set newValue VariableDeclarationProperty {..}
+    = VariableDeclarationProperty
+        {defaultValue = Prelude.pure newValue, ..}
+instance Property "Description" VariableDeclarationProperty where
+  type PropertyType "Description" VariableDeclarationProperty = Value Prelude.Text
+  set newValue VariableDeclarationProperty {..}
+    = VariableDeclarationProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "Name" VariableDeclarationProperty where
+  type PropertyType "Name" VariableDeclarationProperty = Value Prelude.Text
+  set newValue VariableDeclarationProperty {..}
+    = VariableDeclarationProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Pipeline/VariableDeclarationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Pipeline.VariableDeclarationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data VariableDeclarationProperty :: Prelude.Type
+instance ToResourceProperties VariableDeclarationProperty
+instance Prelude.Eq VariableDeclarationProperty
+instance Prelude.Show VariableDeclarationProperty
+instance JSON.ToJSON VariableDeclarationProperty
diff --git a/gen/Stratosphere/CodePipeline/Webhook.hs b/gen/Stratosphere/CodePipeline/Webhook.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Webhook.hs
@@ -0,0 +1,108 @@
+module Stratosphere.CodePipeline.Webhook (
+        module Exports, Webhook(..), mkWebhook
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodePipeline.Webhook.WebhookAuthConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodePipeline.Webhook.WebhookFilterRuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Webhook
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html>
+    Webhook {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authentication>
+             authentication :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authenticationconfiguration>
+             authenticationConfiguration :: WebhookAuthConfigurationProperty,
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-filters>
+             filters :: [WebhookFilterRuleProperty],
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-name>
+             name :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-registerwiththirdparty>
+             registerWithThirdParty :: (Prelude.Maybe (Value Prelude.Bool)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetaction>
+             targetAction :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipeline>
+             targetPipeline :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipelineversion>
+             targetPipelineVersion :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWebhook ::
+  Value Prelude.Text
+  -> WebhookAuthConfigurationProperty
+     -> [WebhookFilterRuleProperty]
+        -> Value Prelude.Text -> Value Prelude.Text -> Webhook
+mkWebhook
+  authentication
+  authenticationConfiguration
+  filters
+  targetAction
+  targetPipeline
+  = Webhook
+      {haddock_workaround_ = (), authentication = authentication,
+       authenticationConfiguration = authenticationConfiguration,
+       filters = filters, targetAction = targetAction,
+       targetPipeline = targetPipeline, name = Prelude.Nothing,
+       registerWithThirdParty = Prelude.Nothing,
+       targetPipelineVersion = Prelude.Nothing}
+instance ToResourceProperties Webhook where
+  toResourceProperties Webhook {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Webhook",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Authentication" JSON..= authentication,
+                            "AuthenticationConfiguration" JSON..= authenticationConfiguration,
+                            "Filters" JSON..= filters, "TargetAction" JSON..= targetAction,
+                            "TargetPipeline" JSON..= targetPipeline]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "RegisterWithThirdParty"
+                                 Prelude.<$> registerWithThirdParty,
+                               (JSON..=) "TargetPipelineVersion"
+                                 Prelude.<$> targetPipelineVersion]))}
+instance JSON.ToJSON Webhook where
+  toJSON Webhook {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Authentication" JSON..= authentication,
+               "AuthenticationConfiguration" JSON..= authenticationConfiguration,
+               "Filters" JSON..= filters, "TargetAction" JSON..= targetAction,
+               "TargetPipeline" JSON..= targetPipeline]
+              (Prelude.catMaybes
+                 [(JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "RegisterWithThirdParty"
+                    Prelude.<$> registerWithThirdParty,
+                  (JSON..=) "TargetPipelineVersion"
+                    Prelude.<$> targetPipelineVersion])))
+instance Property "Authentication" Webhook where
+  type PropertyType "Authentication" Webhook = Value Prelude.Text
+  set newValue Webhook {..} = Webhook {authentication = newValue, ..}
+instance Property "AuthenticationConfiguration" Webhook where
+  type PropertyType "AuthenticationConfiguration" Webhook = WebhookAuthConfigurationProperty
+  set newValue Webhook {..}
+    = Webhook {authenticationConfiguration = newValue, ..}
+instance Property "Filters" Webhook where
+  type PropertyType "Filters" Webhook = [WebhookFilterRuleProperty]
+  set newValue Webhook {..} = Webhook {filters = newValue, ..}
+instance Property "Name" Webhook where
+  type PropertyType "Name" Webhook = Value Prelude.Text
+  set newValue Webhook {..}
+    = Webhook {name = Prelude.pure newValue, ..}
+instance Property "RegisterWithThirdParty" Webhook where
+  type PropertyType "RegisterWithThirdParty" Webhook = Value Prelude.Bool
+  set newValue Webhook {..}
+    = Webhook {registerWithThirdParty = Prelude.pure newValue, ..}
+instance Property "TargetAction" Webhook where
+  type PropertyType "TargetAction" Webhook = Value Prelude.Text
+  set newValue Webhook {..} = Webhook {targetAction = newValue, ..}
+instance Property "TargetPipeline" Webhook where
+  type PropertyType "TargetPipeline" Webhook = Value Prelude.Text
+  set newValue Webhook {..} = Webhook {targetPipeline = newValue, ..}
+instance Property "TargetPipelineVersion" Webhook where
+  type PropertyType "TargetPipelineVersion" Webhook = Value Prelude.Integer
+  set newValue Webhook {..}
+    = Webhook {targetPipelineVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs b/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodePipeline.Webhook.WebhookAuthConfigurationProperty (
+        WebhookAuthConfigurationProperty(..),
+        mkWebhookAuthConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WebhookAuthConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html>
+    WebhookAuthConfigurationProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-allowediprange>
+                                      allowedIPRange :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-secrettoken>
+                                      secretToken :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWebhookAuthConfigurationProperty ::
+  WebhookAuthConfigurationProperty
+mkWebhookAuthConfigurationProperty
+  = WebhookAuthConfigurationProperty
+      {haddock_workaround_ = (), allowedIPRange = Prelude.Nothing,
+       secretToken = Prelude.Nothing}
+instance ToResourceProperties WebhookAuthConfigurationProperty where
+  toResourceProperties WebhookAuthConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Webhook.WebhookAuthConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AllowedIPRange" Prelude.<$> allowedIPRange,
+                            (JSON..=) "SecretToken" Prelude.<$> secretToken])}
+instance JSON.ToJSON WebhookAuthConfigurationProperty where
+  toJSON WebhookAuthConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AllowedIPRange" Prelude.<$> allowedIPRange,
+               (JSON..=) "SecretToken" Prelude.<$> secretToken]))
+instance Property "AllowedIPRange" WebhookAuthConfigurationProperty where
+  type PropertyType "AllowedIPRange" WebhookAuthConfigurationProperty = Value Prelude.Text
+  set newValue WebhookAuthConfigurationProperty {..}
+    = WebhookAuthConfigurationProperty
+        {allowedIPRange = Prelude.pure newValue, ..}
+instance Property "SecretToken" WebhookAuthConfigurationProperty where
+  type PropertyType "SecretToken" WebhookAuthConfigurationProperty = Value Prelude.Text
+  set newValue WebhookAuthConfigurationProperty {..}
+    = WebhookAuthConfigurationProperty
+        {secretToken = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs-boot b/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Webhook/WebhookAuthConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Webhook.WebhookAuthConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WebhookAuthConfigurationProperty :: Prelude.Type
+instance ToResourceProperties WebhookAuthConfigurationProperty
+instance Prelude.Eq WebhookAuthConfigurationProperty
+instance Prelude.Show WebhookAuthConfigurationProperty
+instance JSON.ToJSON WebhookAuthConfigurationProperty
diff --git a/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs b/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodePipeline.Webhook.WebhookFilterRuleProperty (
+        WebhookFilterRuleProperty(..), mkWebhookFilterRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WebhookFilterRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html>
+    WebhookFilterRuleProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-jsonpath>
+                               jsonPath :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-matchequals>
+                               matchEquals :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWebhookFilterRuleProperty ::
+  Value Prelude.Text -> WebhookFilterRuleProperty
+mkWebhookFilterRuleProperty jsonPath
+  = WebhookFilterRuleProperty
+      {haddock_workaround_ = (), jsonPath = jsonPath,
+       matchEquals = Prelude.Nothing}
+instance ToResourceProperties WebhookFilterRuleProperty where
+  toResourceProperties WebhookFilterRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodePipeline::Webhook.WebhookFilterRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["JsonPath" JSON..= jsonPath]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MatchEquals" Prelude.<$> matchEquals]))}
+instance JSON.ToJSON WebhookFilterRuleProperty where
+  toJSON WebhookFilterRuleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["JsonPath" JSON..= jsonPath]
+              (Prelude.catMaybes
+                 [(JSON..=) "MatchEquals" Prelude.<$> matchEquals])))
+instance Property "JsonPath" WebhookFilterRuleProperty where
+  type PropertyType "JsonPath" WebhookFilterRuleProperty = Value Prelude.Text
+  set newValue WebhookFilterRuleProperty {..}
+    = WebhookFilterRuleProperty {jsonPath = newValue, ..}
+instance Property "MatchEquals" WebhookFilterRuleProperty where
+  type PropertyType "MatchEquals" WebhookFilterRuleProperty = Value Prelude.Text
+  set newValue WebhookFilterRuleProperty {..}
+    = WebhookFilterRuleProperty
+        {matchEquals = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs-boot b/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodePipeline/Webhook/WebhookFilterRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodePipeline.Webhook.WebhookFilterRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WebhookFilterRuleProperty :: Prelude.Type
+instance ToResourceProperties WebhookFilterRuleProperty
+instance Prelude.Eq WebhookFilterRuleProperty
+instance Prelude.Show WebhookFilterRuleProperty
+instance JSON.ToJSON WebhookFilterRuleProperty
diff --git a/stratosphere-codepipeline.cabal b/stratosphere-codepipeline.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-codepipeline.cabal
@@ -0,0 +1,106 @@
+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-codepipeline
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS CodePipeline.
+description:    Integration into stratosphere to generate resources and properties for AWS CodePipeline
+category:       AWS, Cloud, CodePipeline
+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.CodePipeline.CustomActionType
+      Stratosphere.CodePipeline.CustomActionType.ArtifactDetailsProperty
+      Stratosphere.CodePipeline.CustomActionType.ConfigurationPropertiesProperty
+      Stratosphere.CodePipeline.CustomActionType.SettingsProperty
+      Stratosphere.CodePipeline.Pipeline
+      Stratosphere.CodePipeline.Pipeline.ActionDeclarationProperty
+      Stratosphere.CodePipeline.Pipeline.ActionTypeIdProperty
+      Stratosphere.CodePipeline.Pipeline.ArtifactStoreMapProperty
+      Stratosphere.CodePipeline.Pipeline.ArtifactStoreProperty
+      Stratosphere.CodePipeline.Pipeline.BeforeEntryConditionsProperty
+      Stratosphere.CodePipeline.Pipeline.BlockerDeclarationProperty
+      Stratosphere.CodePipeline.Pipeline.ConditionProperty
+      Stratosphere.CodePipeline.Pipeline.EncryptionKeyProperty
+      Stratosphere.CodePipeline.Pipeline.EnvironmentVariableProperty
+      Stratosphere.CodePipeline.Pipeline.FailureConditionsProperty
+      Stratosphere.CodePipeline.Pipeline.GitBranchFilterCriteriaProperty
+      Stratosphere.CodePipeline.Pipeline.GitConfigurationProperty
+      Stratosphere.CodePipeline.Pipeline.GitFilePathFilterCriteriaProperty
+      Stratosphere.CodePipeline.Pipeline.GitPullRequestFilterProperty
+      Stratosphere.CodePipeline.Pipeline.GitPushFilterProperty
+      Stratosphere.CodePipeline.Pipeline.GitTagFilterCriteriaProperty
+      Stratosphere.CodePipeline.Pipeline.InputArtifactProperty
+      Stratosphere.CodePipeline.Pipeline.OutputArtifactProperty
+      Stratosphere.CodePipeline.Pipeline.PipelineTriggerDeclarationProperty
+      Stratosphere.CodePipeline.Pipeline.RetryConfigurationProperty
+      Stratosphere.CodePipeline.Pipeline.RuleDeclarationProperty
+      Stratosphere.CodePipeline.Pipeline.RuleTypeIdProperty
+      Stratosphere.CodePipeline.Pipeline.StageDeclarationProperty
+      Stratosphere.CodePipeline.Pipeline.StageTransitionProperty
+      Stratosphere.CodePipeline.Pipeline.SuccessConditionsProperty
+      Stratosphere.CodePipeline.Pipeline.VariableDeclarationProperty
+      Stratosphere.CodePipeline.Webhook
+      Stratosphere.CodePipeline.Webhook.WebhookAuthConfigurationProperty
+      Stratosphere.CodePipeline.Webhook.WebhookFilterRuleProperty
+  other-modules:
+      Paths_stratosphere_codepipeline
+  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
