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/DataPipeline/Pipeline.hs b/gen/Stratosphere/DataPipeline/Pipeline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline.hs
@@ -0,0 +1,92 @@
+module Stratosphere.DataPipeline.Pipeline (
+        module Exports, Pipeline(..), mkPipeline
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.ParameterObjectProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.ParameterValueProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.PipelineObjectProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.PipelineTagProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Pipeline
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html>
+    Pipeline {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-activate>
+              activate :: (Prelude.Maybe (Value Prelude.Bool)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-description>
+              description :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-name>
+              name :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-parameterobjects>
+              parameterObjects :: (Prelude.Maybe [ParameterObjectProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-parametervalues>
+              parameterValues :: (Prelude.Maybe [ParameterValueProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-pipelineobjects>
+              pipelineObjects :: (Prelude.Maybe [PipelineObjectProperty]),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-pipelinetags>
+              pipelineTags :: (Prelude.Maybe [PipelineTagProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPipeline :: Value Prelude.Text -> Pipeline
+mkPipeline name
+  = Pipeline
+      {haddock_workaround_ = (), name = name, activate = Prelude.Nothing,
+       description = Prelude.Nothing, parameterObjects = Prelude.Nothing,
+       parameterValues = Prelude.Nothing,
+       pipelineObjects = Prelude.Nothing, pipelineTags = Prelude.Nothing}
+instance ToResourceProperties Pipeline where
+  toResourceProperties Pipeline {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Activate" Prelude.<$> activate,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "ParameterObjects" Prelude.<$> parameterObjects,
+                               (JSON..=) "ParameterValues" Prelude.<$> parameterValues,
+                               (JSON..=) "PipelineObjects" Prelude.<$> pipelineObjects,
+                               (JSON..=) "PipelineTags" Prelude.<$> pipelineTags]))}
+instance JSON.ToJSON Pipeline where
+  toJSON Pipeline {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Activate" Prelude.<$> activate,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "ParameterObjects" Prelude.<$> parameterObjects,
+                  (JSON..=) "ParameterValues" Prelude.<$> parameterValues,
+                  (JSON..=) "PipelineObjects" Prelude.<$> pipelineObjects,
+                  (JSON..=) "PipelineTags" Prelude.<$> pipelineTags])))
+instance Property "Activate" Pipeline where
+  type PropertyType "Activate" Pipeline = Value Prelude.Bool
+  set newValue Pipeline {..}
+    = Pipeline {activate = Prelude.pure newValue, ..}
+instance Property "Description" Pipeline where
+  type PropertyType "Description" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..}
+    = Pipeline {description = Prelude.pure newValue, ..}
+instance Property "Name" Pipeline where
+  type PropertyType "Name" Pipeline = Value Prelude.Text
+  set newValue Pipeline {..} = Pipeline {name = newValue, ..}
+instance Property "ParameterObjects" Pipeline where
+  type PropertyType "ParameterObjects" Pipeline = [ParameterObjectProperty]
+  set newValue Pipeline {..}
+    = Pipeline {parameterObjects = Prelude.pure newValue, ..}
+instance Property "ParameterValues" Pipeline where
+  type PropertyType "ParameterValues" Pipeline = [ParameterValueProperty]
+  set newValue Pipeline {..}
+    = Pipeline {parameterValues = Prelude.pure newValue, ..}
+instance Property "PipelineObjects" Pipeline where
+  type PropertyType "PipelineObjects" Pipeline = [PipelineObjectProperty]
+  set newValue Pipeline {..}
+    = Pipeline {pipelineObjects = Prelude.pure newValue, ..}
+instance Property "PipelineTags" Pipeline where
+  type PropertyType "PipelineTags" Pipeline = [PipelineTagProperty]
+  set newValue Pipeline {..}
+    = Pipeline {pipelineTags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.DataPipeline.Pipeline.FieldProperty (
+        FieldProperty(..), mkFieldProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-field.html>
+    FieldProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-field.html#cfn-datapipeline-pipeline-field-key>
+                   key :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-field.html#cfn-datapipeline-pipeline-field-refvalue>
+                   refValue :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-field.html#cfn-datapipeline-pipeline-field-stringvalue>
+                   stringValue :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldProperty :: Value Prelude.Text -> FieldProperty
+mkFieldProperty key
+  = FieldProperty
+      {haddock_workaround_ = (), key = key, refValue = Prelude.Nothing,
+       stringValue = Prelude.Nothing}
+instance ToResourceProperties FieldProperty where
+  toResourceProperties FieldProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.Field",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Key" JSON..= key]
+                           (Prelude.catMaybes
+                              [(JSON..=) "RefValue" Prelude.<$> refValue,
+                               (JSON..=) "StringValue" Prelude.<$> stringValue]))}
+instance JSON.ToJSON FieldProperty where
+  toJSON FieldProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Key" JSON..= key]
+              (Prelude.catMaybes
+                 [(JSON..=) "RefValue" Prelude.<$> refValue,
+                  (JSON..=) "StringValue" Prelude.<$> stringValue])))
+instance Property "Key" FieldProperty where
+  type PropertyType "Key" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {key = newValue, ..}
+instance Property "RefValue" FieldProperty where
+  type PropertyType "RefValue" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {refValue = Prelude.pure newValue, ..}
+instance Property "StringValue" FieldProperty where
+  type PropertyType "StringValue" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {stringValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/FieldProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.FieldProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldProperty :: Prelude.Type
+instance ToResourceProperties FieldProperty
+instance Prelude.Eq FieldProperty
+instance Prelude.Show FieldProperty
+instance JSON.ToJSON FieldProperty
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterAttributeProperty (
+        ParameterAttributeProperty(..), mkParameterAttributeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterAttributeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterattribute.html>
+    ParameterAttributeProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterattribute.html#cfn-datapipeline-pipeline-parameterattribute-key>
+                                key :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterattribute.html#cfn-datapipeline-pipeline-parameterattribute-stringvalue>
+                                stringValue :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterAttributeProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ParameterAttributeProperty
+mkParameterAttributeProperty key stringValue
+  = ParameterAttributeProperty
+      {haddock_workaround_ = (), key = key, stringValue = stringValue}
+instance ToResourceProperties ParameterAttributeProperty where
+  toResourceProperties ParameterAttributeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.ParameterAttribute",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key,
+                       "StringValue" JSON..= stringValue]}
+instance JSON.ToJSON ParameterAttributeProperty where
+  toJSON ParameterAttributeProperty {..}
+    = JSON.object
+        ["Key" JSON..= key, "StringValue" JSON..= stringValue]
+instance Property "Key" ParameterAttributeProperty where
+  type PropertyType "Key" ParameterAttributeProperty = Value Prelude.Text
+  set newValue ParameterAttributeProperty {..}
+    = ParameterAttributeProperty {key = newValue, ..}
+instance Property "StringValue" ParameterAttributeProperty where
+  type PropertyType "StringValue" ParameterAttributeProperty = Value Prelude.Text
+  set newValue ParameterAttributeProperty {..}
+    = ParameterAttributeProperty {stringValue = newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterAttributeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterAttributeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterAttributeProperty :: Prelude.Type
+instance ToResourceProperties ParameterAttributeProperty
+instance Prelude.Eq ParameterAttributeProperty
+instance Prelude.Show ParameterAttributeProperty
+instance JSON.ToJSON ParameterAttributeProperty
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterObjectProperty (
+        module Exports, ParameterObjectProperty(..),
+        mkParameterObjectProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.ParameterAttributeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterObjectProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobject.html>
+    ParameterObjectProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobject.html#cfn-datapipeline-pipeline-parameterobject-attributes>
+                             attributes :: [ParameterAttributeProperty],
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobject.html#cfn-datapipeline-pipeline-parameterobject-id>
+                             id :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterObjectProperty ::
+  [ParameterAttributeProperty]
+  -> Value Prelude.Text -> ParameterObjectProperty
+mkParameterObjectProperty attributes id
+  = ParameterObjectProperty
+      {haddock_workaround_ = (), attributes = attributes, id = id}
+instance ToResourceProperties ParameterObjectProperty where
+  toResourceProperties ParameterObjectProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.ParameterObject",
+         supportsTags = Prelude.False,
+         properties = ["Attributes" JSON..= attributes, "Id" JSON..= id]}
+instance JSON.ToJSON ParameterObjectProperty where
+  toJSON ParameterObjectProperty {..}
+    = JSON.object ["Attributes" JSON..= attributes, "Id" JSON..= id]
+instance Property "Attributes" ParameterObjectProperty where
+  type PropertyType "Attributes" ParameterObjectProperty = [ParameterAttributeProperty]
+  set newValue ParameterObjectProperty {..}
+    = ParameterObjectProperty {attributes = newValue, ..}
+instance Property "Id" ParameterObjectProperty where
+  type PropertyType "Id" ParameterObjectProperty = Value Prelude.Text
+  set newValue ParameterObjectProperty {..}
+    = ParameterObjectProperty {id = newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterObjectProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterObjectProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterObjectProperty :: Prelude.Type
+instance ToResourceProperties ParameterObjectProperty
+instance Prelude.Eq ParameterObjectProperty
+instance Prelude.Show ParameterObjectProperty
+instance JSON.ToJSON ParameterObjectProperty
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterValueProperty (
+        ParameterValueProperty(..), mkParameterValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalue.html>
+    ParameterValueProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalue.html#cfn-datapipeline-pipeline-parametervalue-id>
+                            id :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalue.html#cfn-datapipeline-pipeline-parametervalue-stringvalue>
+                            stringValue :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterValueProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ParameterValueProperty
+mkParameterValueProperty id stringValue
+  = ParameterValueProperty
+      {haddock_workaround_ = (), id = id, stringValue = stringValue}
+instance ToResourceProperties ParameterValueProperty where
+  toResourceProperties ParameterValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.ParameterValue",
+         supportsTags = Prelude.False,
+         properties = ["Id" JSON..= id, "StringValue" JSON..= stringValue]}
+instance JSON.ToJSON ParameterValueProperty where
+  toJSON ParameterValueProperty {..}
+    = JSON.object ["Id" JSON..= id, "StringValue" JSON..= stringValue]
+instance Property "Id" ParameterValueProperty where
+  type PropertyType "Id" ParameterValueProperty = Value Prelude.Text
+  set newValue ParameterValueProperty {..}
+    = ParameterValueProperty {id = newValue, ..}
+instance Property "StringValue" ParameterValueProperty where
+  type PropertyType "StringValue" ParameterValueProperty = Value Prelude.Text
+  set newValue ParameterValueProperty {..}
+    = ParameterValueProperty {stringValue = newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/ParameterValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.ParameterValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterValueProperty :: Prelude.Type
+instance ToResourceProperties ParameterValueProperty
+instance Prelude.Eq ParameterValueProperty
+instance Prelude.Show ParameterValueProperty
+instance JSON.ToJSON ParameterValueProperty
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.DataPipeline.Pipeline.PipelineObjectProperty (
+        module Exports, PipelineObjectProperty(..),
+        mkPipelineObjectProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataPipeline.Pipeline.FieldProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PipelineObjectProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobject.html>
+    PipelineObjectProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobject.html#cfn-datapipeline-pipeline-pipelineobject-fields>
+                            fields :: [FieldProperty],
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobject.html#cfn-datapipeline-pipeline-pipelineobject-id>
+                            id :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobject.html#cfn-datapipeline-pipeline-pipelineobject-name>
+                            name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPipelineObjectProperty ::
+  [FieldProperty]
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> PipelineObjectProperty
+mkPipelineObjectProperty fields id name
+  = PipelineObjectProperty
+      {haddock_workaround_ = (), fields = fields, id = id, name = name}
+instance ToResourceProperties PipelineObjectProperty where
+  toResourceProperties PipelineObjectProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.PipelineObject",
+         supportsTags = Prelude.False,
+         properties = ["Fields" JSON..= fields, "Id" JSON..= id,
+                       "Name" JSON..= name]}
+instance JSON.ToJSON PipelineObjectProperty where
+  toJSON PipelineObjectProperty {..}
+    = JSON.object
+        ["Fields" JSON..= fields, "Id" JSON..= id, "Name" JSON..= name]
+instance Property "Fields" PipelineObjectProperty where
+  type PropertyType "Fields" PipelineObjectProperty = [FieldProperty]
+  set newValue PipelineObjectProperty {..}
+    = PipelineObjectProperty {fields = newValue, ..}
+instance Property "Id" PipelineObjectProperty where
+  type PropertyType "Id" PipelineObjectProperty = Value Prelude.Text
+  set newValue PipelineObjectProperty {..}
+    = PipelineObjectProperty {id = newValue, ..}
+instance Property "Name" PipelineObjectProperty where
+  type PropertyType "Name" PipelineObjectProperty = Value Prelude.Text
+  set newValue PipelineObjectProperty {..}
+    = PipelineObjectProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/PipelineObjectProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.PipelineObjectProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PipelineObjectProperty :: Prelude.Type
+instance ToResourceProperties PipelineObjectProperty
+instance Prelude.Eq PipelineObjectProperty
+instance Prelude.Show PipelineObjectProperty
+instance JSON.ToJSON PipelineObjectProperty
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs b/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.DataPipeline.Pipeline.PipelineTagProperty (
+        PipelineTagProperty(..), mkPipelineTagProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PipelineTagProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetag.html>
+    PipelineTagProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetag.html#cfn-datapipeline-pipeline-pipelinetag-key>
+                         key :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetag.html#cfn-datapipeline-pipeline-pipelinetag-value>
+                         value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPipelineTagProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> PipelineTagProperty
+mkPipelineTagProperty key value
+  = PipelineTagProperty
+      {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties PipelineTagProperty where
+  toResourceProperties PipelineTagProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataPipeline::Pipeline.PipelineTag",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON PipelineTagProperty where
+  toJSON PipelineTagProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" PipelineTagProperty where
+  type PropertyType "Key" PipelineTagProperty = Value Prelude.Text
+  set newValue PipelineTagProperty {..}
+    = PipelineTagProperty {key = newValue, ..}
+instance Property "Value" PipelineTagProperty where
+  type PropertyType "Value" PipelineTagProperty = Value Prelude.Text
+  set newValue PipelineTagProperty {..}
+    = PipelineTagProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs-boot b/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataPipeline/Pipeline/PipelineTagProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataPipeline.Pipeline.PipelineTagProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PipelineTagProperty :: Prelude.Type
+instance ToResourceProperties PipelineTagProperty
+instance Prelude.Eq PipelineTagProperty
+instance Prelude.Show PipelineTagProperty
+instance JSON.ToJSON PipelineTagProperty
diff --git a/stratosphere-datapipeline.cabal b/stratosphere-datapipeline.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-datapipeline.cabal
@@ -0,0 +1,79 @@
+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-datapipeline
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS DataPipeline.
+description:    Integration into stratosphere to generate resources and properties for AWS DataPipeline
+category:       AWS, Cloud, DataPipeline
+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.DataPipeline.Pipeline
+      Stratosphere.DataPipeline.Pipeline.FieldProperty
+      Stratosphere.DataPipeline.Pipeline.ParameterAttributeProperty
+      Stratosphere.DataPipeline.Pipeline.ParameterObjectProperty
+      Stratosphere.DataPipeline.Pipeline.ParameterValueProperty
+      Stratosphere.DataPipeline.Pipeline.PipelineObjectProperty
+      Stratosphere.DataPipeline.Pipeline.PipelineTagProperty
+  other-modules:
+      Paths_stratosphere_datapipeline
+  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
