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/CodeBuild/Fleet.hs b/gen/Stratosphere/CodeBuild/Fleet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet.hs
@@ -0,0 +1,135 @@
+module Stratosphere.CodeBuild.Fleet (
+        module Exports, Fleet(..), mkFleet
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.ComputeConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.ProxyConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.ScalingConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.VpcConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Fleet
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html>
+    Fleet {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-basecapacity>
+           baseCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-computeconfiguration>
+           computeConfiguration :: (Prelude.Maybe ComputeConfigurationProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-computetype>
+           computeType :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-environmenttype>
+           environmentType :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-fleetproxyconfiguration>
+           fleetProxyConfiguration :: (Prelude.Maybe ProxyConfigurationProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-fleetservicerole>
+           fleetServiceRole :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-fleetvpcconfig>
+           fleetVpcConfig :: (Prelude.Maybe VpcConfigProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-imageid>
+           imageId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-name>
+           name :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-overflowbehavior>
+           overflowBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-scalingconfiguration>
+           scalingConfiguration :: (Prelude.Maybe ScalingConfigurationInputProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-fleet.html#cfn-codebuild-fleet-tags>
+           tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFleet :: Fleet
+mkFleet
+  = Fleet
+      {haddock_workaround_ = (), baseCapacity = Prelude.Nothing,
+       computeConfiguration = Prelude.Nothing,
+       computeType = Prelude.Nothing, environmentType = Prelude.Nothing,
+       fleetProxyConfiguration = Prelude.Nothing,
+       fleetServiceRole = Prelude.Nothing,
+       fleetVpcConfig = Prelude.Nothing, imageId = Prelude.Nothing,
+       name = Prelude.Nothing, overflowBehavior = Prelude.Nothing,
+       scalingConfiguration = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Fleet where
+  toResourceProperties Fleet {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BaseCapacity" Prelude.<$> baseCapacity,
+                            (JSON..=) "ComputeConfiguration" Prelude.<$> computeConfiguration,
+                            (JSON..=) "ComputeType" Prelude.<$> computeType,
+                            (JSON..=) "EnvironmentType" Prelude.<$> environmentType,
+                            (JSON..=) "FleetProxyConfiguration"
+                              Prelude.<$> fleetProxyConfiguration,
+                            (JSON..=) "FleetServiceRole" Prelude.<$> fleetServiceRole,
+                            (JSON..=) "FleetVpcConfig" Prelude.<$> fleetVpcConfig,
+                            (JSON..=) "ImageId" Prelude.<$> imageId,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "OverflowBehavior" Prelude.<$> overflowBehavior,
+                            (JSON..=) "ScalingConfiguration" Prelude.<$> scalingConfiguration,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON Fleet where
+  toJSON Fleet {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BaseCapacity" Prelude.<$> baseCapacity,
+               (JSON..=) "ComputeConfiguration" Prelude.<$> computeConfiguration,
+               (JSON..=) "ComputeType" Prelude.<$> computeType,
+               (JSON..=) "EnvironmentType" Prelude.<$> environmentType,
+               (JSON..=) "FleetProxyConfiguration"
+                 Prelude.<$> fleetProxyConfiguration,
+               (JSON..=) "FleetServiceRole" Prelude.<$> fleetServiceRole,
+               (JSON..=) "FleetVpcConfig" Prelude.<$> fleetVpcConfig,
+               (JSON..=) "ImageId" Prelude.<$> imageId,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "OverflowBehavior" Prelude.<$> overflowBehavior,
+               (JSON..=) "ScalingConfiguration" Prelude.<$> scalingConfiguration,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "BaseCapacity" Fleet where
+  type PropertyType "BaseCapacity" Fleet = Value Prelude.Integer
+  set newValue Fleet {..}
+    = Fleet {baseCapacity = Prelude.pure newValue, ..}
+instance Property "ComputeConfiguration" Fleet where
+  type PropertyType "ComputeConfiguration" Fleet = ComputeConfigurationProperty
+  set newValue Fleet {..}
+    = Fleet {computeConfiguration = Prelude.pure newValue, ..}
+instance Property "ComputeType" Fleet where
+  type PropertyType "ComputeType" Fleet = Value Prelude.Text
+  set newValue Fleet {..}
+    = Fleet {computeType = Prelude.pure newValue, ..}
+instance Property "EnvironmentType" Fleet where
+  type PropertyType "EnvironmentType" Fleet = Value Prelude.Text
+  set newValue Fleet {..}
+    = Fleet {environmentType = Prelude.pure newValue, ..}
+instance Property "FleetProxyConfiguration" Fleet where
+  type PropertyType "FleetProxyConfiguration" Fleet = ProxyConfigurationProperty
+  set newValue Fleet {..}
+    = Fleet {fleetProxyConfiguration = Prelude.pure newValue, ..}
+instance Property "FleetServiceRole" Fleet where
+  type PropertyType "FleetServiceRole" Fleet = Value Prelude.Text
+  set newValue Fleet {..}
+    = Fleet {fleetServiceRole = Prelude.pure newValue, ..}
+instance Property "FleetVpcConfig" Fleet where
+  type PropertyType "FleetVpcConfig" Fleet = VpcConfigProperty
+  set newValue Fleet {..}
+    = Fleet {fleetVpcConfig = Prelude.pure newValue, ..}
+instance Property "ImageId" Fleet where
+  type PropertyType "ImageId" Fleet = Value Prelude.Text
+  set newValue Fleet {..}
+    = Fleet {imageId = Prelude.pure newValue, ..}
+instance Property "Name" Fleet where
+  type PropertyType "Name" Fleet = Value Prelude.Text
+  set newValue Fleet {..} = Fleet {name = Prelude.pure newValue, ..}
+instance Property "OverflowBehavior" Fleet where
+  type PropertyType "OverflowBehavior" Fleet = Value Prelude.Text
+  set newValue Fleet {..}
+    = Fleet {overflowBehavior = Prelude.pure newValue, ..}
+instance Property "ScalingConfiguration" Fleet where
+  type PropertyType "ScalingConfiguration" Fleet = ScalingConfigurationInputProperty
+  set newValue Fleet {..}
+    = Fleet {scalingConfiguration = Prelude.pure newValue, ..}
+instance Property "Tags" Fleet where
+  type PropertyType "Tags" Fleet = [Tag]
+  set newValue Fleet {..} = Fleet {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.CodeBuild.Fleet.ComputeConfigurationProperty (
+        ComputeConfigurationProperty(..), mkComputeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComputeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html>
+    ComputeConfigurationProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html#cfn-codebuild-fleet-computeconfiguration-disk>
+                                  disk :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html#cfn-codebuild-fleet-computeconfiguration-instancetype>
+                                  instanceType :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html#cfn-codebuild-fleet-computeconfiguration-machinetype>
+                                  machineType :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html#cfn-codebuild-fleet-computeconfiguration-memory>
+                                  memory :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-computeconfiguration.html#cfn-codebuild-fleet-computeconfiguration-vcpu>
+                                  vCpu :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComputeConfigurationProperty :: ComputeConfigurationProperty
+mkComputeConfigurationProperty
+  = ComputeConfigurationProperty
+      {haddock_workaround_ = (), disk = Prelude.Nothing,
+       instanceType = Prelude.Nothing, machineType = Prelude.Nothing,
+       memory = Prelude.Nothing, vCpu = Prelude.Nothing}
+instance ToResourceProperties ComputeConfigurationProperty where
+  toResourceProperties ComputeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.ComputeConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "disk" Prelude.<$> disk,
+                            (JSON..=) "instanceType" Prelude.<$> instanceType,
+                            (JSON..=) "machineType" Prelude.<$> machineType,
+                            (JSON..=) "memory" Prelude.<$> memory,
+                            (JSON..=) "vCpu" Prelude.<$> vCpu])}
+instance JSON.ToJSON ComputeConfigurationProperty where
+  toJSON ComputeConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "disk" Prelude.<$> disk,
+               (JSON..=) "instanceType" Prelude.<$> instanceType,
+               (JSON..=) "machineType" Prelude.<$> machineType,
+               (JSON..=) "memory" Prelude.<$> memory,
+               (JSON..=) "vCpu" Prelude.<$> vCpu]))
+instance Property "disk" ComputeConfigurationProperty where
+  type PropertyType "disk" ComputeConfigurationProperty = Value Prelude.Integer
+  set newValue ComputeConfigurationProperty {..}
+    = ComputeConfigurationProperty {disk = Prelude.pure newValue, ..}
+instance Property "instanceType" ComputeConfigurationProperty where
+  type PropertyType "instanceType" ComputeConfigurationProperty = Value Prelude.Text
+  set newValue ComputeConfigurationProperty {..}
+    = ComputeConfigurationProperty
+        {instanceType = Prelude.pure newValue, ..}
+instance Property "machineType" ComputeConfigurationProperty where
+  type PropertyType "machineType" ComputeConfigurationProperty = Value Prelude.Text
+  set newValue ComputeConfigurationProperty {..}
+    = ComputeConfigurationProperty
+        {machineType = Prelude.pure newValue, ..}
+instance Property "memory" ComputeConfigurationProperty where
+  type PropertyType "memory" ComputeConfigurationProperty = Value Prelude.Integer
+  set newValue ComputeConfigurationProperty {..}
+    = ComputeConfigurationProperty {memory = Prelude.pure newValue, ..}
+instance Property "vCpu" ComputeConfigurationProperty where
+  type PropertyType "vCpu" ComputeConfigurationProperty = Value Prelude.Integer
+  set newValue ComputeConfigurationProperty {..}
+    = ComputeConfigurationProperty {vCpu = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ComputeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.ComputeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComputeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ComputeConfigurationProperty
+instance Prelude.Eq ComputeConfigurationProperty
+instance Prelude.Show ComputeConfigurationProperty
+instance JSON.ToJSON ComputeConfigurationProperty
diff --git a/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeBuild.Fleet.FleetProxyRuleProperty (
+        FleetProxyRuleProperty(..), mkFleetProxyRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FleetProxyRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-fleetproxyrule.html>
+    FleetProxyRuleProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-fleetproxyrule.html#cfn-codebuild-fleet-fleetproxyrule-effect>
+                            effect :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-fleetproxyrule.html#cfn-codebuild-fleet-fleetproxyrule-entities>
+                            entities :: (Prelude.Maybe (ValueList Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-fleetproxyrule.html#cfn-codebuild-fleet-fleetproxyrule-type>
+                            type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFleetProxyRuleProperty :: FleetProxyRuleProperty
+mkFleetProxyRuleProperty
+  = FleetProxyRuleProperty
+      {haddock_workaround_ = (), effect = Prelude.Nothing,
+       entities = Prelude.Nothing, type' = Prelude.Nothing}
+instance ToResourceProperties FleetProxyRuleProperty where
+  toResourceProperties FleetProxyRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.FleetProxyRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Effect" Prelude.<$> effect,
+                            (JSON..=) "Entities" Prelude.<$> entities,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON FleetProxyRuleProperty where
+  toJSON FleetProxyRuleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Effect" Prelude.<$> effect,
+               (JSON..=) "Entities" Prelude.<$> entities,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "Effect" FleetProxyRuleProperty where
+  type PropertyType "Effect" FleetProxyRuleProperty = Value Prelude.Text
+  set newValue FleetProxyRuleProperty {..}
+    = FleetProxyRuleProperty {effect = Prelude.pure newValue, ..}
+instance Property "Entities" FleetProxyRuleProperty where
+  type PropertyType "Entities" FleetProxyRuleProperty = ValueList Prelude.Text
+  set newValue FleetProxyRuleProperty {..}
+    = FleetProxyRuleProperty {entities = Prelude.pure newValue, ..}
+instance Property "Type" FleetProxyRuleProperty where
+  type PropertyType "Type" FleetProxyRuleProperty = Value Prelude.Text
+  set newValue FleetProxyRuleProperty {..}
+    = FleetProxyRuleProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/FleetProxyRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.FleetProxyRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FleetProxyRuleProperty :: Prelude.Type
+instance ToResourceProperties FleetProxyRuleProperty
+instance Prelude.Eq FleetProxyRuleProperty
+instance Prelude.Show FleetProxyRuleProperty
+instance JSON.ToJSON FleetProxyRuleProperty
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodeBuild.Fleet.ProxyConfigurationProperty (
+        module Exports, ProxyConfigurationProperty(..),
+        mkProxyConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.FleetProxyRuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProxyConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-proxyconfiguration.html>
+    ProxyConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-proxyconfiguration.html#cfn-codebuild-fleet-proxyconfiguration-defaultbehavior>
+                                defaultBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-proxyconfiguration.html#cfn-codebuild-fleet-proxyconfiguration-orderedproxyrules>
+                                orderedProxyRules :: (Prelude.Maybe [FleetProxyRuleProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProxyConfigurationProperty :: ProxyConfigurationProperty
+mkProxyConfigurationProperty
+  = ProxyConfigurationProperty
+      {haddock_workaround_ = (), defaultBehavior = Prelude.Nothing,
+       orderedProxyRules = Prelude.Nothing}
+instance ToResourceProperties ProxyConfigurationProperty where
+  toResourceProperties ProxyConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.ProxyConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DefaultBehavior" Prelude.<$> defaultBehavior,
+                            (JSON..=) "OrderedProxyRules" Prelude.<$> orderedProxyRules])}
+instance JSON.ToJSON ProxyConfigurationProperty where
+  toJSON ProxyConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DefaultBehavior" Prelude.<$> defaultBehavior,
+               (JSON..=) "OrderedProxyRules" Prelude.<$> orderedProxyRules]))
+instance Property "DefaultBehavior" ProxyConfigurationProperty where
+  type PropertyType "DefaultBehavior" ProxyConfigurationProperty = Value Prelude.Text
+  set newValue ProxyConfigurationProperty {..}
+    = ProxyConfigurationProperty
+        {defaultBehavior = Prelude.pure newValue, ..}
+instance Property "OrderedProxyRules" ProxyConfigurationProperty where
+  type PropertyType "OrderedProxyRules" ProxyConfigurationProperty = [FleetProxyRuleProperty]
+  set newValue ProxyConfigurationProperty {..}
+    = ProxyConfigurationProperty
+        {orderedProxyRules = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ProxyConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.ProxyConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProxyConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ProxyConfigurationProperty
+instance Prelude.Eq ProxyConfigurationProperty
+instance Prelude.Show ProxyConfigurationProperty
+instance JSON.ToJSON ProxyConfigurationProperty
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.CodeBuild.Fleet.ScalingConfigurationInputProperty (
+        module Exports, ScalingConfigurationInputProperty(..),
+        mkScalingConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Fleet.TargetTrackingScalingConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalingConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-scalingconfigurationinput.html>
+    ScalingConfigurationInputProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-scalingconfigurationinput.html#cfn-codebuild-fleet-scalingconfigurationinput-maxcapacity>
+                                       maxCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-scalingconfigurationinput.html#cfn-codebuild-fleet-scalingconfigurationinput-scalingtype>
+                                       scalingType :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-scalingconfigurationinput.html#cfn-codebuild-fleet-scalingconfigurationinput-targettrackingscalingconfigs>
+                                       targetTrackingScalingConfigs :: (Prelude.Maybe [TargetTrackingScalingConfigurationProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalingConfigurationInputProperty ::
+  ScalingConfigurationInputProperty
+mkScalingConfigurationInputProperty
+  = ScalingConfigurationInputProperty
+      {haddock_workaround_ = (), maxCapacity = Prelude.Nothing,
+       scalingType = Prelude.Nothing,
+       targetTrackingScalingConfigs = Prelude.Nothing}
+instance ToResourceProperties ScalingConfigurationInputProperty where
+  toResourceProperties ScalingConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.ScalingConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MaxCapacity" Prelude.<$> maxCapacity,
+                            (JSON..=) "ScalingType" Prelude.<$> scalingType,
+                            (JSON..=) "TargetTrackingScalingConfigs"
+                              Prelude.<$> targetTrackingScalingConfigs])}
+instance JSON.ToJSON ScalingConfigurationInputProperty where
+  toJSON ScalingConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MaxCapacity" Prelude.<$> maxCapacity,
+               (JSON..=) "ScalingType" Prelude.<$> scalingType,
+               (JSON..=) "TargetTrackingScalingConfigs"
+                 Prelude.<$> targetTrackingScalingConfigs]))
+instance Property "MaxCapacity" ScalingConfigurationInputProperty where
+  type PropertyType "MaxCapacity" ScalingConfigurationInputProperty = Value Prelude.Integer
+  set newValue ScalingConfigurationInputProperty {..}
+    = ScalingConfigurationInputProperty
+        {maxCapacity = Prelude.pure newValue, ..}
+instance Property "ScalingType" ScalingConfigurationInputProperty where
+  type PropertyType "ScalingType" ScalingConfigurationInputProperty = Value Prelude.Text
+  set newValue ScalingConfigurationInputProperty {..}
+    = ScalingConfigurationInputProperty
+        {scalingType = Prelude.pure newValue, ..}
+instance Property "TargetTrackingScalingConfigs" ScalingConfigurationInputProperty where
+  type PropertyType "TargetTrackingScalingConfigs" ScalingConfigurationInputProperty = [TargetTrackingScalingConfigurationProperty]
+  set newValue ScalingConfigurationInputProperty {..}
+    = ScalingConfigurationInputProperty
+        {targetTrackingScalingConfigs = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/ScalingConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.ScalingConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScalingConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties ScalingConfigurationInputProperty
+instance Prelude.Eq ScalingConfigurationInputProperty
+instance Prelude.Show ScalingConfigurationInputProperty
+instance JSON.ToJSON ScalingConfigurationInputProperty
diff --git a/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.CodeBuild.Fleet.TargetTrackingScalingConfigurationProperty (
+        TargetTrackingScalingConfigurationProperty(..),
+        mkTargetTrackingScalingConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingScalingConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-targettrackingscalingconfiguration.html>
+    TargetTrackingScalingConfigurationProperty {haddock_workaround_ :: (),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-targettrackingscalingconfiguration.html#cfn-codebuild-fleet-targettrackingscalingconfiguration-metrictype>
+                                                metricType :: (Prelude.Maybe (Value Prelude.Text)),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-targettrackingscalingconfiguration.html#cfn-codebuild-fleet-targettrackingscalingconfiguration-targetvalue>
+                                                targetValue :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingScalingConfigurationProperty ::
+  TargetTrackingScalingConfigurationProperty
+mkTargetTrackingScalingConfigurationProperty
+  = TargetTrackingScalingConfigurationProperty
+      {haddock_workaround_ = (), metricType = Prelude.Nothing,
+       targetValue = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingScalingConfigurationProperty where
+  toResourceProperties
+    TargetTrackingScalingConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.TargetTrackingScalingConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MetricType" Prelude.<$> metricType,
+                            (JSON..=) "TargetValue" Prelude.<$> targetValue])}
+instance JSON.ToJSON TargetTrackingScalingConfigurationProperty where
+  toJSON TargetTrackingScalingConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MetricType" Prelude.<$> metricType,
+               (JSON..=) "TargetValue" Prelude.<$> targetValue]))
+instance Property "MetricType" TargetTrackingScalingConfigurationProperty where
+  type PropertyType "MetricType" TargetTrackingScalingConfigurationProperty = Value Prelude.Text
+  set newValue TargetTrackingScalingConfigurationProperty {..}
+    = TargetTrackingScalingConfigurationProperty
+        {metricType = Prelude.pure newValue, ..}
+instance Property "TargetValue" TargetTrackingScalingConfigurationProperty where
+  type PropertyType "TargetValue" TargetTrackingScalingConfigurationProperty = Value Prelude.Double
+  set newValue TargetTrackingScalingConfigurationProperty {..}
+    = TargetTrackingScalingConfigurationProperty
+        {targetValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/TargetTrackingScalingConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.TargetTrackingScalingConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingScalingConfigurationProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingScalingConfigurationProperty
+instance Prelude.Eq TargetTrackingScalingConfigurationProperty
+instance Prelude.Show TargetTrackingScalingConfigurationProperty
+instance JSON.ToJSON TargetTrackingScalingConfigurationProperty
diff --git a/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs b/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeBuild.Fleet.VpcConfigProperty (
+        VpcConfigProperty(..), mkVpcConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data VpcConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-vpcconfig.html>
+    VpcConfigProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-vpcconfig.html#cfn-codebuild-fleet-vpcconfig-securitygroupids>
+                       securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-vpcconfig.html#cfn-codebuild-fleet-vpcconfig-subnets>
+                       subnets :: (Prelude.Maybe (ValueList Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-fleet-vpcconfig.html#cfn-codebuild-fleet-vpcconfig-vpcid>
+                       vpcId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVpcConfigProperty :: VpcConfigProperty
+mkVpcConfigProperty
+  = VpcConfigProperty
+      {haddock_workaround_ = (), securityGroupIds = Prelude.Nothing,
+       subnets = Prelude.Nothing, vpcId = Prelude.Nothing}
+instance ToResourceProperties VpcConfigProperty where
+  toResourceProperties VpcConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Fleet.VpcConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+                            (JSON..=) "Subnets" Prelude.<$> subnets,
+                            (JSON..=) "VpcId" Prelude.<$> vpcId])}
+instance JSON.ToJSON VpcConfigProperty where
+  toJSON VpcConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+               (JSON..=) "Subnets" Prelude.<$> subnets,
+               (JSON..=) "VpcId" Prelude.<$> vpcId]))
+instance Property "SecurityGroupIds" VpcConfigProperty where
+  type PropertyType "SecurityGroupIds" VpcConfigProperty = ValueList Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {securityGroupIds = Prelude.pure newValue, ..}
+instance Property "Subnets" VpcConfigProperty where
+  type PropertyType "Subnets" VpcConfigProperty = ValueList Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {subnets = Prelude.pure newValue, ..}
+instance Property "VpcId" VpcConfigProperty where
+  type PropertyType "VpcId" VpcConfigProperty = Value Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {vpcId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Fleet/VpcConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Fleet.VpcConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data VpcConfigProperty :: Prelude.Type
+instance ToResourceProperties VpcConfigProperty
+instance Prelude.Eq VpcConfigProperty
+instance Prelude.Show VpcConfigProperty
+instance JSON.ToJSON VpcConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project.hs b/gen/Stratosphere/CodeBuild/Project.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project.hs
@@ -0,0 +1,254 @@
+module Stratosphere.CodeBuild.Project (
+        module Exports, Project(..), mkProject
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ArtifactsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.EnvironmentProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.LogsConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectBuildBatchConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectCacheProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectFileSystemLocationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectSourceVersionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectTriggersProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.SourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.VpcConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Project
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html>
+    Project {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-artifacts>
+             artifacts :: ArtifactsProperty,
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-autoretrylimit>
+             autoRetryLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-badgeenabled>
+             badgeEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-buildbatchconfig>
+             buildBatchConfig :: (Prelude.Maybe ProjectBuildBatchConfigProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-cache>
+             cache :: (Prelude.Maybe ProjectCacheProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-concurrentbuildlimit>
+             concurrentBuildLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-description>
+             description :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-encryptionkey>
+             encryptionKey :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-environment>
+             environment :: EnvironmentProperty,
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-filesystemlocations>
+             fileSystemLocations :: (Prelude.Maybe [ProjectFileSystemLocationProperty]),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-logsconfig>
+             logsConfig :: (Prelude.Maybe LogsConfigProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-name>
+             name :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-queuedtimeoutinminutes>
+             queuedTimeoutInMinutes :: (Prelude.Maybe (Value Prelude.Integer)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-resourceaccessrole>
+             resourceAccessRole :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-secondaryartifacts>
+             secondaryArtifacts :: (Prelude.Maybe [ArtifactsProperty]),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-secondarysourceversions>
+             secondarySourceVersions :: (Prelude.Maybe [ProjectSourceVersionProperty]),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-secondarysources>
+             secondarySources :: (Prelude.Maybe [SourceProperty]),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-servicerole>
+             serviceRole :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-source>
+             source :: SourceProperty,
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-sourceversion>
+             sourceVersion :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-tags>
+             tags :: (Prelude.Maybe [Tag]),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-timeoutinminutes>
+             timeoutInMinutes :: (Prelude.Maybe (Value Prelude.Integer)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-triggers>
+             triggers :: (Prelude.Maybe ProjectTriggersProperty),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-visibility>
+             visibility :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-vpcconfig>
+             vpcConfig :: (Prelude.Maybe VpcConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProject ::
+  ArtifactsProperty
+  -> EnvironmentProperty
+     -> Value Prelude.Text -> SourceProperty -> Project
+mkProject artifacts environment serviceRole source
+  = Project
+      {haddock_workaround_ = (), artifacts = artifacts,
+       environment = environment, serviceRole = serviceRole,
+       source = source, autoRetryLimit = Prelude.Nothing,
+       badgeEnabled = Prelude.Nothing, buildBatchConfig = Prelude.Nothing,
+       cache = Prelude.Nothing, concurrentBuildLimit = Prelude.Nothing,
+       description = Prelude.Nothing, encryptionKey = Prelude.Nothing,
+       fileSystemLocations = Prelude.Nothing,
+       logsConfig = Prelude.Nothing, name = Prelude.Nothing,
+       queuedTimeoutInMinutes = Prelude.Nothing,
+       resourceAccessRole = Prelude.Nothing,
+       secondaryArtifacts = Prelude.Nothing,
+       secondarySourceVersions = Prelude.Nothing,
+       secondarySources = Prelude.Nothing,
+       sourceVersion = Prelude.Nothing, tags = Prelude.Nothing,
+       timeoutInMinutes = Prelude.Nothing, triggers = Prelude.Nothing,
+       visibility = Prelude.Nothing, vpcConfig = Prelude.Nothing}
+instance ToResourceProperties Project where
+  toResourceProperties Project {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Artifacts" JSON..= artifacts, "Environment" JSON..= environment,
+                            "ServiceRole" JSON..= serviceRole, "Source" JSON..= source]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoRetryLimit" Prelude.<$> autoRetryLimit,
+                               (JSON..=) "BadgeEnabled" Prelude.<$> badgeEnabled,
+                               (JSON..=) "BuildBatchConfig" Prelude.<$> buildBatchConfig,
+                               (JSON..=) "Cache" Prelude.<$> cache,
+                               (JSON..=) "ConcurrentBuildLimit" Prelude.<$> concurrentBuildLimit,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                               (JSON..=) "FileSystemLocations" Prelude.<$> fileSystemLocations,
+                               (JSON..=) "LogsConfig" Prelude.<$> logsConfig,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "QueuedTimeoutInMinutes"
+                                 Prelude.<$> queuedTimeoutInMinutes,
+                               (JSON..=) "ResourceAccessRole" Prelude.<$> resourceAccessRole,
+                               (JSON..=) "SecondaryArtifacts" Prelude.<$> secondaryArtifacts,
+                               (JSON..=) "SecondarySourceVersions"
+                                 Prelude.<$> secondarySourceVersions,
+                               (JSON..=) "SecondarySources" Prelude.<$> secondarySources,
+                               (JSON..=) "SourceVersion" Prelude.<$> sourceVersion,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "TimeoutInMinutes" Prelude.<$> timeoutInMinutes,
+                               (JSON..=) "Triggers" Prelude.<$> triggers,
+                               (JSON..=) "Visibility" Prelude.<$> visibility,
+                               (JSON..=) "VpcConfig" Prelude.<$> vpcConfig]))}
+instance JSON.ToJSON Project where
+  toJSON Project {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Artifacts" JSON..= artifacts, "Environment" JSON..= environment,
+               "ServiceRole" JSON..= serviceRole, "Source" JSON..= source]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoRetryLimit" Prelude.<$> autoRetryLimit,
+                  (JSON..=) "BadgeEnabled" Prelude.<$> badgeEnabled,
+                  (JSON..=) "BuildBatchConfig" Prelude.<$> buildBatchConfig,
+                  (JSON..=) "Cache" Prelude.<$> cache,
+                  (JSON..=) "ConcurrentBuildLimit" Prelude.<$> concurrentBuildLimit,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                  (JSON..=) "FileSystemLocations" Prelude.<$> fileSystemLocations,
+                  (JSON..=) "LogsConfig" Prelude.<$> logsConfig,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "QueuedTimeoutInMinutes"
+                    Prelude.<$> queuedTimeoutInMinutes,
+                  (JSON..=) "ResourceAccessRole" Prelude.<$> resourceAccessRole,
+                  (JSON..=) "SecondaryArtifacts" Prelude.<$> secondaryArtifacts,
+                  (JSON..=) "SecondarySourceVersions"
+                    Prelude.<$> secondarySourceVersions,
+                  (JSON..=) "SecondarySources" Prelude.<$> secondarySources,
+                  (JSON..=) "SourceVersion" Prelude.<$> sourceVersion,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "TimeoutInMinutes" Prelude.<$> timeoutInMinutes,
+                  (JSON..=) "Triggers" Prelude.<$> triggers,
+                  (JSON..=) "Visibility" Prelude.<$> visibility,
+                  (JSON..=) "VpcConfig" Prelude.<$> vpcConfig])))
+instance Property "Artifacts" Project where
+  type PropertyType "Artifacts" Project = ArtifactsProperty
+  set newValue Project {..} = Project {artifacts = newValue, ..}
+instance Property "AutoRetryLimit" Project where
+  type PropertyType "AutoRetryLimit" Project = Value Prelude.Integer
+  set newValue Project {..}
+    = Project {autoRetryLimit = Prelude.pure newValue, ..}
+instance Property "BadgeEnabled" Project where
+  type PropertyType "BadgeEnabled" Project = Value Prelude.Bool
+  set newValue Project {..}
+    = Project {badgeEnabled = Prelude.pure newValue, ..}
+instance Property "BuildBatchConfig" Project where
+  type PropertyType "BuildBatchConfig" Project = ProjectBuildBatchConfigProperty
+  set newValue Project {..}
+    = Project {buildBatchConfig = Prelude.pure newValue, ..}
+instance Property "Cache" Project where
+  type PropertyType "Cache" Project = ProjectCacheProperty
+  set newValue Project {..}
+    = Project {cache = Prelude.pure newValue, ..}
+instance Property "ConcurrentBuildLimit" Project where
+  type PropertyType "ConcurrentBuildLimit" Project = Value Prelude.Integer
+  set newValue Project {..}
+    = Project {concurrentBuildLimit = Prelude.pure newValue, ..}
+instance Property "Description" Project where
+  type PropertyType "Description" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {description = Prelude.pure newValue, ..}
+instance Property "EncryptionKey" Project where
+  type PropertyType "EncryptionKey" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {encryptionKey = Prelude.pure newValue, ..}
+instance Property "Environment" Project where
+  type PropertyType "Environment" Project = EnvironmentProperty
+  set newValue Project {..} = Project {environment = newValue, ..}
+instance Property "FileSystemLocations" Project where
+  type PropertyType "FileSystemLocations" Project = [ProjectFileSystemLocationProperty]
+  set newValue Project {..}
+    = Project {fileSystemLocations = Prelude.pure newValue, ..}
+instance Property "LogsConfig" Project where
+  type PropertyType "LogsConfig" Project = LogsConfigProperty
+  set newValue Project {..}
+    = Project {logsConfig = Prelude.pure newValue, ..}
+instance Property "Name" Project where
+  type PropertyType "Name" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {name = Prelude.pure newValue, ..}
+instance Property "QueuedTimeoutInMinutes" Project where
+  type PropertyType "QueuedTimeoutInMinutes" Project = Value Prelude.Integer
+  set newValue Project {..}
+    = Project {queuedTimeoutInMinutes = Prelude.pure newValue, ..}
+instance Property "ResourceAccessRole" Project where
+  type PropertyType "ResourceAccessRole" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {resourceAccessRole = Prelude.pure newValue, ..}
+instance Property "SecondaryArtifacts" Project where
+  type PropertyType "SecondaryArtifacts" Project = [ArtifactsProperty]
+  set newValue Project {..}
+    = Project {secondaryArtifacts = Prelude.pure newValue, ..}
+instance Property "SecondarySourceVersions" Project where
+  type PropertyType "SecondarySourceVersions" Project = [ProjectSourceVersionProperty]
+  set newValue Project {..}
+    = Project {secondarySourceVersions = Prelude.pure newValue, ..}
+instance Property "SecondarySources" Project where
+  type PropertyType "SecondarySources" Project = [SourceProperty]
+  set newValue Project {..}
+    = Project {secondarySources = Prelude.pure newValue, ..}
+instance Property "ServiceRole" Project where
+  type PropertyType "ServiceRole" Project = Value Prelude.Text
+  set newValue Project {..} = Project {serviceRole = newValue, ..}
+instance Property "Source" Project where
+  type PropertyType "Source" Project = SourceProperty
+  set newValue Project {..} = Project {source = newValue, ..}
+instance Property "SourceVersion" Project where
+  type PropertyType "SourceVersion" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {sourceVersion = Prelude.pure newValue, ..}
+instance Property "Tags" Project where
+  type PropertyType "Tags" Project = [Tag]
+  set newValue Project {..}
+    = Project {tags = Prelude.pure newValue, ..}
+instance Property "TimeoutInMinutes" Project where
+  type PropertyType "TimeoutInMinutes" Project = Value Prelude.Integer
+  set newValue Project {..}
+    = Project {timeoutInMinutes = Prelude.pure newValue, ..}
+instance Property "Triggers" Project where
+  type PropertyType "Triggers" Project = ProjectTriggersProperty
+  set newValue Project {..}
+    = Project {triggers = Prelude.pure newValue, ..}
+instance Property "Visibility" Project where
+  type PropertyType "Visibility" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {visibility = Prelude.pure newValue, ..}
+instance Property "VpcConfig" Project where
+  type PropertyType "VpcConfig" Project = VpcConfigProperty
+  set newValue Project {..}
+    = Project {vpcConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs b/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs
@@ -0,0 +1,110 @@
+module Stratosphere.CodeBuild.Project.ArtifactsProperty (
+        ArtifactsProperty(..), mkArtifactsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ArtifactsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html>
+    ArtifactsProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-artifactidentifier>
+                       artifactIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-encryptiondisabled>
+                       encryptionDisabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-location>
+                       location :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-name>
+                       name :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-namespacetype>
+                       namespaceType :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-overrideartifactname>
+                       overrideArtifactName :: (Prelude.Maybe (Value Prelude.Bool)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-packaging>
+                       packaging :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-path>
+                       path :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-type>
+                       type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArtifactsProperty :: Value Prelude.Text -> ArtifactsProperty
+mkArtifactsProperty type'
+  = ArtifactsProperty
+      {haddock_workaround_ = (), type' = type',
+       artifactIdentifier = Prelude.Nothing,
+       encryptionDisabled = Prelude.Nothing, location = Prelude.Nothing,
+       name = Prelude.Nothing, namespaceType = Prelude.Nothing,
+       overrideArtifactName = Prelude.Nothing,
+       packaging = Prelude.Nothing, path = Prelude.Nothing}
+instance ToResourceProperties ArtifactsProperty where
+  toResourceProperties ArtifactsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.Artifacts",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "ArtifactIdentifier" Prelude.<$> artifactIdentifier,
+                               (JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                               (JSON..=) "Location" Prelude.<$> location,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "NamespaceType" Prelude.<$> namespaceType,
+                               (JSON..=) "OverrideArtifactName" Prelude.<$> overrideArtifactName,
+                               (JSON..=) "Packaging" Prelude.<$> packaging,
+                               (JSON..=) "Path" Prelude.<$> path]))}
+instance JSON.ToJSON ArtifactsProperty where
+  toJSON ArtifactsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "ArtifactIdentifier" Prelude.<$> artifactIdentifier,
+                  (JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                  (JSON..=) "Location" Prelude.<$> location,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "NamespaceType" Prelude.<$> namespaceType,
+                  (JSON..=) "OverrideArtifactName" Prelude.<$> overrideArtifactName,
+                  (JSON..=) "Packaging" Prelude.<$> packaging,
+                  (JSON..=) "Path" Prelude.<$> path])))
+instance Property "ArtifactIdentifier" ArtifactsProperty where
+  type PropertyType "ArtifactIdentifier" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty
+        {artifactIdentifier = Prelude.pure newValue, ..}
+instance Property "EncryptionDisabled" ArtifactsProperty where
+  type PropertyType "EncryptionDisabled" ArtifactsProperty = Value Prelude.Bool
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty
+        {encryptionDisabled = Prelude.pure newValue, ..}
+instance Property "Location" ArtifactsProperty where
+  type PropertyType "Location" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {location = Prelude.pure newValue, ..}
+instance Property "Name" ArtifactsProperty where
+  type PropertyType "Name" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {name = Prelude.pure newValue, ..}
+instance Property "NamespaceType" ArtifactsProperty where
+  type PropertyType "NamespaceType" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {namespaceType = Prelude.pure newValue, ..}
+instance Property "OverrideArtifactName" ArtifactsProperty where
+  type PropertyType "OverrideArtifactName" ArtifactsProperty = Value Prelude.Bool
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty
+        {overrideArtifactName = Prelude.pure newValue, ..}
+instance Property "Packaging" ArtifactsProperty where
+  type PropertyType "Packaging" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {packaging = Prelude.pure newValue, ..}
+instance Property "Path" ArtifactsProperty where
+  type PropertyType "Path" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {path = Prelude.pure newValue, ..}
+instance Property "Type" ArtifactsProperty where
+  type PropertyType "Type" ArtifactsProperty = Value Prelude.Text
+  set newValue ArtifactsProperty {..}
+    = ArtifactsProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ArtifactsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ArtifactsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ArtifactsProperty :: Prelude.Type
+instance ToResourceProperties ArtifactsProperty
+instance Prelude.Eq ArtifactsProperty
+instance Prelude.Show ArtifactsProperty
+instance JSON.ToJSON ArtifactsProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs b/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodeBuild.Project.BatchRestrictionsProperty (
+        BatchRestrictionsProperty(..), mkBatchRestrictionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BatchRestrictionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-batchrestrictions.html>
+    BatchRestrictionsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-batchrestrictions.html#cfn-codebuild-project-batchrestrictions-computetypesallowed>
+                               computeTypesAllowed :: (Prelude.Maybe (ValueList Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-batchrestrictions.html#cfn-codebuild-project-batchrestrictions-maximumbuildsallowed>
+                               maximumBuildsAllowed :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBatchRestrictionsProperty :: BatchRestrictionsProperty
+mkBatchRestrictionsProperty
+  = BatchRestrictionsProperty
+      {haddock_workaround_ = (), computeTypesAllowed = Prelude.Nothing,
+       maximumBuildsAllowed = Prelude.Nothing}
+instance ToResourceProperties BatchRestrictionsProperty where
+  toResourceProperties BatchRestrictionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.BatchRestrictions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ComputeTypesAllowed" Prelude.<$> computeTypesAllowed,
+                            (JSON..=) "MaximumBuildsAllowed"
+                              Prelude.<$> maximumBuildsAllowed])}
+instance JSON.ToJSON BatchRestrictionsProperty where
+  toJSON BatchRestrictionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ComputeTypesAllowed" Prelude.<$> computeTypesAllowed,
+               (JSON..=) "MaximumBuildsAllowed"
+                 Prelude.<$> maximumBuildsAllowed]))
+instance Property "ComputeTypesAllowed" BatchRestrictionsProperty where
+  type PropertyType "ComputeTypesAllowed" BatchRestrictionsProperty = ValueList Prelude.Text
+  set newValue BatchRestrictionsProperty {..}
+    = BatchRestrictionsProperty
+        {computeTypesAllowed = Prelude.pure newValue, ..}
+instance Property "MaximumBuildsAllowed" BatchRestrictionsProperty where
+  type PropertyType "MaximumBuildsAllowed" BatchRestrictionsProperty = Value Prelude.Integer
+  set newValue BatchRestrictionsProperty {..}
+    = BatchRestrictionsProperty
+        {maximumBuildsAllowed = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/BatchRestrictionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.BatchRestrictionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BatchRestrictionsProperty :: Prelude.Type
+instance ToResourceProperties BatchRestrictionsProperty
+instance Prelude.Eq BatchRestrictionsProperty
+instance Prelude.Show BatchRestrictionsProperty
+instance JSON.ToJSON BatchRestrictionsProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.CodeBuild.Project.BuildStatusConfigProperty (
+        BuildStatusConfigProperty(..), mkBuildStatusConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BuildStatusConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html>
+    BuildStatusConfigProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html#cfn-codebuild-project-buildstatusconfig-context>
+                               context :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html#cfn-codebuild-project-buildstatusconfig-targeturl>
+                               targetUrl :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBuildStatusConfigProperty :: BuildStatusConfigProperty
+mkBuildStatusConfigProperty
+  = BuildStatusConfigProperty
+      {haddock_workaround_ = (), context = Prelude.Nothing,
+       targetUrl = Prelude.Nothing}
+instance ToResourceProperties BuildStatusConfigProperty where
+  toResourceProperties BuildStatusConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.BuildStatusConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Context" Prelude.<$> context,
+                            (JSON..=) "TargetUrl" Prelude.<$> targetUrl])}
+instance JSON.ToJSON BuildStatusConfigProperty where
+  toJSON BuildStatusConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Context" Prelude.<$> context,
+               (JSON..=) "TargetUrl" Prelude.<$> targetUrl]))
+instance Property "Context" BuildStatusConfigProperty where
+  type PropertyType "Context" BuildStatusConfigProperty = Value Prelude.Text
+  set newValue BuildStatusConfigProperty {..}
+    = BuildStatusConfigProperty {context = Prelude.pure newValue, ..}
+instance Property "TargetUrl" BuildStatusConfigProperty where
+  type PropertyType "TargetUrl" BuildStatusConfigProperty = Value Prelude.Text
+  set newValue BuildStatusConfigProperty {..}
+    = BuildStatusConfigProperty {targetUrl = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/BuildStatusConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.BuildStatusConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BuildStatusConfigProperty :: Prelude.Type
+instance ToResourceProperties BuildStatusConfigProperty
+instance Prelude.Eq BuildStatusConfigProperty
+instance Prelude.Show BuildStatusConfigProperty
+instance JSON.ToJSON BuildStatusConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodeBuild.Project.CloudWatchLogsConfigProperty (
+        CloudWatchLogsConfigProperty(..), mkCloudWatchLogsConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CloudWatchLogsConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html>
+    CloudWatchLogsConfigProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html#cfn-codebuild-project-cloudwatchlogsconfig-groupname>
+                                  groupName :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html#cfn-codebuild-project-cloudwatchlogsconfig-status>
+                                  status :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html#cfn-codebuild-project-cloudwatchlogsconfig-streamname>
+                                  streamName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCloudWatchLogsConfigProperty ::
+  Value Prelude.Text -> CloudWatchLogsConfigProperty
+mkCloudWatchLogsConfigProperty status
+  = CloudWatchLogsConfigProperty
+      {haddock_workaround_ = (), status = status,
+       groupName = Prelude.Nothing, streamName = Prelude.Nothing}
+instance ToResourceProperties CloudWatchLogsConfigProperty where
+  toResourceProperties CloudWatchLogsConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.CloudWatchLogsConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Status" JSON..= status]
+                           (Prelude.catMaybes
+                              [(JSON..=) "GroupName" Prelude.<$> groupName,
+                               (JSON..=) "StreamName" Prelude.<$> streamName]))}
+instance JSON.ToJSON CloudWatchLogsConfigProperty where
+  toJSON CloudWatchLogsConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Status" JSON..= status]
+              (Prelude.catMaybes
+                 [(JSON..=) "GroupName" Prelude.<$> groupName,
+                  (JSON..=) "StreamName" Prelude.<$> streamName])))
+instance Property "GroupName" CloudWatchLogsConfigProperty where
+  type PropertyType "GroupName" CloudWatchLogsConfigProperty = Value Prelude.Text
+  set newValue CloudWatchLogsConfigProperty {..}
+    = CloudWatchLogsConfigProperty
+        {groupName = Prelude.pure newValue, ..}
+instance Property "Status" CloudWatchLogsConfigProperty where
+  type PropertyType "Status" CloudWatchLogsConfigProperty = Value Prelude.Text
+  set newValue CloudWatchLogsConfigProperty {..}
+    = CloudWatchLogsConfigProperty {status = newValue, ..}
+instance Property "StreamName" CloudWatchLogsConfigProperty where
+  type PropertyType "StreamName" CloudWatchLogsConfigProperty = Value Prelude.Text
+  set newValue CloudWatchLogsConfigProperty {..}
+    = CloudWatchLogsConfigProperty
+        {streamName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/CloudWatchLogsConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.CloudWatchLogsConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CloudWatchLogsConfigProperty :: Prelude.Type
+instance ToResourceProperties CloudWatchLogsConfigProperty
+instance Prelude.Eq CloudWatchLogsConfigProperty
+instance Prelude.Show CloudWatchLogsConfigProperty
+instance JSON.ToJSON CloudWatchLogsConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs b/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodeBuild.Project.DockerServerProperty (
+        DockerServerProperty(..), mkDockerServerProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DockerServerProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-dockerserver.html>
+    DockerServerProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-dockerserver.html#cfn-codebuild-project-dockerserver-computetype>
+                          computeType :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-dockerserver.html#cfn-codebuild-project-dockerserver-securitygroupids>
+                          securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDockerServerProperty ::
+  Value Prelude.Text -> DockerServerProperty
+mkDockerServerProperty computeType
+  = DockerServerProperty
+      {haddock_workaround_ = (), computeType = computeType,
+       securityGroupIds = Prelude.Nothing}
+instance ToResourceProperties DockerServerProperty where
+  toResourceProperties DockerServerProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.DockerServer",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ComputeType" JSON..= computeType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds]))}
+instance JSON.ToJSON DockerServerProperty where
+  toJSON DockerServerProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ComputeType" JSON..= computeType]
+              (Prelude.catMaybes
+                 [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds])))
+instance Property "ComputeType" DockerServerProperty where
+  type PropertyType "ComputeType" DockerServerProperty = Value Prelude.Text
+  set newValue DockerServerProperty {..}
+    = DockerServerProperty {computeType = newValue, ..}
+instance Property "SecurityGroupIds" DockerServerProperty where
+  type PropertyType "SecurityGroupIds" DockerServerProperty = ValueList Prelude.Text
+  set newValue DockerServerProperty {..}
+    = DockerServerProperty
+        {securityGroupIds = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/DockerServerProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.DockerServerProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DockerServerProperty :: Prelude.Type
+instance ToResourceProperties DockerServerProperty
+instance Prelude.Eq DockerServerProperty
+instance Prelude.Show DockerServerProperty
+instance JSON.ToJSON DockerServerProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs b/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs
@@ -0,0 +1,125 @@
+module Stratosphere.CodeBuild.Project.EnvironmentProperty (
+        module Exports, EnvironmentProperty(..), mkEnvironmentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.DockerServerProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.EnvironmentVariableProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ProjectFleetProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.RegistryCredentialProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html>
+    EnvironmentProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-certificate>
+                         certificate :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-computetype>
+                         computeType :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-dockerserver>
+                         dockerServer :: (Prelude.Maybe DockerServerProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-environmentvariables>
+                         environmentVariables :: (Prelude.Maybe [EnvironmentVariableProperty]),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-fleet>
+                         fleet :: (Prelude.Maybe ProjectFleetProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-image>
+                         image :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-imagepullcredentialstype>
+                         imagePullCredentialsType :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-privilegedmode>
+                         privilegedMode :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-registrycredential>
+                         registryCredential :: (Prelude.Maybe RegistryCredentialProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-type>
+                         type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> EnvironmentProperty
+mkEnvironmentProperty computeType image type'
+  = EnvironmentProperty
+      {haddock_workaround_ = (), computeType = computeType,
+       image = image, type' = type', certificate = Prelude.Nothing,
+       dockerServer = Prelude.Nothing,
+       environmentVariables = Prelude.Nothing, fleet = Prelude.Nothing,
+       imagePullCredentialsType = Prelude.Nothing,
+       privilegedMode = Prelude.Nothing,
+       registryCredential = Prelude.Nothing}
+instance ToResourceProperties EnvironmentProperty where
+  toResourceProperties EnvironmentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.Environment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ComputeType" JSON..= computeType, "Image" JSON..= image,
+                            "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Certificate" Prelude.<$> certificate,
+                               (JSON..=) "DockerServer" Prelude.<$> dockerServer,
+                               (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                               (JSON..=) "Fleet" Prelude.<$> fleet,
+                               (JSON..=) "ImagePullCredentialsType"
+                                 Prelude.<$> imagePullCredentialsType,
+                               (JSON..=) "PrivilegedMode" Prelude.<$> privilegedMode,
+                               (JSON..=) "RegistryCredential" Prelude.<$> registryCredential]))}
+instance JSON.ToJSON EnvironmentProperty where
+  toJSON EnvironmentProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ComputeType" JSON..= computeType, "Image" JSON..= image,
+               "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Certificate" Prelude.<$> certificate,
+                  (JSON..=) "DockerServer" Prelude.<$> dockerServer,
+                  (JSON..=) "EnvironmentVariables" Prelude.<$> environmentVariables,
+                  (JSON..=) "Fleet" Prelude.<$> fleet,
+                  (JSON..=) "ImagePullCredentialsType"
+                    Prelude.<$> imagePullCredentialsType,
+                  (JSON..=) "PrivilegedMode" Prelude.<$> privilegedMode,
+                  (JSON..=) "RegistryCredential" Prelude.<$> registryCredential])))
+instance Property "Certificate" EnvironmentProperty where
+  type PropertyType "Certificate" EnvironmentProperty = Value Prelude.Text
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {certificate = Prelude.pure newValue, ..}
+instance Property "ComputeType" EnvironmentProperty where
+  type PropertyType "ComputeType" EnvironmentProperty = Value Prelude.Text
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {computeType = newValue, ..}
+instance Property "DockerServer" EnvironmentProperty where
+  type PropertyType "DockerServer" EnvironmentProperty = DockerServerProperty
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {dockerServer = Prelude.pure newValue, ..}
+instance Property "EnvironmentVariables" EnvironmentProperty where
+  type PropertyType "EnvironmentVariables" EnvironmentProperty = [EnvironmentVariableProperty]
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty
+        {environmentVariables = Prelude.pure newValue, ..}
+instance Property "Fleet" EnvironmentProperty where
+  type PropertyType "Fleet" EnvironmentProperty = ProjectFleetProperty
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {fleet = Prelude.pure newValue, ..}
+instance Property "Image" EnvironmentProperty where
+  type PropertyType "Image" EnvironmentProperty = Value Prelude.Text
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {image = newValue, ..}
+instance Property "ImagePullCredentialsType" EnvironmentProperty where
+  type PropertyType "ImagePullCredentialsType" EnvironmentProperty = Value Prelude.Text
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty
+        {imagePullCredentialsType = Prelude.pure newValue, ..}
+instance Property "PrivilegedMode" EnvironmentProperty where
+  type PropertyType "PrivilegedMode" EnvironmentProperty = Value Prelude.Bool
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {privilegedMode = Prelude.pure newValue, ..}
+instance Property "RegistryCredential" EnvironmentProperty where
+  type PropertyType "RegistryCredential" EnvironmentProperty = RegistryCredentialProperty
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty
+        {registryCredential = Prelude.pure newValue, ..}
+instance Property "Type" EnvironmentProperty where
+  type PropertyType "Type" EnvironmentProperty = Value Prelude.Text
+  set newValue EnvironmentProperty {..}
+    = EnvironmentProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/EnvironmentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.EnvironmentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentProperty
+instance Prelude.Eq EnvironmentProperty
+instance Prelude.Show EnvironmentProperty
+instance JSON.ToJSON EnvironmentProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/EnvironmentVariableProperty.hs b/gen/Stratosphere/CodeBuild/Project/EnvironmentVariableProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/EnvironmentVariableProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeBuild.Project.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-codebuild-project-environmentvariable.html>
+    EnvironmentVariableProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-name>
+                                 name :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-type>
+                                 type' :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-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::CodeBuild::Project.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/CodeBuild/Project/EnvironmentVariableProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/EnvironmentVariableProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/EnvironmentVariableProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.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/CodeBuild/Project/FilterGroupProperty.hs b/gen/Stratosphere/CodeBuild/Project/FilterGroupProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/FilterGroupProperty.hs
@@ -0,0 +1,5 @@
+module Stratosphere.CodeBuild.Project.FilterGroupProperty (
+        module Exports, FilterGroupProperty
+    ) where
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.WebhookFilterProperty as Exports
+type FilterGroupProperty = [WebhookFilterProperty]
diff --git a/gen/Stratosphere/CodeBuild/Project/FilterGroupProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/FilterGroupProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/FilterGroupProperty.hs-boot
@@ -0,0 +1,5 @@
+module Stratosphere.CodeBuild.Project.FilterGroupProperty (
+        module Exports, FilterGroupProperty
+    ) where
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.WebhookFilterProperty as Exports
+type FilterGroupProperty = [WebhookFilterProperty]
diff --git a/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.CodeBuild.Project.GitSubmodulesConfigProperty (
+        GitSubmodulesConfigProperty(..), mkGitSubmodulesConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitSubmodulesConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-gitsubmodulesconfig.html>
+    GitSubmodulesConfigProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-gitsubmodulesconfig.html#cfn-codebuild-project-gitsubmodulesconfig-fetchsubmodules>
+                                 fetchSubmodules :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitSubmodulesConfigProperty ::
+  Value Prelude.Bool -> GitSubmodulesConfigProperty
+mkGitSubmodulesConfigProperty fetchSubmodules
+  = GitSubmodulesConfigProperty
+      {haddock_workaround_ = (), fetchSubmodules = fetchSubmodules}
+instance ToResourceProperties GitSubmodulesConfigProperty where
+  toResourceProperties GitSubmodulesConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.GitSubmodulesConfig",
+         supportsTags = Prelude.False,
+         properties = ["FetchSubmodules" JSON..= fetchSubmodules]}
+instance JSON.ToJSON GitSubmodulesConfigProperty where
+  toJSON GitSubmodulesConfigProperty {..}
+    = JSON.object ["FetchSubmodules" JSON..= fetchSubmodules]
+instance Property "FetchSubmodules" GitSubmodulesConfigProperty where
+  type PropertyType "FetchSubmodules" GitSubmodulesConfigProperty = Value Prelude.Bool
+  set newValue GitSubmodulesConfigProperty {..}
+    = GitSubmodulesConfigProperty {fetchSubmodules = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/GitSubmodulesConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.GitSubmodulesConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitSubmodulesConfigProperty :: Prelude.Type
+instance ToResourceProperties GitSubmodulesConfigProperty
+instance Prelude.Eq GitSubmodulesConfigProperty
+instance Prelude.Show GitSubmodulesConfigProperty
+instance JSON.ToJSON GitSubmodulesConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CodeBuild.Project.LogsConfigProperty (
+        module Exports, LogsConfigProperty(..), mkLogsConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.CloudWatchLogsConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.S3LogsConfigProperty as Exports
+import Stratosphere.ResourceProperties
+data LogsConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-logsconfig.html>
+    LogsConfigProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-logsconfig.html#cfn-codebuild-project-logsconfig-cloudwatchlogs>
+                        cloudWatchLogs :: (Prelude.Maybe CloudWatchLogsConfigProperty),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-logsconfig.html#cfn-codebuild-project-logsconfig-s3logs>
+                        s3Logs :: (Prelude.Maybe S3LogsConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLogsConfigProperty :: LogsConfigProperty
+mkLogsConfigProperty
+  = LogsConfigProperty
+      {haddock_workaround_ = (), cloudWatchLogs = Prelude.Nothing,
+       s3Logs = Prelude.Nothing}
+instance ToResourceProperties LogsConfigProperty where
+  toResourceProperties LogsConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.LogsConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CloudWatchLogs" Prelude.<$> cloudWatchLogs,
+                            (JSON..=) "S3Logs" Prelude.<$> s3Logs])}
+instance JSON.ToJSON LogsConfigProperty where
+  toJSON LogsConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CloudWatchLogs" Prelude.<$> cloudWatchLogs,
+               (JSON..=) "S3Logs" Prelude.<$> s3Logs]))
+instance Property "CloudWatchLogs" LogsConfigProperty where
+  type PropertyType "CloudWatchLogs" LogsConfigProperty = CloudWatchLogsConfigProperty
+  set newValue LogsConfigProperty {..}
+    = LogsConfigProperty {cloudWatchLogs = Prelude.pure newValue, ..}
+instance Property "S3Logs" LogsConfigProperty where
+  type PropertyType "S3Logs" LogsConfigProperty = S3LogsConfigProperty
+  set newValue LogsConfigProperty {..}
+    = LogsConfigProperty {s3Logs = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/LogsConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.LogsConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LogsConfigProperty :: Prelude.Type
+instance ToResourceProperties LogsConfigProperty
+instance Prelude.Eq LogsConfigProperty
+instance Prelude.Show LogsConfigProperty
+instance JSON.ToJSON LogsConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs
@@ -0,0 +1,78 @@
+module Stratosphere.CodeBuild.Project.ProjectBuildBatchConfigProperty (
+        module Exports, ProjectBuildBatchConfigProperty(..),
+        mkProjectBuildBatchConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.BatchRestrictionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectBuildBatchConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html>
+    ProjectBuildBatchConfigProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html#cfn-codebuild-project-projectbuildbatchconfig-batchreportmode>
+                                     batchReportMode :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html#cfn-codebuild-project-projectbuildbatchconfig-combineartifacts>
+                                     combineArtifacts :: (Prelude.Maybe (Value Prelude.Bool)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html#cfn-codebuild-project-projectbuildbatchconfig-restrictions>
+                                     restrictions :: (Prelude.Maybe BatchRestrictionsProperty),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html#cfn-codebuild-project-projectbuildbatchconfig-servicerole>
+                                     serviceRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectbuildbatchconfig.html#cfn-codebuild-project-projectbuildbatchconfig-timeoutinmins>
+                                     timeoutInMins :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectBuildBatchConfigProperty ::
+  ProjectBuildBatchConfigProperty
+mkProjectBuildBatchConfigProperty
+  = ProjectBuildBatchConfigProperty
+      {haddock_workaround_ = (), batchReportMode = Prelude.Nothing,
+       combineArtifacts = Prelude.Nothing, restrictions = Prelude.Nothing,
+       serviceRole = Prelude.Nothing, timeoutInMins = Prelude.Nothing}
+instance ToResourceProperties ProjectBuildBatchConfigProperty where
+  toResourceProperties ProjectBuildBatchConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectBuildBatchConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BatchReportMode" Prelude.<$> batchReportMode,
+                            (JSON..=) "CombineArtifacts" Prelude.<$> combineArtifacts,
+                            (JSON..=) "Restrictions" Prelude.<$> restrictions,
+                            (JSON..=) "ServiceRole" Prelude.<$> serviceRole,
+                            (JSON..=) "TimeoutInMins" Prelude.<$> timeoutInMins])}
+instance JSON.ToJSON ProjectBuildBatchConfigProperty where
+  toJSON ProjectBuildBatchConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BatchReportMode" Prelude.<$> batchReportMode,
+               (JSON..=) "CombineArtifacts" Prelude.<$> combineArtifacts,
+               (JSON..=) "Restrictions" Prelude.<$> restrictions,
+               (JSON..=) "ServiceRole" Prelude.<$> serviceRole,
+               (JSON..=) "TimeoutInMins" Prelude.<$> timeoutInMins]))
+instance Property "BatchReportMode" ProjectBuildBatchConfigProperty where
+  type PropertyType "BatchReportMode" ProjectBuildBatchConfigProperty = Value Prelude.Text
+  set newValue ProjectBuildBatchConfigProperty {..}
+    = ProjectBuildBatchConfigProperty
+        {batchReportMode = Prelude.pure newValue, ..}
+instance Property "CombineArtifacts" ProjectBuildBatchConfigProperty where
+  type PropertyType "CombineArtifacts" ProjectBuildBatchConfigProperty = Value Prelude.Bool
+  set newValue ProjectBuildBatchConfigProperty {..}
+    = ProjectBuildBatchConfigProperty
+        {combineArtifacts = Prelude.pure newValue, ..}
+instance Property "Restrictions" ProjectBuildBatchConfigProperty where
+  type PropertyType "Restrictions" ProjectBuildBatchConfigProperty = BatchRestrictionsProperty
+  set newValue ProjectBuildBatchConfigProperty {..}
+    = ProjectBuildBatchConfigProperty
+        {restrictions = Prelude.pure newValue, ..}
+instance Property "ServiceRole" ProjectBuildBatchConfigProperty where
+  type PropertyType "ServiceRole" ProjectBuildBatchConfigProperty = Value Prelude.Text
+  set newValue ProjectBuildBatchConfigProperty {..}
+    = ProjectBuildBatchConfigProperty
+        {serviceRole = Prelude.pure newValue, ..}
+instance Property "TimeoutInMins" ProjectBuildBatchConfigProperty where
+  type PropertyType "TimeoutInMins" ProjectBuildBatchConfigProperty = Value Prelude.Integer
+  set newValue ProjectBuildBatchConfigProperty {..}
+    = ProjectBuildBatchConfigProperty
+        {timeoutInMins = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectBuildBatchConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectBuildBatchConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectBuildBatchConfigProperty :: Prelude.Type
+instance ToResourceProperties ProjectBuildBatchConfigProperty
+instance Prelude.Eq ProjectBuildBatchConfigProperty
+instance Prelude.Show ProjectBuildBatchConfigProperty
+instance JSON.ToJSON ProjectBuildBatchConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.CodeBuild.Project.ProjectCacheProperty (
+        ProjectCacheProperty(..), mkProjectCacheProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectCacheProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html>
+    ProjectCacheProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html#cfn-codebuild-project-projectcache-cachenamespace>
+                          cacheNamespace :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html#cfn-codebuild-project-projectcache-location>
+                          location :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html#cfn-codebuild-project-projectcache-modes>
+                          modes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectcache.html#cfn-codebuild-project-projectcache-type>
+                          type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectCacheProperty ::
+  Value Prelude.Text -> ProjectCacheProperty
+mkProjectCacheProperty type'
+  = ProjectCacheProperty
+      {haddock_workaround_ = (), type' = type',
+       cacheNamespace = Prelude.Nothing, location = Prelude.Nothing,
+       modes = Prelude.Nothing}
+instance ToResourceProperties ProjectCacheProperty where
+  toResourceProperties ProjectCacheProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectCache",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "CacheNamespace" Prelude.<$> cacheNamespace,
+                               (JSON..=) "Location" Prelude.<$> location,
+                               (JSON..=) "Modes" Prelude.<$> modes]))}
+instance JSON.ToJSON ProjectCacheProperty where
+  toJSON ProjectCacheProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "CacheNamespace" Prelude.<$> cacheNamespace,
+                  (JSON..=) "Location" Prelude.<$> location,
+                  (JSON..=) "Modes" Prelude.<$> modes])))
+instance Property "CacheNamespace" ProjectCacheProperty where
+  type PropertyType "CacheNamespace" ProjectCacheProperty = Value Prelude.Text
+  set newValue ProjectCacheProperty {..}
+    = ProjectCacheProperty {cacheNamespace = Prelude.pure newValue, ..}
+instance Property "Location" ProjectCacheProperty where
+  type PropertyType "Location" ProjectCacheProperty = Value Prelude.Text
+  set newValue ProjectCacheProperty {..}
+    = ProjectCacheProperty {location = Prelude.pure newValue, ..}
+instance Property "Modes" ProjectCacheProperty where
+  type PropertyType "Modes" ProjectCacheProperty = ValueList Prelude.Text
+  set newValue ProjectCacheProperty {..}
+    = ProjectCacheProperty {modes = Prelude.pure newValue, ..}
+instance Property "Type" ProjectCacheProperty where
+  type PropertyType "Type" ProjectCacheProperty = Value Prelude.Text
+  set newValue ProjectCacheProperty {..}
+    = ProjectCacheProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectCacheProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectCacheProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectCacheProperty :: Prelude.Type
+instance ToResourceProperties ProjectCacheProperty
+instance Prelude.Eq ProjectCacheProperty
+instance Prelude.Show ProjectCacheProperty
+instance JSON.ToJSON ProjectCacheProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs
@@ -0,0 +1,78 @@
+module Stratosphere.CodeBuild.Project.ProjectFileSystemLocationProperty (
+        ProjectFileSystemLocationProperty(..),
+        mkProjectFileSystemLocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectFileSystemLocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html>
+    ProjectFileSystemLocationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-identifier>
+                                       identifier :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-location>
+                                       location :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-mountoptions>
+                                       mountOptions :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-mountpoint>
+                                       mountPoint :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-type>
+                                       type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectFileSystemLocationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> ProjectFileSystemLocationProperty
+mkProjectFileSystemLocationProperty
+  identifier
+  location
+  mountPoint
+  type'
+  = ProjectFileSystemLocationProperty
+      {haddock_workaround_ = (), identifier = identifier,
+       location = location, mountPoint = mountPoint, type' = type',
+       mountOptions = Prelude.Nothing}
+instance ToResourceProperties ProjectFileSystemLocationProperty where
+  toResourceProperties ProjectFileSystemLocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectFileSystemLocation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Identifier" JSON..= identifier, "Location" JSON..= location,
+                            "MountPoint" JSON..= mountPoint, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "MountOptions" Prelude.<$> mountOptions]))}
+instance JSON.ToJSON ProjectFileSystemLocationProperty where
+  toJSON ProjectFileSystemLocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Identifier" JSON..= identifier, "Location" JSON..= location,
+               "MountPoint" JSON..= mountPoint, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "MountOptions" Prelude.<$> mountOptions])))
+instance Property "Identifier" ProjectFileSystemLocationProperty where
+  type PropertyType "Identifier" ProjectFileSystemLocationProperty = Value Prelude.Text
+  set newValue ProjectFileSystemLocationProperty {..}
+    = ProjectFileSystemLocationProperty {identifier = newValue, ..}
+instance Property "Location" ProjectFileSystemLocationProperty where
+  type PropertyType "Location" ProjectFileSystemLocationProperty = Value Prelude.Text
+  set newValue ProjectFileSystemLocationProperty {..}
+    = ProjectFileSystemLocationProperty {location = newValue, ..}
+instance Property "MountOptions" ProjectFileSystemLocationProperty where
+  type PropertyType "MountOptions" ProjectFileSystemLocationProperty = Value Prelude.Text
+  set newValue ProjectFileSystemLocationProperty {..}
+    = ProjectFileSystemLocationProperty
+        {mountOptions = Prelude.pure newValue, ..}
+instance Property "MountPoint" ProjectFileSystemLocationProperty where
+  type PropertyType "MountPoint" ProjectFileSystemLocationProperty = Value Prelude.Text
+  set newValue ProjectFileSystemLocationProperty {..}
+    = ProjectFileSystemLocationProperty {mountPoint = newValue, ..}
+instance Property "Type" ProjectFileSystemLocationProperty where
+  type PropertyType "Type" ProjectFileSystemLocationProperty = Value Prelude.Text
+  set newValue ProjectFileSystemLocationProperty {..}
+    = ProjectFileSystemLocationProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectFileSystemLocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectFileSystemLocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectFileSystemLocationProperty :: Prelude.Type
+instance ToResourceProperties ProjectFileSystemLocationProperty
+instance Prelude.Eq ProjectFileSystemLocationProperty
+instance Prelude.Show ProjectFileSystemLocationProperty
+instance JSON.ToJSON ProjectFileSystemLocationProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.CodeBuild.Project.ProjectFleetProperty (
+        ProjectFleetProperty(..), mkProjectFleetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectFleetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfleet.html>
+    ProjectFleetProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfleet.html#cfn-codebuild-project-projectfleet-fleetarn>
+                          fleetArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectFleetProperty :: ProjectFleetProperty
+mkProjectFleetProperty
+  = ProjectFleetProperty
+      {haddock_workaround_ = (), fleetArn = Prelude.Nothing}
+instance ToResourceProperties ProjectFleetProperty where
+  toResourceProperties ProjectFleetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectFleet",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "FleetArn" Prelude.<$> fleetArn])}
+instance JSON.ToJSON ProjectFleetProperty where
+  toJSON ProjectFleetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "FleetArn" Prelude.<$> fleetArn]))
+instance Property "FleetArn" ProjectFleetProperty where
+  type PropertyType "FleetArn" ProjectFleetProperty = Value Prelude.Text
+  set newValue ProjectFleetProperty {..}
+    = ProjectFleetProperty {fleetArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectFleetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectFleetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectFleetProperty :: Prelude.Type
+instance ToResourceProperties ProjectFleetProperty
+instance Prelude.Eq ProjectFleetProperty
+instance Prelude.Show ProjectFleetProperty
+instance JSON.ToJSON ProjectFleetProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodeBuild.Project.ProjectSourceVersionProperty (
+        ProjectSourceVersionProperty(..), mkProjectSourceVersionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectSourceVersionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectsourceversion.html>
+    ProjectSourceVersionProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectsourceversion.html#cfn-codebuild-project-projectsourceversion-sourceidentifier>
+                                  sourceIdentifier :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectsourceversion.html#cfn-codebuild-project-projectsourceversion-sourceversion>
+                                  sourceVersion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectSourceVersionProperty ::
+  Value Prelude.Text -> ProjectSourceVersionProperty
+mkProjectSourceVersionProperty sourceIdentifier
+  = ProjectSourceVersionProperty
+      {haddock_workaround_ = (), sourceIdentifier = sourceIdentifier,
+       sourceVersion = Prelude.Nothing}
+instance ToResourceProperties ProjectSourceVersionProperty where
+  toResourceProperties ProjectSourceVersionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectSourceVersion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceIdentifier" JSON..= sourceIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SourceVersion" Prelude.<$> sourceVersion]))}
+instance JSON.ToJSON ProjectSourceVersionProperty where
+  toJSON ProjectSourceVersionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceIdentifier" JSON..= sourceIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "SourceVersion" Prelude.<$> sourceVersion])))
+instance Property "SourceIdentifier" ProjectSourceVersionProperty where
+  type PropertyType "SourceIdentifier" ProjectSourceVersionProperty = Value Prelude.Text
+  set newValue ProjectSourceVersionProperty {..}
+    = ProjectSourceVersionProperty {sourceIdentifier = newValue, ..}
+instance Property "SourceVersion" ProjectSourceVersionProperty where
+  type PropertyType "SourceVersion" ProjectSourceVersionProperty = Value Prelude.Text
+  set newValue ProjectSourceVersionProperty {..}
+    = ProjectSourceVersionProperty
+        {sourceVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectSourceVersionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectSourceVersionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectSourceVersionProperty :: Prelude.Type
+instance ToResourceProperties ProjectSourceVersionProperty
+instance Prelude.Eq ProjectSourceVersionProperty
+instance Prelude.Show ProjectSourceVersionProperty
+instance JSON.ToJSON ProjectSourceVersionProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs b/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs
@@ -0,0 +1,80 @@
+module Stratosphere.CodeBuild.Project.ProjectTriggersProperty (
+        module Exports, ProjectTriggersProperty(..),
+        mkProjectTriggersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.FilterGroupProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.PullRequestBuildPolicyProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.ScopeConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectTriggersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html>
+    ProjectTriggersProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html#cfn-codebuild-project-projecttriggers-buildtype>
+                             buildType :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html#cfn-codebuild-project-projecttriggers-filtergroups>
+                             filterGroups :: (Prelude.Maybe [FilterGroupProperty]),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html#cfn-codebuild-project-projecttriggers-pullrequestbuildpolicy>
+                             pullRequestBuildPolicy :: (Prelude.Maybe PullRequestBuildPolicyProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html#cfn-codebuild-project-projecttriggers-scopeconfiguration>
+                             scopeConfiguration :: (Prelude.Maybe ScopeConfigurationProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html#cfn-codebuild-project-projecttriggers-webhook>
+                             webhook :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectTriggersProperty :: ProjectTriggersProperty
+mkProjectTriggersProperty
+  = ProjectTriggersProperty
+      {haddock_workaround_ = (), buildType = Prelude.Nothing,
+       filterGroups = Prelude.Nothing,
+       pullRequestBuildPolicy = Prelude.Nothing,
+       scopeConfiguration = Prelude.Nothing, webhook = Prelude.Nothing}
+instance ToResourceProperties ProjectTriggersProperty where
+  toResourceProperties ProjectTriggersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ProjectTriggers",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BuildType" Prelude.<$> buildType,
+                            (JSON..=) "FilterGroups" Prelude.<$> filterGroups,
+                            (JSON..=) "PullRequestBuildPolicy"
+                              Prelude.<$> pullRequestBuildPolicy,
+                            (JSON..=) "ScopeConfiguration" Prelude.<$> scopeConfiguration,
+                            (JSON..=) "Webhook" Prelude.<$> webhook])}
+instance JSON.ToJSON ProjectTriggersProperty where
+  toJSON ProjectTriggersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BuildType" Prelude.<$> buildType,
+               (JSON..=) "FilterGroups" Prelude.<$> filterGroups,
+               (JSON..=) "PullRequestBuildPolicy"
+                 Prelude.<$> pullRequestBuildPolicy,
+               (JSON..=) "ScopeConfiguration" Prelude.<$> scopeConfiguration,
+               (JSON..=) "Webhook" Prelude.<$> webhook]))
+instance Property "BuildType" ProjectTriggersProperty where
+  type PropertyType "BuildType" ProjectTriggersProperty = Value Prelude.Text
+  set newValue ProjectTriggersProperty {..}
+    = ProjectTriggersProperty {buildType = Prelude.pure newValue, ..}
+instance Property "FilterGroups" ProjectTriggersProperty where
+  type PropertyType "FilterGroups" ProjectTriggersProperty = [FilterGroupProperty]
+  set newValue ProjectTriggersProperty {..}
+    = ProjectTriggersProperty
+        {filterGroups = Prelude.pure newValue, ..}
+instance Property "PullRequestBuildPolicy" ProjectTriggersProperty where
+  type PropertyType "PullRequestBuildPolicy" ProjectTriggersProperty = PullRequestBuildPolicyProperty
+  set newValue ProjectTriggersProperty {..}
+    = ProjectTriggersProperty
+        {pullRequestBuildPolicy = Prelude.pure newValue, ..}
+instance Property "ScopeConfiguration" ProjectTriggersProperty where
+  type PropertyType "ScopeConfiguration" ProjectTriggersProperty = ScopeConfigurationProperty
+  set newValue ProjectTriggersProperty {..}
+    = ProjectTriggersProperty
+        {scopeConfiguration = Prelude.pure newValue, ..}
+instance Property "Webhook" ProjectTriggersProperty where
+  type PropertyType "Webhook" ProjectTriggersProperty = Value Prelude.Bool
+  set newValue ProjectTriggersProperty {..}
+    = ProjectTriggersProperty {webhook = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ProjectTriggersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ProjectTriggersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectTriggersProperty :: Prelude.Type
+instance ToResourceProperties ProjectTriggersProperty
+instance Prelude.Eq ProjectTriggersProperty
+instance Prelude.Show ProjectTriggersProperty
+instance JSON.ToJSON ProjectTriggersProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs b/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.CodeBuild.Project.PullRequestBuildPolicyProperty (
+        PullRequestBuildPolicyProperty(..),
+        mkPullRequestBuildPolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PullRequestBuildPolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-pullrequestbuildpolicy.html>
+    PullRequestBuildPolicyProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-pullrequestbuildpolicy.html#cfn-codebuild-project-pullrequestbuildpolicy-approverroles>
+                                    approverRoles :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-pullrequestbuildpolicy.html#cfn-codebuild-project-pullrequestbuildpolicy-requirescommentapproval>
+                                    requiresCommentApproval :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPullRequestBuildPolicyProperty ::
+  Value Prelude.Text -> PullRequestBuildPolicyProperty
+mkPullRequestBuildPolicyProperty requiresCommentApproval
+  = PullRequestBuildPolicyProperty
+      {haddock_workaround_ = (),
+       requiresCommentApproval = requiresCommentApproval,
+       approverRoles = Prelude.Nothing}
+instance ToResourceProperties PullRequestBuildPolicyProperty where
+  toResourceProperties PullRequestBuildPolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.PullRequestBuildPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RequiresCommentApproval" JSON..= requiresCommentApproval]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApproverRoles" Prelude.<$> approverRoles]))}
+instance JSON.ToJSON PullRequestBuildPolicyProperty where
+  toJSON PullRequestBuildPolicyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RequiresCommentApproval" JSON..= requiresCommentApproval]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApproverRoles" Prelude.<$> approverRoles])))
+instance Property "ApproverRoles" PullRequestBuildPolicyProperty where
+  type PropertyType "ApproverRoles" PullRequestBuildPolicyProperty = ValueList Prelude.Text
+  set newValue PullRequestBuildPolicyProperty {..}
+    = PullRequestBuildPolicyProperty
+        {approverRoles = Prelude.pure newValue, ..}
+instance Property "RequiresCommentApproval" PullRequestBuildPolicyProperty where
+  type PropertyType "RequiresCommentApproval" PullRequestBuildPolicyProperty = Value Prelude.Text
+  set newValue PullRequestBuildPolicyProperty {..}
+    = PullRequestBuildPolicyProperty
+        {requiresCommentApproval = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/PullRequestBuildPolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.PullRequestBuildPolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PullRequestBuildPolicyProperty :: Prelude.Type
+instance ToResourceProperties PullRequestBuildPolicyProperty
+instance Prelude.Eq PullRequestBuildPolicyProperty
+instance Prelude.Show PullRequestBuildPolicyProperty
+instance JSON.ToJSON PullRequestBuildPolicyProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs b/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.CodeBuild.Project.RegistryCredentialProperty (
+        RegistryCredentialProperty(..), mkRegistryCredentialProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RegistryCredentialProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html>
+    RegistryCredentialProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html#cfn-codebuild-project-registrycredential-credential>
+                                credential :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html#cfn-codebuild-project-registrycredential-credentialprovider>
+                                credentialProvider :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegistryCredentialProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> RegistryCredentialProperty
+mkRegistryCredentialProperty credential credentialProvider
+  = RegistryCredentialProperty
+      {haddock_workaround_ = (), credential = credential,
+       credentialProvider = credentialProvider}
+instance ToResourceProperties RegistryCredentialProperty where
+  toResourceProperties RegistryCredentialProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.RegistryCredential",
+         supportsTags = Prelude.False,
+         properties = ["Credential" JSON..= credential,
+                       "CredentialProvider" JSON..= credentialProvider]}
+instance JSON.ToJSON RegistryCredentialProperty where
+  toJSON RegistryCredentialProperty {..}
+    = JSON.object
+        ["Credential" JSON..= credential,
+         "CredentialProvider" JSON..= credentialProvider]
+instance Property "Credential" RegistryCredentialProperty where
+  type PropertyType "Credential" RegistryCredentialProperty = Value Prelude.Text
+  set newValue RegistryCredentialProperty {..}
+    = RegistryCredentialProperty {credential = newValue, ..}
+instance Property "CredentialProvider" RegistryCredentialProperty where
+  type PropertyType "CredentialProvider" RegistryCredentialProperty = Value Prelude.Text
+  set newValue RegistryCredentialProperty {..}
+    = RegistryCredentialProperty {credentialProvider = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/RegistryCredentialProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.RegistryCredentialProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RegistryCredentialProperty :: Prelude.Type
+instance ToResourceProperties RegistryCredentialProperty
+instance Prelude.Eq RegistryCredentialProperty
+instance Prelude.Show RegistryCredentialProperty
+instance JSON.ToJSON RegistryCredentialProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.CodeBuild.Project.S3LogsConfigProperty (
+        S3LogsConfigProperty(..), mkS3LogsConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3LogsConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html>
+    S3LogsConfigProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html#cfn-codebuild-project-s3logsconfig-encryptiondisabled>
+                          encryptionDisabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html#cfn-codebuild-project-s3logsconfig-location>
+                          location :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-s3logsconfig.html#cfn-codebuild-project-s3logsconfig-status>
+                          status :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3LogsConfigProperty ::
+  Value Prelude.Text -> S3LogsConfigProperty
+mkS3LogsConfigProperty status
+  = S3LogsConfigProperty
+      {haddock_workaround_ = (), status = status,
+       encryptionDisabled = Prelude.Nothing, location = Prelude.Nothing}
+instance ToResourceProperties S3LogsConfigProperty where
+  toResourceProperties S3LogsConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.S3LogsConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Status" JSON..= status]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                               (JSON..=) "Location" Prelude.<$> location]))}
+instance JSON.ToJSON S3LogsConfigProperty where
+  toJSON S3LogsConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Status" JSON..= status]
+              (Prelude.catMaybes
+                 [(JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                  (JSON..=) "Location" Prelude.<$> location])))
+instance Property "EncryptionDisabled" S3LogsConfigProperty where
+  type PropertyType "EncryptionDisabled" S3LogsConfigProperty = Value Prelude.Bool
+  set newValue S3LogsConfigProperty {..}
+    = S3LogsConfigProperty
+        {encryptionDisabled = Prelude.pure newValue, ..}
+instance Property "Location" S3LogsConfigProperty where
+  type PropertyType "Location" S3LogsConfigProperty = Value Prelude.Text
+  set newValue S3LogsConfigProperty {..}
+    = S3LogsConfigProperty {location = Prelude.pure newValue, ..}
+instance Property "Status" S3LogsConfigProperty where
+  type PropertyType "Status" S3LogsConfigProperty = Value Prelude.Text
+  set newValue S3LogsConfigProperty {..}
+    = S3LogsConfigProperty {status = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/S3LogsConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.S3LogsConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3LogsConfigProperty :: Prelude.Type
+instance ToResourceProperties S3LogsConfigProperty
+instance Prelude.Eq S3LogsConfigProperty
+instance Prelude.Show S3LogsConfigProperty
+instance JSON.ToJSON S3LogsConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs b/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.CodeBuild.Project.ScopeConfigurationProperty (
+        ScopeConfigurationProperty(..), mkScopeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScopeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-scopeconfiguration.html>
+    ScopeConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-scopeconfiguration.html#cfn-codebuild-project-scopeconfiguration-domain>
+                                domain :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-scopeconfiguration.html#cfn-codebuild-project-scopeconfiguration-name>
+                                name :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-scopeconfiguration.html#cfn-codebuild-project-scopeconfiguration-scope>
+                                scope :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScopeConfigurationProperty ::
+  Value Prelude.Text -> ScopeConfigurationProperty
+mkScopeConfigurationProperty name
+  = ScopeConfigurationProperty
+      {haddock_workaround_ = (), name = name, domain = Prelude.Nothing,
+       scope = Prelude.Nothing}
+instance ToResourceProperties ScopeConfigurationProperty where
+  toResourceProperties ScopeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.ScopeConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Domain" Prelude.<$> domain,
+                               (JSON..=) "Scope" Prelude.<$> scope]))}
+instance JSON.ToJSON ScopeConfigurationProperty where
+  toJSON ScopeConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Domain" Prelude.<$> domain,
+                  (JSON..=) "Scope" Prelude.<$> scope])))
+instance Property "Domain" ScopeConfigurationProperty where
+  type PropertyType "Domain" ScopeConfigurationProperty = Value Prelude.Text
+  set newValue ScopeConfigurationProperty {..}
+    = ScopeConfigurationProperty {domain = Prelude.pure newValue, ..}
+instance Property "Name" ScopeConfigurationProperty where
+  type PropertyType "Name" ScopeConfigurationProperty = Value Prelude.Text
+  set newValue ScopeConfigurationProperty {..}
+    = ScopeConfigurationProperty {name = newValue, ..}
+instance Property "Scope" ScopeConfigurationProperty where
+  type PropertyType "Scope" ScopeConfigurationProperty = Value Prelude.Text
+  set newValue ScopeConfigurationProperty {..}
+    = ScopeConfigurationProperty {scope = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/ScopeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.ScopeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScopeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ScopeConfigurationProperty
+instance Prelude.Eq ScopeConfigurationProperty
+instance Prelude.Show ScopeConfigurationProperty
+instance JSON.ToJSON ScopeConfigurationProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs b/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.CodeBuild.Project.SourceAuthProperty (
+        SourceAuthProperty(..), mkSourceAuthProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceAuthProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html>
+    SourceAuthProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html#cfn-codebuild-project-sourceauth-resource>
+                        resource :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html#cfn-codebuild-project-sourceauth-type>
+                        type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceAuthProperty :: Value Prelude.Text -> SourceAuthProperty
+mkSourceAuthProperty type'
+  = SourceAuthProperty
+      {haddock_workaround_ = (), type' = type',
+       resource = Prelude.Nothing}
+instance ToResourceProperties SourceAuthProperty where
+  toResourceProperties SourceAuthProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.SourceAuth",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes [(JSON..=) "Resource" Prelude.<$> resource]))}
+instance JSON.ToJSON SourceAuthProperty where
+  toJSON SourceAuthProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes [(JSON..=) "Resource" Prelude.<$> resource])))
+instance Property "Resource" SourceAuthProperty where
+  type PropertyType "Resource" SourceAuthProperty = Value Prelude.Text
+  set newValue SourceAuthProperty {..}
+    = SourceAuthProperty {resource = Prelude.pure newValue, ..}
+instance Property "Type" SourceAuthProperty where
+  type PropertyType "Type" SourceAuthProperty = Value Prelude.Text
+  set newValue SourceAuthProperty {..}
+    = SourceAuthProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/SourceAuthProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.SourceAuthProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceAuthProperty :: Prelude.Type
+instance ToResourceProperties SourceAuthProperty
+instance Prelude.Eq SourceAuthProperty
+instance Prelude.Show SourceAuthProperty
+instance JSON.ToJSON SourceAuthProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs b/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs
@@ -0,0 +1,119 @@
+module Stratosphere.CodeBuild.Project.SourceProperty (
+        module Exports, SourceProperty(..), mkSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.BuildStatusConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.GitSubmodulesConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeBuild.Project.SourceAuthProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html>
+    SourceProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-auth>
+                    auth :: (Prelude.Maybe SourceAuthProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-buildspec>
+                    buildSpec :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-buildstatusconfig>
+                    buildStatusConfig :: (Prelude.Maybe BuildStatusConfigProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-gitclonedepth>
+                    gitCloneDepth :: (Prelude.Maybe (Value Prelude.Integer)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-gitsubmodulesconfig>
+                    gitSubmodulesConfig :: (Prelude.Maybe GitSubmodulesConfigProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-insecuressl>
+                    insecureSsl :: (Prelude.Maybe (Value Prelude.Bool)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-location>
+                    location :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-reportbuildstatus>
+                    reportBuildStatus :: (Prelude.Maybe (Value Prelude.Bool)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-sourceidentifier>
+                    sourceIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-type>
+                    type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceProperty :: Value Prelude.Text -> SourceProperty
+mkSourceProperty type'
+  = SourceProperty
+      {haddock_workaround_ = (), type' = type', auth = Prelude.Nothing,
+       buildSpec = Prelude.Nothing, buildStatusConfig = Prelude.Nothing,
+       gitCloneDepth = Prelude.Nothing,
+       gitSubmodulesConfig = Prelude.Nothing,
+       insecureSsl = Prelude.Nothing, location = Prelude.Nothing,
+       reportBuildStatus = Prelude.Nothing,
+       sourceIdentifier = Prelude.Nothing}
+instance ToResourceProperties SourceProperty where
+  toResourceProperties SourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.Source",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Auth" Prelude.<$> auth,
+                               (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                               (JSON..=) "BuildStatusConfig" Prelude.<$> buildStatusConfig,
+                               (JSON..=) "GitCloneDepth" Prelude.<$> gitCloneDepth,
+                               (JSON..=) "GitSubmodulesConfig" Prelude.<$> gitSubmodulesConfig,
+                               (JSON..=) "InsecureSsl" Prelude.<$> insecureSsl,
+                               (JSON..=) "Location" Prelude.<$> location,
+                               (JSON..=) "ReportBuildStatus" Prelude.<$> reportBuildStatus,
+                               (JSON..=) "SourceIdentifier" Prelude.<$> sourceIdentifier]))}
+instance JSON.ToJSON SourceProperty where
+  toJSON SourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Auth" Prelude.<$> auth,
+                  (JSON..=) "BuildSpec" Prelude.<$> buildSpec,
+                  (JSON..=) "BuildStatusConfig" Prelude.<$> buildStatusConfig,
+                  (JSON..=) "GitCloneDepth" Prelude.<$> gitCloneDepth,
+                  (JSON..=) "GitSubmodulesConfig" Prelude.<$> gitSubmodulesConfig,
+                  (JSON..=) "InsecureSsl" Prelude.<$> insecureSsl,
+                  (JSON..=) "Location" Prelude.<$> location,
+                  (JSON..=) "ReportBuildStatus" Prelude.<$> reportBuildStatus,
+                  (JSON..=) "SourceIdentifier" Prelude.<$> sourceIdentifier])))
+instance Property "Auth" SourceProperty where
+  type PropertyType "Auth" SourceProperty = SourceAuthProperty
+  set newValue SourceProperty {..}
+    = SourceProperty {auth = Prelude.pure newValue, ..}
+instance Property "BuildSpec" SourceProperty where
+  type PropertyType "BuildSpec" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {buildSpec = Prelude.pure newValue, ..}
+instance Property "BuildStatusConfig" SourceProperty where
+  type PropertyType "BuildStatusConfig" SourceProperty = BuildStatusConfigProperty
+  set newValue SourceProperty {..}
+    = SourceProperty {buildStatusConfig = Prelude.pure newValue, ..}
+instance Property "GitCloneDepth" SourceProperty where
+  type PropertyType "GitCloneDepth" SourceProperty = Value Prelude.Integer
+  set newValue SourceProperty {..}
+    = SourceProperty {gitCloneDepth = Prelude.pure newValue, ..}
+instance Property "GitSubmodulesConfig" SourceProperty where
+  type PropertyType "GitSubmodulesConfig" SourceProperty = GitSubmodulesConfigProperty
+  set newValue SourceProperty {..}
+    = SourceProperty {gitSubmodulesConfig = Prelude.pure newValue, ..}
+instance Property "InsecureSsl" SourceProperty where
+  type PropertyType "InsecureSsl" SourceProperty = Value Prelude.Bool
+  set newValue SourceProperty {..}
+    = SourceProperty {insecureSsl = Prelude.pure newValue, ..}
+instance Property "Location" SourceProperty where
+  type PropertyType "Location" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {location = Prelude.pure newValue, ..}
+instance Property "ReportBuildStatus" SourceProperty where
+  type PropertyType "ReportBuildStatus" SourceProperty = Value Prelude.Bool
+  set newValue SourceProperty {..}
+    = SourceProperty {reportBuildStatus = Prelude.pure newValue, ..}
+instance Property "SourceIdentifier" SourceProperty where
+  type PropertyType "SourceIdentifier" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {sourceIdentifier = Prelude.pure newValue, ..}
+instance Property "Type" SourceProperty where
+  type PropertyType "Type" SourceProperty = Value Prelude.Text
+  set newValue SourceProperty {..}
+    = SourceProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/SourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.SourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceProperty :: Prelude.Type
+instance ToResourceProperties SourceProperty
+instance Prelude.Eq SourceProperty
+instance Prelude.Show SourceProperty
+instance JSON.ToJSON SourceProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs b/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeBuild.Project.VpcConfigProperty (
+        VpcConfigProperty(..), mkVpcConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data VpcConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html>
+    VpcConfigProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html#cfn-codebuild-project-vpcconfig-securitygroupids>
+                       securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html#cfn-codebuild-project-vpcconfig-subnets>
+                       subnets :: (Prelude.Maybe (ValueList Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-vpcconfig.html#cfn-codebuild-project-vpcconfig-vpcid>
+                       vpcId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVpcConfigProperty :: VpcConfigProperty
+mkVpcConfigProperty
+  = VpcConfigProperty
+      {haddock_workaround_ = (), securityGroupIds = Prelude.Nothing,
+       subnets = Prelude.Nothing, vpcId = Prelude.Nothing}
+instance ToResourceProperties VpcConfigProperty where
+  toResourceProperties VpcConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.VpcConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+                            (JSON..=) "Subnets" Prelude.<$> subnets,
+                            (JSON..=) "VpcId" Prelude.<$> vpcId])}
+instance JSON.ToJSON VpcConfigProperty where
+  toJSON VpcConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+               (JSON..=) "Subnets" Prelude.<$> subnets,
+               (JSON..=) "VpcId" Prelude.<$> vpcId]))
+instance Property "SecurityGroupIds" VpcConfigProperty where
+  type PropertyType "SecurityGroupIds" VpcConfigProperty = ValueList Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {securityGroupIds = Prelude.pure newValue, ..}
+instance Property "Subnets" VpcConfigProperty where
+  type PropertyType "Subnets" VpcConfigProperty = ValueList Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {subnets = Prelude.pure newValue, ..}
+instance Property "VpcId" VpcConfigProperty where
+  type PropertyType "VpcId" VpcConfigProperty = Value Prelude.Text
+  set newValue VpcConfigProperty {..}
+    = VpcConfigProperty {vpcId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/VpcConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.VpcConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data VpcConfigProperty :: Prelude.Type
+instance ToResourceProperties VpcConfigProperty
+instance Prelude.Eq VpcConfigProperty
+instance Prelude.Show VpcConfigProperty
+instance JSON.ToJSON VpcConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs b/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.CodeBuild.Project.WebhookFilterProperty (
+        WebhookFilterProperty(..), mkWebhookFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WebhookFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html>
+    WebhookFilterProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html#cfn-codebuild-project-webhookfilter-excludematchedpattern>
+                           excludeMatchedPattern :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html#cfn-codebuild-project-webhookfilter-pattern>
+                           pattern :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-webhookfilter.html#cfn-codebuild-project-webhookfilter-type>
+                           type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWebhookFilterProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> WebhookFilterProperty
+mkWebhookFilterProperty pattern type'
+  = WebhookFilterProperty
+      {haddock_workaround_ = (), pattern = pattern, type' = type',
+       excludeMatchedPattern = Prelude.Nothing}
+instance ToResourceProperties WebhookFilterProperty where
+  toResourceProperties WebhookFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::Project.WebhookFilter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Pattern" JSON..= pattern, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "ExcludeMatchedPattern"
+                                 Prelude.<$> excludeMatchedPattern]))}
+instance JSON.ToJSON WebhookFilterProperty where
+  toJSON WebhookFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Pattern" JSON..= pattern, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "ExcludeMatchedPattern"
+                    Prelude.<$> excludeMatchedPattern])))
+instance Property "ExcludeMatchedPattern" WebhookFilterProperty where
+  type PropertyType "ExcludeMatchedPattern" WebhookFilterProperty = Value Prelude.Bool
+  set newValue WebhookFilterProperty {..}
+    = WebhookFilterProperty
+        {excludeMatchedPattern = Prelude.pure newValue, ..}
+instance Property "Pattern" WebhookFilterProperty where
+  type PropertyType "Pattern" WebhookFilterProperty = Value Prelude.Text
+  set newValue WebhookFilterProperty {..}
+    = WebhookFilterProperty {pattern = newValue, ..}
+instance Property "Type" WebhookFilterProperty where
+  type PropertyType "Type" WebhookFilterProperty = Value Prelude.Text
+  set newValue WebhookFilterProperty {..}
+    = WebhookFilterProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs-boot b/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/Project/WebhookFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.Project.WebhookFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WebhookFilterProperty :: Prelude.Type
+instance ToResourceProperties WebhookFilterProperty
+instance Prelude.Eq WebhookFilterProperty
+instance Prelude.Show WebhookFilterProperty
+instance JSON.ToJSON WebhookFilterProperty
diff --git a/gen/Stratosphere/CodeBuild/ReportGroup.hs b/gen/Stratosphere/CodeBuild/ReportGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/ReportGroup.hs
@@ -0,0 +1,72 @@
+module Stratosphere.CodeBuild.ReportGroup (
+        module Exports, ReportGroup(..), mkReportGroup
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.ReportGroup.ReportExportConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ReportGroup
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html>
+    ReportGroup {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html#cfn-codebuild-reportgroup-deletereports>
+                 deleteReports :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html#cfn-codebuild-reportgroup-exportconfig>
+                 exportConfig :: ReportExportConfigProperty,
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html#cfn-codebuild-reportgroup-name>
+                 name :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html#cfn-codebuild-reportgroup-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-reportgroup.html#cfn-codebuild-reportgroup-type>
+                 type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReportGroup ::
+  ReportExportConfigProperty -> Value Prelude.Text -> ReportGroup
+mkReportGroup exportConfig type'
+  = ReportGroup
+      {haddock_workaround_ = (), exportConfig = exportConfig,
+       type' = type', deleteReports = Prelude.Nothing,
+       name = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties ReportGroup where
+  toResourceProperties ReportGroup {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::ReportGroup",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ExportConfig" JSON..= exportConfig, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "DeleteReports" Prelude.<$> deleteReports,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON ReportGroup where
+  toJSON ReportGroup {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ExportConfig" JSON..= exportConfig, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "DeleteReports" Prelude.<$> deleteReports,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DeleteReports" ReportGroup where
+  type PropertyType "DeleteReports" ReportGroup = Value Prelude.Bool
+  set newValue ReportGroup {..}
+    = ReportGroup {deleteReports = Prelude.pure newValue, ..}
+instance Property "ExportConfig" ReportGroup where
+  type PropertyType "ExportConfig" ReportGroup = ReportExportConfigProperty
+  set newValue ReportGroup {..}
+    = ReportGroup {exportConfig = newValue, ..}
+instance Property "Name" ReportGroup where
+  type PropertyType "Name" ReportGroup = Value Prelude.Text
+  set newValue ReportGroup {..}
+    = ReportGroup {name = Prelude.pure newValue, ..}
+instance Property "Tags" ReportGroup where
+  type PropertyType "Tags" ReportGroup = [Tag]
+  set newValue ReportGroup {..}
+    = ReportGroup {tags = Prelude.pure newValue, ..}
+instance Property "Type" ReportGroup where
+  type PropertyType "Type" ReportGroup = Value Prelude.Text
+  set newValue ReportGroup {..} = ReportGroup {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs b/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.CodeBuild.ReportGroup.ReportExportConfigProperty (
+        module Exports, ReportExportConfigProperty(..),
+        mkReportExportConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeBuild.ReportGroup.S3ReportExportConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ReportExportConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-reportexportconfig.html>
+    ReportExportConfigProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-reportexportconfig.html#cfn-codebuild-reportgroup-reportexportconfig-exportconfigtype>
+                                exportConfigType :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-reportexportconfig.html#cfn-codebuild-reportgroup-reportexportconfig-s3destination>
+                                s3Destination :: (Prelude.Maybe S3ReportExportConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReportExportConfigProperty ::
+  Value Prelude.Text -> ReportExportConfigProperty
+mkReportExportConfigProperty exportConfigType
+  = ReportExportConfigProperty
+      {haddock_workaround_ = (), exportConfigType = exportConfigType,
+       s3Destination = Prelude.Nothing}
+instance ToResourceProperties ReportExportConfigProperty where
+  toResourceProperties ReportExportConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::ReportGroup.ReportExportConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ExportConfigType" JSON..= exportConfigType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "S3Destination" Prelude.<$> s3Destination]))}
+instance JSON.ToJSON ReportExportConfigProperty where
+  toJSON ReportExportConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ExportConfigType" JSON..= exportConfigType]
+              (Prelude.catMaybes
+                 [(JSON..=) "S3Destination" Prelude.<$> s3Destination])))
+instance Property "ExportConfigType" ReportExportConfigProperty where
+  type PropertyType "ExportConfigType" ReportExportConfigProperty = Value Prelude.Text
+  set newValue ReportExportConfigProperty {..}
+    = ReportExportConfigProperty {exportConfigType = newValue, ..}
+instance Property "S3Destination" ReportExportConfigProperty where
+  type PropertyType "S3Destination" ReportExportConfigProperty = S3ReportExportConfigProperty
+  set newValue ReportExportConfigProperty {..}
+    = ReportExportConfigProperty
+        {s3Destination = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/ReportGroup/ReportExportConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.ReportGroup.ReportExportConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ReportExportConfigProperty :: Prelude.Type
+instance ToResourceProperties ReportExportConfigProperty
+instance Prelude.Eq ReportExportConfigProperty
+instance Prelude.Show ReportExportConfigProperty
+instance JSON.ToJSON ReportExportConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs b/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs
@@ -0,0 +1,87 @@
+module Stratosphere.CodeBuild.ReportGroup.S3ReportExportConfigProperty (
+        S3ReportExportConfigProperty(..), mkS3ReportExportConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3ReportExportConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html>
+    S3ReportExportConfigProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-bucket>
+                                  bucket :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-bucketowner>
+                                  bucketOwner :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-encryptiondisabled>
+                                  encryptionDisabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-encryptionkey>
+                                  encryptionKey :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-packaging>
+                                  packaging :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-reportgroup-s3reportexportconfig.html#cfn-codebuild-reportgroup-s3reportexportconfig-path>
+                                  path :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3ReportExportConfigProperty ::
+  Value Prelude.Text -> S3ReportExportConfigProperty
+mkS3ReportExportConfigProperty bucket
+  = S3ReportExportConfigProperty
+      {haddock_workaround_ = (), bucket = bucket,
+       bucketOwner = Prelude.Nothing,
+       encryptionDisabled = Prelude.Nothing,
+       encryptionKey = Prelude.Nothing, packaging = Prelude.Nothing,
+       path = Prelude.Nothing}
+instance ToResourceProperties S3ReportExportConfigProperty where
+  toResourceProperties S3ReportExportConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::ReportGroup.S3ReportExportConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Bucket" JSON..= bucket]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BucketOwner" Prelude.<$> bucketOwner,
+                               (JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                               (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                               (JSON..=) "Packaging" Prelude.<$> packaging,
+                               (JSON..=) "Path" Prelude.<$> path]))}
+instance JSON.ToJSON S3ReportExportConfigProperty where
+  toJSON S3ReportExportConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Bucket" JSON..= bucket]
+              (Prelude.catMaybes
+                 [(JSON..=) "BucketOwner" Prelude.<$> bucketOwner,
+                  (JSON..=) "EncryptionDisabled" Prelude.<$> encryptionDisabled,
+                  (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                  (JSON..=) "Packaging" Prelude.<$> packaging,
+                  (JSON..=) "Path" Prelude.<$> path])))
+instance Property "Bucket" S3ReportExportConfigProperty where
+  type PropertyType "Bucket" S3ReportExportConfigProperty = Value Prelude.Text
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty {bucket = newValue, ..}
+instance Property "BucketOwner" S3ReportExportConfigProperty where
+  type PropertyType "BucketOwner" S3ReportExportConfigProperty = Value Prelude.Text
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty
+        {bucketOwner = Prelude.pure newValue, ..}
+instance Property "EncryptionDisabled" S3ReportExportConfigProperty where
+  type PropertyType "EncryptionDisabled" S3ReportExportConfigProperty = Value Prelude.Bool
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty
+        {encryptionDisabled = Prelude.pure newValue, ..}
+instance Property "EncryptionKey" S3ReportExportConfigProperty where
+  type PropertyType "EncryptionKey" S3ReportExportConfigProperty = Value Prelude.Text
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty
+        {encryptionKey = Prelude.pure newValue, ..}
+instance Property "Packaging" S3ReportExportConfigProperty where
+  type PropertyType "Packaging" S3ReportExportConfigProperty = Value Prelude.Text
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty
+        {packaging = Prelude.pure newValue, ..}
+instance Property "Path" S3ReportExportConfigProperty where
+  type PropertyType "Path" S3ReportExportConfigProperty = Value Prelude.Text
+  set newValue S3ReportExportConfigProperty {..}
+    = S3ReportExportConfigProperty {path = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs-boot b/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/ReportGroup/S3ReportExportConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeBuild.ReportGroup.S3ReportExportConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3ReportExportConfigProperty :: Prelude.Type
+instance ToResourceProperties S3ReportExportConfigProperty
+instance Prelude.Eq S3ReportExportConfigProperty
+instance Prelude.Show S3ReportExportConfigProperty
+instance JSON.ToJSON S3ReportExportConfigProperty
diff --git a/gen/Stratosphere/CodeBuild/SourceCredential.hs b/gen/Stratosphere/CodeBuild/SourceCredential.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeBuild/SourceCredential.hs
@@ -0,0 +1,61 @@
+module Stratosphere.CodeBuild.SourceCredential (
+        SourceCredential(..), mkSourceCredential
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceCredential
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html>
+    SourceCredential {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html#cfn-codebuild-sourcecredential-authtype>
+                      authType :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html#cfn-codebuild-sourcecredential-servertype>
+                      serverType :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html#cfn-codebuild-sourcecredential-token>
+                      token :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-sourcecredential.html#cfn-codebuild-sourcecredential-username>
+                      username :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceCredential ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> SourceCredential
+mkSourceCredential authType serverType token
+  = SourceCredential
+      {haddock_workaround_ = (), authType = authType,
+       serverType = serverType, token = token, username = Prelude.Nothing}
+instance ToResourceProperties SourceCredential where
+  toResourceProperties SourceCredential {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeBuild::SourceCredential",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AuthType" JSON..= authType, "ServerType" JSON..= serverType,
+                            "Token" JSON..= token]
+                           (Prelude.catMaybes [(JSON..=) "Username" Prelude.<$> username]))}
+instance JSON.ToJSON SourceCredential where
+  toJSON SourceCredential {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AuthType" JSON..= authType, "ServerType" JSON..= serverType,
+               "Token" JSON..= token]
+              (Prelude.catMaybes [(JSON..=) "Username" Prelude.<$> username])))
+instance Property "AuthType" SourceCredential where
+  type PropertyType "AuthType" SourceCredential = Value Prelude.Text
+  set newValue SourceCredential {..}
+    = SourceCredential {authType = newValue, ..}
+instance Property "ServerType" SourceCredential where
+  type PropertyType "ServerType" SourceCredential = Value Prelude.Text
+  set newValue SourceCredential {..}
+    = SourceCredential {serverType = newValue, ..}
+instance Property "Token" SourceCredential where
+  type PropertyType "Token" SourceCredential = Value Prelude.Text
+  set newValue SourceCredential {..}
+    = SourceCredential {token = newValue, ..}
+instance Property "Username" SourceCredential where
+  type PropertyType "Username" SourceCredential = Value Prelude.Text
+  set newValue SourceCredential {..}
+    = SourceCredential {username = Prelude.pure newValue, ..}
diff --git a/stratosphere-codebuild.cabal b/stratosphere-codebuild.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-codebuild.cabal
@@ -0,0 +1,108 @@
+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-codebuild
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS CodeBuild.
+description:    Integration into stratosphere to generate resources and properties for AWS CodeBuild
+category:       AWS, Cloud, CodeBuild
+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.CodeBuild.Fleet
+      Stratosphere.CodeBuild.Fleet.ComputeConfigurationProperty
+      Stratosphere.CodeBuild.Fleet.FleetProxyRuleProperty
+      Stratosphere.CodeBuild.Fleet.ProxyConfigurationProperty
+      Stratosphere.CodeBuild.Fleet.ScalingConfigurationInputProperty
+      Stratosphere.CodeBuild.Fleet.TargetTrackingScalingConfigurationProperty
+      Stratosphere.CodeBuild.Fleet.VpcConfigProperty
+      Stratosphere.CodeBuild.Project
+      Stratosphere.CodeBuild.Project.ArtifactsProperty
+      Stratosphere.CodeBuild.Project.BatchRestrictionsProperty
+      Stratosphere.CodeBuild.Project.BuildStatusConfigProperty
+      Stratosphere.CodeBuild.Project.CloudWatchLogsConfigProperty
+      Stratosphere.CodeBuild.Project.DockerServerProperty
+      Stratosphere.CodeBuild.Project.EnvironmentProperty
+      Stratosphere.CodeBuild.Project.EnvironmentVariableProperty
+      Stratosphere.CodeBuild.Project.FilterGroupProperty
+      Stratosphere.CodeBuild.Project.GitSubmodulesConfigProperty
+      Stratosphere.CodeBuild.Project.LogsConfigProperty
+      Stratosphere.CodeBuild.Project.ProjectBuildBatchConfigProperty
+      Stratosphere.CodeBuild.Project.ProjectCacheProperty
+      Stratosphere.CodeBuild.Project.ProjectFileSystemLocationProperty
+      Stratosphere.CodeBuild.Project.ProjectFleetProperty
+      Stratosphere.CodeBuild.Project.ProjectSourceVersionProperty
+      Stratosphere.CodeBuild.Project.ProjectTriggersProperty
+      Stratosphere.CodeBuild.Project.PullRequestBuildPolicyProperty
+      Stratosphere.CodeBuild.Project.RegistryCredentialProperty
+      Stratosphere.CodeBuild.Project.S3LogsConfigProperty
+      Stratosphere.CodeBuild.Project.ScopeConfigurationProperty
+      Stratosphere.CodeBuild.Project.SourceAuthProperty
+      Stratosphere.CodeBuild.Project.SourceProperty
+      Stratosphere.CodeBuild.Project.VpcConfigProperty
+      Stratosphere.CodeBuild.Project.WebhookFilterProperty
+      Stratosphere.CodeBuild.ReportGroup
+      Stratosphere.CodeBuild.ReportGroup.ReportExportConfigProperty
+      Stratosphere.CodeBuild.ReportGroup.S3ReportExportConfigProperty
+      Stratosphere.CodeBuild.SourceCredential
+  other-modules:
+      Paths_stratosphere_codebuild
+  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
