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/CustomerProfiles/CalculatedAttributeDefinition.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition.hs
@@ -0,0 +1,122 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition (
+        module Exports, CalculatedAttributeDefinition(..),
+        mkCalculatedAttributeDefinition
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ConditionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data CalculatedAttributeDefinition
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html>
+    CalculatedAttributeDefinition {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-attributedetails>
+                                   attributeDetails :: AttributeDetailsProperty,
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-calculatedattributename>
+                                   calculatedAttributeName :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-conditions>
+                                   conditions :: (Prelude.Maybe ConditionsProperty),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-description>
+                                   description :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-displayname>
+                                   displayName :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-domainname>
+                                   domainName :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-statistic>
+                                   statistic :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-tags>
+                                   tags :: (Prelude.Maybe [Tag]),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-calculatedattributedefinition.html#cfn-customerprofiles-calculatedattributedefinition-usehistoricaldata>
+                                   useHistoricalData :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCalculatedAttributeDefinition ::
+  AttributeDetailsProperty
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text -> CalculatedAttributeDefinition
+mkCalculatedAttributeDefinition
+  attributeDetails
+  calculatedAttributeName
+  domainName
+  statistic
+  = CalculatedAttributeDefinition
+      {haddock_workaround_ = (), attributeDetails = attributeDetails,
+       calculatedAttributeName = calculatedAttributeName,
+       domainName = domainName, statistic = statistic,
+       conditions = Prelude.Nothing, description = Prelude.Nothing,
+       displayName = Prelude.Nothing, tags = Prelude.Nothing,
+       useHistoricalData = Prelude.Nothing}
+instance ToResourceProperties CalculatedAttributeDefinition where
+  toResourceProperties CalculatedAttributeDefinition {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AttributeDetails" JSON..= attributeDetails,
+                            "CalculatedAttributeName" JSON..= calculatedAttributeName,
+                            "DomainName" JSON..= domainName, "Statistic" JSON..= statistic]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Conditions" Prelude.<$> conditions,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DisplayName" Prelude.<$> displayName,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "UseHistoricalData" Prelude.<$> useHistoricalData]))}
+instance JSON.ToJSON CalculatedAttributeDefinition where
+  toJSON CalculatedAttributeDefinition {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AttributeDetails" JSON..= attributeDetails,
+               "CalculatedAttributeName" JSON..= calculatedAttributeName,
+               "DomainName" JSON..= domainName, "Statistic" JSON..= statistic]
+              (Prelude.catMaybes
+                 [(JSON..=) "Conditions" Prelude.<$> conditions,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DisplayName" Prelude.<$> displayName,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "UseHistoricalData" Prelude.<$> useHistoricalData])))
+instance Property "AttributeDetails" CalculatedAttributeDefinition where
+  type PropertyType "AttributeDetails" CalculatedAttributeDefinition = AttributeDetailsProperty
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition {attributeDetails = newValue, ..}
+instance Property "CalculatedAttributeName" CalculatedAttributeDefinition where
+  type PropertyType "CalculatedAttributeName" CalculatedAttributeDefinition = Value Prelude.Text
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition
+        {calculatedAttributeName = newValue, ..}
+instance Property "Conditions" CalculatedAttributeDefinition where
+  type PropertyType "Conditions" CalculatedAttributeDefinition = ConditionsProperty
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition
+        {conditions = Prelude.pure newValue, ..}
+instance Property "Description" CalculatedAttributeDefinition where
+  type PropertyType "Description" CalculatedAttributeDefinition = Value Prelude.Text
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition
+        {description = Prelude.pure newValue, ..}
+instance Property "DisplayName" CalculatedAttributeDefinition where
+  type PropertyType "DisplayName" CalculatedAttributeDefinition = Value Prelude.Text
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition
+        {displayName = Prelude.pure newValue, ..}
+instance Property "DomainName" CalculatedAttributeDefinition where
+  type PropertyType "DomainName" CalculatedAttributeDefinition = Value Prelude.Text
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition {domainName = newValue, ..}
+instance Property "Statistic" CalculatedAttributeDefinition where
+  type PropertyType "Statistic" CalculatedAttributeDefinition = Value Prelude.Text
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition {statistic = newValue, ..}
+instance Property "Tags" CalculatedAttributeDefinition where
+  type PropertyType "Tags" CalculatedAttributeDefinition = [Tag]
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition {tags = Prelude.pure newValue, ..}
+instance Property "UseHistoricalData" CalculatedAttributeDefinition where
+  type PropertyType "UseHistoricalData" CalculatedAttributeDefinition = Value Prelude.Bool
+  set newValue CalculatedAttributeDefinition {..}
+    = CalculatedAttributeDefinition
+        {useHistoricalData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeDetailsProperty (
+        module Exports, AttributeDetailsProperty(..),
+        mkAttributeDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeItemProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributeDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-attributedetails.html>
+    AttributeDetailsProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-attributedetails.html#cfn-customerprofiles-calculatedattributedefinition-attributedetails-attributes>
+                              attributes :: [AttributeItemProperty],
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-attributedetails.html#cfn-customerprofiles-calculatedattributedefinition-attributedetails-expression>
+                              expression :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributeDetailsProperty ::
+  [AttributeItemProperty]
+  -> Value Prelude.Text -> AttributeDetailsProperty
+mkAttributeDetailsProperty attributes expression
+  = AttributeDetailsProperty
+      {haddock_workaround_ = (), attributes = attributes,
+       expression = expression}
+instance ToResourceProperties AttributeDetailsProperty where
+  toResourceProperties AttributeDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.AttributeDetails",
+         supportsTags = Prelude.False,
+         properties = ["Attributes" JSON..= attributes,
+                       "Expression" JSON..= expression]}
+instance JSON.ToJSON AttributeDetailsProperty where
+  toJSON AttributeDetailsProperty {..}
+    = JSON.object
+        ["Attributes" JSON..= attributes, "Expression" JSON..= expression]
+instance Property "Attributes" AttributeDetailsProperty where
+  type PropertyType "Attributes" AttributeDetailsProperty = [AttributeItemProperty]
+  set newValue AttributeDetailsProperty {..}
+    = AttributeDetailsProperty {attributes = newValue, ..}
+instance Property "Expression" AttributeDetailsProperty where
+  type PropertyType "Expression" AttributeDetailsProperty = Value Prelude.Text
+  set newValue AttributeDetailsProperty {..}
+    = AttributeDetailsProperty {expression = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributeDetailsProperty :: Prelude.Type
+instance ToResourceProperties AttributeDetailsProperty
+instance Prelude.Eq AttributeDetailsProperty
+instance Prelude.Show AttributeDetailsProperty
+instance JSON.ToJSON AttributeDetailsProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeItemProperty (
+        AttributeItemProperty(..), mkAttributeItemProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributeItemProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-attributeitem.html>
+    AttributeItemProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-attributeitem.html#cfn-customerprofiles-calculatedattributedefinition-attributeitem-name>
+                           name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributeItemProperty ::
+  Value Prelude.Text -> AttributeItemProperty
+mkAttributeItemProperty name
+  = AttributeItemProperty {haddock_workaround_ = (), name = name}
+instance ToResourceProperties AttributeItemProperty where
+  toResourceProperties AttributeItemProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.AttributeItem",
+         supportsTags = Prelude.False, properties = ["Name" JSON..= name]}
+instance JSON.ToJSON AttributeItemProperty where
+  toJSON AttributeItemProperty {..}
+    = JSON.object ["Name" JSON..= name]
+instance Property "Name" AttributeItemProperty where
+  type PropertyType "Name" AttributeItemProperty = Value Prelude.Text
+  set newValue AttributeItemProperty {..}
+    = AttributeItemProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/AttributeItemProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeItemProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributeItemProperty :: Prelude.Type
+instance ToResourceProperties AttributeItemProperty
+instance Prelude.Eq AttributeItemProperty
+instance Prelude.Show AttributeItemProperty
+instance JSON.ToJSON AttributeItemProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ConditionsProperty (
+        module Exports, ConditionsProperty(..), mkConditionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.RangeProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ThresholdProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConditionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-conditions.html>
+    ConditionsProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-conditions.html#cfn-customerprofiles-calculatedattributedefinition-conditions-objectcount>
+                        objectCount :: (Prelude.Maybe (Value Prelude.Integer)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-conditions.html#cfn-customerprofiles-calculatedattributedefinition-conditions-range>
+                        range :: (Prelude.Maybe RangeProperty),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-conditions.html#cfn-customerprofiles-calculatedattributedefinition-conditions-threshold>
+                        threshold :: (Prelude.Maybe ThresholdProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConditionsProperty :: ConditionsProperty
+mkConditionsProperty
+  = ConditionsProperty
+      {haddock_workaround_ = (), objectCount = Prelude.Nothing,
+       range = Prelude.Nothing, threshold = Prelude.Nothing}
+instance ToResourceProperties ConditionsProperty where
+  toResourceProperties ConditionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.Conditions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ObjectCount" Prelude.<$> objectCount,
+                            (JSON..=) "Range" Prelude.<$> range,
+                            (JSON..=) "Threshold" Prelude.<$> threshold])}
+instance JSON.ToJSON ConditionsProperty where
+  toJSON ConditionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ObjectCount" Prelude.<$> objectCount,
+               (JSON..=) "Range" Prelude.<$> range,
+               (JSON..=) "Threshold" Prelude.<$> threshold]))
+instance Property "ObjectCount" ConditionsProperty where
+  type PropertyType "ObjectCount" ConditionsProperty = Value Prelude.Integer
+  set newValue ConditionsProperty {..}
+    = ConditionsProperty {objectCount = Prelude.pure newValue, ..}
+instance Property "Range" ConditionsProperty where
+  type PropertyType "Range" ConditionsProperty = RangeProperty
+  set newValue ConditionsProperty {..}
+    = ConditionsProperty {range = Prelude.pure newValue, ..}
+instance Property "Threshold" ConditionsProperty where
+  type PropertyType "Threshold" ConditionsProperty = ThresholdProperty
+  set newValue ConditionsProperty {..}
+    = ConditionsProperty {threshold = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ConditionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ConditionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConditionsProperty :: Prelude.Type
+instance ToResourceProperties ConditionsProperty
+instance Prelude.Eq ConditionsProperty
+instance Prelude.Show ConditionsProperty
+instance JSON.ToJSON ConditionsProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs
@@ -0,0 +1,74 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.RangeProperty (
+        module Exports, RangeProperty(..), mkRangeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ValueRangeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RangeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html>
+    RangeProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html#cfn-customerprofiles-calculatedattributedefinition-range-timestampformat>
+                   timestampFormat :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html#cfn-customerprofiles-calculatedattributedefinition-range-timestampsource>
+                   timestampSource :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html#cfn-customerprofiles-calculatedattributedefinition-range-unit>
+                   unit :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html#cfn-customerprofiles-calculatedattributedefinition-range-value>
+                   value :: (Prelude.Maybe (Value Prelude.Integer)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-range.html#cfn-customerprofiles-calculatedattributedefinition-range-valuerange>
+                   valueRange :: (Prelude.Maybe ValueRangeProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRangeProperty :: Value Prelude.Text -> RangeProperty
+mkRangeProperty unit
+  = RangeProperty
+      {haddock_workaround_ = (), unit = unit,
+       timestampFormat = Prelude.Nothing,
+       timestampSource = Prelude.Nothing, value = Prelude.Nothing,
+       valueRange = Prelude.Nothing}
+instance ToResourceProperties RangeProperty where
+  toResourceProperties RangeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.Range",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Unit" JSON..= unit]
+                           (Prelude.catMaybes
+                              [(JSON..=) "TimestampFormat" Prelude.<$> timestampFormat,
+                               (JSON..=) "TimestampSource" Prelude.<$> timestampSource,
+                               (JSON..=) "Value" Prelude.<$> value,
+                               (JSON..=) "ValueRange" Prelude.<$> valueRange]))}
+instance JSON.ToJSON RangeProperty where
+  toJSON RangeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Unit" JSON..= unit]
+              (Prelude.catMaybes
+                 [(JSON..=) "TimestampFormat" Prelude.<$> timestampFormat,
+                  (JSON..=) "TimestampSource" Prelude.<$> timestampSource,
+                  (JSON..=) "Value" Prelude.<$> value,
+                  (JSON..=) "ValueRange" Prelude.<$> valueRange])))
+instance Property "TimestampFormat" RangeProperty where
+  type PropertyType "TimestampFormat" RangeProperty = Value Prelude.Text
+  set newValue RangeProperty {..}
+    = RangeProperty {timestampFormat = Prelude.pure newValue, ..}
+instance Property "TimestampSource" RangeProperty where
+  type PropertyType "TimestampSource" RangeProperty = Value Prelude.Text
+  set newValue RangeProperty {..}
+    = RangeProperty {timestampSource = Prelude.pure newValue, ..}
+instance Property "Unit" RangeProperty where
+  type PropertyType "Unit" RangeProperty = Value Prelude.Text
+  set newValue RangeProperty {..}
+    = RangeProperty {unit = newValue, ..}
+instance Property "Value" RangeProperty where
+  type PropertyType "Value" RangeProperty = Value Prelude.Integer
+  set newValue RangeProperty {..}
+    = RangeProperty {value = Prelude.pure newValue, ..}
+instance Property "ValueRange" RangeProperty where
+  type PropertyType "ValueRange" RangeProperty = ValueRangeProperty
+  set newValue RangeProperty {..}
+    = RangeProperty {valueRange = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/RangeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.RangeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RangeProperty :: Prelude.Type
+instance ToResourceProperties RangeProperty
+instance Prelude.Eq RangeProperty
+instance Prelude.Show RangeProperty
+instance JSON.ToJSON RangeProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ReadinessProperty (
+        ReadinessProperty(..), mkReadinessProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ReadinessProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-readiness.html>
+    ReadinessProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-readiness.html#cfn-customerprofiles-calculatedattributedefinition-readiness-message>
+                       message :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-readiness.html#cfn-customerprofiles-calculatedattributedefinition-readiness-progresspercentage>
+                       progressPercentage :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReadinessProperty :: ReadinessProperty
+mkReadinessProperty
+  = ReadinessProperty
+      {haddock_workaround_ = (), message = Prelude.Nothing,
+       progressPercentage = Prelude.Nothing}
+instance ToResourceProperties ReadinessProperty where
+  toResourceProperties ReadinessProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.Readiness",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Message" Prelude.<$> message,
+                            (JSON..=) "ProgressPercentage" Prelude.<$> progressPercentage])}
+instance JSON.ToJSON ReadinessProperty where
+  toJSON ReadinessProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Message" Prelude.<$> message,
+               (JSON..=) "ProgressPercentage" Prelude.<$> progressPercentage]))
+instance Property "Message" ReadinessProperty where
+  type PropertyType "Message" ReadinessProperty = Value Prelude.Text
+  set newValue ReadinessProperty {..}
+    = ReadinessProperty {message = Prelude.pure newValue, ..}
+instance Property "ProgressPercentage" ReadinessProperty where
+  type PropertyType "ProgressPercentage" ReadinessProperty = Value Prelude.Integer
+  set newValue ReadinessProperty {..}
+    = ReadinessProperty
+        {progressPercentage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ReadinessProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ReadinessProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ReadinessProperty :: Prelude.Type
+instance ToResourceProperties ReadinessProperty
+instance Prelude.Eq ReadinessProperty
+instance Prelude.Show ReadinessProperty
+instance JSON.ToJSON ReadinessProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ThresholdProperty (
+        ThresholdProperty(..), mkThresholdProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ThresholdProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-threshold.html>
+    ThresholdProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-threshold.html#cfn-customerprofiles-calculatedattributedefinition-threshold-operator>
+                       operator :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-threshold.html#cfn-customerprofiles-calculatedattributedefinition-threshold-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkThresholdProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ThresholdProperty
+mkThresholdProperty operator value
+  = ThresholdProperty
+      {haddock_workaround_ = (), operator = operator, value = value}
+instance ToResourceProperties ThresholdProperty where
+  toResourceProperties ThresholdProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.Threshold",
+         supportsTags = Prelude.False,
+         properties = ["Operator" JSON..= operator, "Value" JSON..= value]}
+instance JSON.ToJSON ThresholdProperty where
+  toJSON ThresholdProperty {..}
+    = JSON.object ["Operator" JSON..= operator, "Value" JSON..= value]
+instance Property "Operator" ThresholdProperty where
+  type PropertyType "Operator" ThresholdProperty = Value Prelude.Text
+  set newValue ThresholdProperty {..}
+    = ThresholdProperty {operator = newValue, ..}
+instance Property "Value" ThresholdProperty where
+  type PropertyType "Value" ThresholdProperty = Value Prelude.Text
+  set newValue ThresholdProperty {..}
+    = ThresholdProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ThresholdProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ThresholdProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ThresholdProperty :: Prelude.Type
+instance ToResourceProperties ThresholdProperty
+instance Prelude.Eq ThresholdProperty
+instance Prelude.Show ThresholdProperty
+instance JSON.ToJSON ThresholdProperty
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ValueRangeProperty (
+        ValueRangeProperty(..), mkValueRangeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ValueRangeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-valuerange.html>
+    ValueRangeProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-valuerange.html#cfn-customerprofiles-calculatedattributedefinition-valuerange-end>
+                        end :: (Value Prelude.Integer),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-calculatedattributedefinition-valuerange.html#cfn-customerprofiles-calculatedattributedefinition-valuerange-start>
+                        start :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkValueRangeProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> ValueRangeProperty
+mkValueRangeProperty end start
+  = ValueRangeProperty
+      {haddock_workaround_ = (), end = end, start = start}
+instance ToResourceProperties ValueRangeProperty where
+  toResourceProperties ValueRangeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::CalculatedAttributeDefinition.ValueRange",
+         supportsTags = Prelude.False,
+         properties = ["End" JSON..= end, "Start" JSON..= start]}
+instance JSON.ToJSON ValueRangeProperty where
+  toJSON ValueRangeProperty {..}
+    = JSON.object ["End" JSON..= end, "Start" JSON..= start]
+instance Property "End" ValueRangeProperty where
+  type PropertyType "End" ValueRangeProperty = Value Prelude.Integer
+  set newValue ValueRangeProperty {..}
+    = ValueRangeProperty {end = newValue, ..}
+instance Property "Start" ValueRangeProperty where
+  type PropertyType "Start" ValueRangeProperty = Value Prelude.Integer
+  set newValue ValueRangeProperty {..}
+    = ValueRangeProperty {start = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/CalculatedAttributeDefinition/ValueRangeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ValueRangeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ValueRangeProperty :: Prelude.Type
+instance ToResourceProperties ValueRangeProperty
+instance Prelude.Eq ValueRangeProperty
+instance Prelude.Show ValueRangeProperty
+instance JSON.ToJSON ValueRangeProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain.hs b/gen/Stratosphere/CustomerProfiles/Domain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain.hs
@@ -0,0 +1,92 @@
+module Stratosphere.CustomerProfiles.Domain (
+        module Exports, Domain(..), mkDomain
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.MatchingProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.RuleBasedMatchingProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Domain
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html>
+    Domain {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-deadletterqueueurl>
+            deadLetterQueueUrl :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-defaultencryptionkey>
+            defaultEncryptionKey :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-defaultexpirationdays>
+            defaultExpirationDays :: (Value Prelude.Integer),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-domainname>
+            domainName :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-matching>
+            matching :: (Prelude.Maybe MatchingProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-rulebasedmatching>
+            ruleBasedMatching :: (Prelude.Maybe RuleBasedMatchingProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-domain.html#cfn-customerprofiles-domain-tags>
+            tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomain :: Value Prelude.Integer -> Value Prelude.Text -> Domain
+mkDomain defaultExpirationDays domainName
+  = Domain
+      {haddock_workaround_ = (),
+       defaultExpirationDays = defaultExpirationDays,
+       domainName = domainName, deadLetterQueueUrl = Prelude.Nothing,
+       defaultEncryptionKey = Prelude.Nothing, matching = Prelude.Nothing,
+       ruleBasedMatching = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Domain where
+  toResourceProperties Domain {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DefaultExpirationDays" JSON..= defaultExpirationDays,
+                            "DomainName" JSON..= domainName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DeadLetterQueueUrl" Prelude.<$> deadLetterQueueUrl,
+                               (JSON..=) "DefaultEncryptionKey" Prelude.<$> defaultEncryptionKey,
+                               (JSON..=) "Matching" Prelude.<$> matching,
+                               (JSON..=) "RuleBasedMatching" Prelude.<$> ruleBasedMatching,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Domain where
+  toJSON Domain {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DefaultExpirationDays" JSON..= defaultExpirationDays,
+               "DomainName" JSON..= domainName]
+              (Prelude.catMaybes
+                 [(JSON..=) "DeadLetterQueueUrl" Prelude.<$> deadLetterQueueUrl,
+                  (JSON..=) "DefaultEncryptionKey" Prelude.<$> defaultEncryptionKey,
+                  (JSON..=) "Matching" Prelude.<$> matching,
+                  (JSON..=) "RuleBasedMatching" Prelude.<$> ruleBasedMatching,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DeadLetterQueueUrl" Domain where
+  type PropertyType "DeadLetterQueueUrl" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {deadLetterQueueUrl = Prelude.pure newValue, ..}
+instance Property "DefaultEncryptionKey" Domain where
+  type PropertyType "DefaultEncryptionKey" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {defaultEncryptionKey = Prelude.pure newValue, ..}
+instance Property "DefaultExpirationDays" Domain where
+  type PropertyType "DefaultExpirationDays" Domain = Value Prelude.Integer
+  set newValue Domain {..}
+    = Domain {defaultExpirationDays = newValue, ..}
+instance Property "DomainName" Domain where
+  type PropertyType "DomainName" Domain = Value Prelude.Text
+  set newValue Domain {..} = Domain {domainName = newValue, ..}
+instance Property "Matching" Domain where
+  type PropertyType "Matching" Domain = MatchingProperty
+  set newValue Domain {..}
+    = Domain {matching = Prelude.pure newValue, ..}
+instance Property "RuleBasedMatching" Domain where
+  type PropertyType "RuleBasedMatching" Domain = RuleBasedMatchingProperty
+  set newValue Domain {..}
+    = Domain {ruleBasedMatching = Prelude.pure newValue, ..}
+instance Property "Tags" Domain where
+  type PropertyType "Tags" Domain = [Tag]
+  set newValue Domain {..}
+    = Domain {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.CustomerProfiles.Domain.AttributeTypesSelectorProperty (
+        AttributeTypesSelectorProperty(..),
+        mkAttributeTypesSelectorProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributeTypesSelectorProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-attributetypesselector.html>
+    AttributeTypesSelectorProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-attributetypesselector.html#cfn-customerprofiles-domain-attributetypesselector-address>
+                                    address :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-attributetypesselector.html#cfn-customerprofiles-domain-attributetypesselector-attributematchingmodel>
+                                    attributeMatchingModel :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-attributetypesselector.html#cfn-customerprofiles-domain-attributetypesselector-emailaddress>
+                                    emailAddress :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-attributetypesselector.html#cfn-customerprofiles-domain-attributetypesselector-phonenumber>
+                                    phoneNumber :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributeTypesSelectorProperty ::
+  Value Prelude.Text -> AttributeTypesSelectorProperty
+mkAttributeTypesSelectorProperty attributeMatchingModel
+  = AttributeTypesSelectorProperty
+      {haddock_workaround_ = (),
+       attributeMatchingModel = attributeMatchingModel,
+       address = Prelude.Nothing, emailAddress = Prelude.Nothing,
+       phoneNumber = Prelude.Nothing}
+instance ToResourceProperties AttributeTypesSelectorProperty where
+  toResourceProperties AttributeTypesSelectorProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.AttributeTypesSelector",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AttributeMatchingModel" JSON..= attributeMatchingModel]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Address" Prelude.<$> address,
+                               (JSON..=) "EmailAddress" Prelude.<$> emailAddress,
+                               (JSON..=) "PhoneNumber" Prelude.<$> phoneNumber]))}
+instance JSON.ToJSON AttributeTypesSelectorProperty where
+  toJSON AttributeTypesSelectorProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AttributeMatchingModel" JSON..= attributeMatchingModel]
+              (Prelude.catMaybes
+                 [(JSON..=) "Address" Prelude.<$> address,
+                  (JSON..=) "EmailAddress" Prelude.<$> emailAddress,
+                  (JSON..=) "PhoneNumber" Prelude.<$> phoneNumber])))
+instance Property "Address" AttributeTypesSelectorProperty where
+  type PropertyType "Address" AttributeTypesSelectorProperty = ValueList Prelude.Text
+  set newValue AttributeTypesSelectorProperty {..}
+    = AttributeTypesSelectorProperty
+        {address = Prelude.pure newValue, ..}
+instance Property "AttributeMatchingModel" AttributeTypesSelectorProperty where
+  type PropertyType "AttributeMatchingModel" AttributeTypesSelectorProperty = Value Prelude.Text
+  set newValue AttributeTypesSelectorProperty {..}
+    = AttributeTypesSelectorProperty
+        {attributeMatchingModel = newValue, ..}
+instance Property "EmailAddress" AttributeTypesSelectorProperty where
+  type PropertyType "EmailAddress" AttributeTypesSelectorProperty = ValueList Prelude.Text
+  set newValue AttributeTypesSelectorProperty {..}
+    = AttributeTypesSelectorProperty
+        {emailAddress = Prelude.pure newValue, ..}
+instance Property "PhoneNumber" AttributeTypesSelectorProperty where
+  type PropertyType "PhoneNumber" AttributeTypesSelectorProperty = ValueList Prelude.Text
+  set newValue AttributeTypesSelectorProperty {..}
+    = AttributeTypesSelectorProperty
+        {phoneNumber = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/AttributeTypesSelectorProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.AttributeTypesSelectorProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributeTypesSelectorProperty :: Prelude.Type
+instance ToResourceProperties AttributeTypesSelectorProperty
+instance Prelude.Eq AttributeTypesSelectorProperty
+instance Prelude.Show AttributeTypesSelectorProperty
+instance JSON.ToJSON AttributeTypesSelectorProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.CustomerProfiles.Domain.AutoMergingProperty (
+        module Exports, AutoMergingProperty(..), mkAutoMergingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.ConflictResolutionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.ConsolidationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoMergingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-automerging.html>
+    AutoMergingProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-automerging.html#cfn-customerprofiles-domain-automerging-conflictresolution>
+                         conflictResolution :: (Prelude.Maybe ConflictResolutionProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-automerging.html#cfn-customerprofiles-domain-automerging-consolidation>
+                         consolidation :: (Prelude.Maybe ConsolidationProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-automerging.html#cfn-customerprofiles-domain-automerging-enabled>
+                         enabled :: (Value Prelude.Bool),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-automerging.html#cfn-customerprofiles-domain-automerging-minallowedconfidencescoreformerging>
+                         minAllowedConfidenceScoreForMerging :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoMergingProperty :: Value Prelude.Bool -> AutoMergingProperty
+mkAutoMergingProperty enabled
+  = AutoMergingProperty
+      {haddock_workaround_ = (), enabled = enabled,
+       conflictResolution = Prelude.Nothing,
+       consolidation = Prelude.Nothing,
+       minAllowedConfidenceScoreForMerging = Prelude.Nothing}
+instance ToResourceProperties AutoMergingProperty where
+  toResourceProperties AutoMergingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.AutoMerging",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Enabled" JSON..= enabled]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConflictResolution" Prelude.<$> conflictResolution,
+                               (JSON..=) "Consolidation" Prelude.<$> consolidation,
+                               (JSON..=) "MinAllowedConfidenceScoreForMerging"
+                                 Prelude.<$> minAllowedConfidenceScoreForMerging]))}
+instance JSON.ToJSON AutoMergingProperty where
+  toJSON AutoMergingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Enabled" JSON..= enabled]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConflictResolution" Prelude.<$> conflictResolution,
+                  (JSON..=) "Consolidation" Prelude.<$> consolidation,
+                  (JSON..=) "MinAllowedConfidenceScoreForMerging"
+                    Prelude.<$> minAllowedConfidenceScoreForMerging])))
+instance Property "ConflictResolution" AutoMergingProperty where
+  type PropertyType "ConflictResolution" AutoMergingProperty = ConflictResolutionProperty
+  set newValue AutoMergingProperty {..}
+    = AutoMergingProperty
+        {conflictResolution = Prelude.pure newValue, ..}
+instance Property "Consolidation" AutoMergingProperty where
+  type PropertyType "Consolidation" AutoMergingProperty = ConsolidationProperty
+  set newValue AutoMergingProperty {..}
+    = AutoMergingProperty {consolidation = Prelude.pure newValue, ..}
+instance Property "Enabled" AutoMergingProperty where
+  type PropertyType "Enabled" AutoMergingProperty = Value Prelude.Bool
+  set newValue AutoMergingProperty {..}
+    = AutoMergingProperty {enabled = newValue, ..}
+instance Property "MinAllowedConfidenceScoreForMerging" AutoMergingProperty where
+  type PropertyType "MinAllowedConfidenceScoreForMerging" AutoMergingProperty = Value Prelude.Double
+  set newValue AutoMergingProperty {..}
+    = AutoMergingProperty
+        {minAllowedConfidenceScoreForMerging = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/AutoMergingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.AutoMergingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AutoMergingProperty :: Prelude.Type
+instance ToResourceProperties AutoMergingProperty
+instance Prelude.Eq AutoMergingProperty
+instance Prelude.Show AutoMergingProperty
+instance JSON.ToJSON AutoMergingProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.CustomerProfiles.Domain.ConflictResolutionProperty (
+        ConflictResolutionProperty(..), mkConflictResolutionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConflictResolutionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-conflictresolution.html>
+    ConflictResolutionProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-conflictresolution.html#cfn-customerprofiles-domain-conflictresolution-conflictresolvingmodel>
+                                conflictResolvingModel :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-conflictresolution.html#cfn-customerprofiles-domain-conflictresolution-sourcename>
+                                sourceName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConflictResolutionProperty ::
+  Value Prelude.Text -> ConflictResolutionProperty
+mkConflictResolutionProperty conflictResolvingModel
+  = ConflictResolutionProperty
+      {haddock_workaround_ = (),
+       conflictResolvingModel = conflictResolvingModel,
+       sourceName = Prelude.Nothing}
+instance ToResourceProperties ConflictResolutionProperty where
+  toResourceProperties ConflictResolutionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.ConflictResolution",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConflictResolvingModel" JSON..= conflictResolvingModel]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SourceName" Prelude.<$> sourceName]))}
+instance JSON.ToJSON ConflictResolutionProperty where
+  toJSON ConflictResolutionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConflictResolvingModel" JSON..= conflictResolvingModel]
+              (Prelude.catMaybes
+                 [(JSON..=) "SourceName" Prelude.<$> sourceName])))
+instance Property "ConflictResolvingModel" ConflictResolutionProperty where
+  type PropertyType "ConflictResolvingModel" ConflictResolutionProperty = Value Prelude.Text
+  set newValue ConflictResolutionProperty {..}
+    = ConflictResolutionProperty
+        {conflictResolvingModel = newValue, ..}
+instance Property "SourceName" ConflictResolutionProperty where
+  type PropertyType "SourceName" ConflictResolutionProperty = Value Prelude.Text
+  set newValue ConflictResolutionProperty {..}
+    = ConflictResolutionProperty
+        {sourceName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ConflictResolutionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.ConflictResolutionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConflictResolutionProperty :: Prelude.Type
+instance ToResourceProperties ConflictResolutionProperty
+instance Prelude.Eq ConflictResolutionProperty
+instance Prelude.Show ConflictResolutionProperty
+instance JSON.ToJSON ConflictResolutionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CustomerProfiles.Domain.ConsolidationProperty (
+        ConsolidationProperty(..), mkConsolidationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+data ConsolidationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-consolidation.html>
+    ConsolidationProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-consolidation.html#cfn-customerprofiles-domain-consolidation-matchingattributeslist>
+                           matchingAttributesList :: JSON.Object}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConsolidationProperty :: JSON.Object -> ConsolidationProperty
+mkConsolidationProperty matchingAttributesList
+  = ConsolidationProperty
+      {haddock_workaround_ = (),
+       matchingAttributesList = matchingAttributesList}
+instance ToResourceProperties ConsolidationProperty where
+  toResourceProperties ConsolidationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.Consolidation",
+         supportsTags = Prelude.False,
+         properties = ["MatchingAttributesList"
+                         JSON..= matchingAttributesList]}
+instance JSON.ToJSON ConsolidationProperty where
+  toJSON ConsolidationProperty {..}
+    = JSON.object
+        ["MatchingAttributesList" JSON..= matchingAttributesList]
+instance Property "MatchingAttributesList" ConsolidationProperty where
+  type PropertyType "MatchingAttributesList" ConsolidationProperty = JSON.Object
+  set newValue ConsolidationProperty {..}
+    = ConsolidationProperty {matchingAttributesList = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ConsolidationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.ConsolidationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConsolidationProperty :: Prelude.Type
+instance ToResourceProperties ConsolidationProperty
+instance Prelude.Eq ConsolidationProperty
+instance Prelude.Show ConsolidationProperty
+instance JSON.ToJSON ConsolidationProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs
@@ -0,0 +1,63 @@
+module Stratosphere.CustomerProfiles.Domain.DomainStatsProperty (
+        DomainStatsProperty(..), mkDomainStatsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainStatsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-domainstats.html>
+    DomainStatsProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-domainstats.html#cfn-customerprofiles-domain-domainstats-meteringprofilecount>
+                         meteringProfileCount :: (Prelude.Maybe (Value Prelude.Double)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-domainstats.html#cfn-customerprofiles-domain-domainstats-objectcount>
+                         objectCount :: (Prelude.Maybe (Value Prelude.Double)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-domainstats.html#cfn-customerprofiles-domain-domainstats-profilecount>
+                         profileCount :: (Prelude.Maybe (Value Prelude.Double)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-domainstats.html#cfn-customerprofiles-domain-domainstats-totalsize>
+                         totalSize :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainStatsProperty :: DomainStatsProperty
+mkDomainStatsProperty
+  = DomainStatsProperty
+      {haddock_workaround_ = (), meteringProfileCount = Prelude.Nothing,
+       objectCount = Prelude.Nothing, profileCount = Prelude.Nothing,
+       totalSize = Prelude.Nothing}
+instance ToResourceProperties DomainStatsProperty where
+  toResourceProperties DomainStatsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.DomainStats",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MeteringProfileCount" Prelude.<$> meteringProfileCount,
+                            (JSON..=) "ObjectCount" Prelude.<$> objectCount,
+                            (JSON..=) "ProfileCount" Prelude.<$> profileCount,
+                            (JSON..=) "TotalSize" Prelude.<$> totalSize])}
+instance JSON.ToJSON DomainStatsProperty where
+  toJSON DomainStatsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MeteringProfileCount" Prelude.<$> meteringProfileCount,
+               (JSON..=) "ObjectCount" Prelude.<$> objectCount,
+               (JSON..=) "ProfileCount" Prelude.<$> profileCount,
+               (JSON..=) "TotalSize" Prelude.<$> totalSize]))
+instance Property "MeteringProfileCount" DomainStatsProperty where
+  type PropertyType "MeteringProfileCount" DomainStatsProperty = Value Prelude.Double
+  set newValue DomainStatsProperty {..}
+    = DomainStatsProperty
+        {meteringProfileCount = Prelude.pure newValue, ..}
+instance Property "ObjectCount" DomainStatsProperty where
+  type PropertyType "ObjectCount" DomainStatsProperty = Value Prelude.Double
+  set newValue DomainStatsProperty {..}
+    = DomainStatsProperty {objectCount = Prelude.pure newValue, ..}
+instance Property "ProfileCount" DomainStatsProperty where
+  type PropertyType "ProfileCount" DomainStatsProperty = Value Prelude.Double
+  set newValue DomainStatsProperty {..}
+    = DomainStatsProperty {profileCount = Prelude.pure newValue, ..}
+instance Property "TotalSize" DomainStatsProperty where
+  type PropertyType "TotalSize" DomainStatsProperty = Value Prelude.Double
+  set newValue DomainStatsProperty {..}
+    = DomainStatsProperty {totalSize = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/DomainStatsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.DomainStatsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainStatsProperty :: Prelude.Type
+instance ToResourceProperties DomainStatsProperty
+instance Prelude.Eq DomainStatsProperty
+instance Prelude.Show DomainStatsProperty
+instance JSON.ToJSON DomainStatsProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.CustomerProfiles.Domain.ExportingConfigProperty (
+        module Exports, ExportingConfigProperty(..),
+        mkExportingConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.S3ExportingConfigProperty as Exports
+import Stratosphere.ResourceProperties
+data ExportingConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-exportingconfig.html>
+    ExportingConfigProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-exportingconfig.html#cfn-customerprofiles-domain-exportingconfig-s3exporting>
+                             s3Exporting :: (Prelude.Maybe S3ExportingConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExportingConfigProperty :: ExportingConfigProperty
+mkExportingConfigProperty
+  = ExportingConfigProperty
+      {haddock_workaround_ = (), s3Exporting = Prelude.Nothing}
+instance ToResourceProperties ExportingConfigProperty where
+  toResourceProperties ExportingConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.ExportingConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "S3Exporting" Prelude.<$> s3Exporting])}
+instance JSON.ToJSON ExportingConfigProperty where
+  toJSON ExportingConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "S3Exporting" Prelude.<$> s3Exporting]))
+instance Property "S3Exporting" ExportingConfigProperty where
+  type PropertyType "S3Exporting" ExportingConfigProperty = S3ExportingConfigProperty
+  set newValue ExportingConfigProperty {..}
+    = ExportingConfigProperty {s3Exporting = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/ExportingConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.ExportingConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExportingConfigProperty :: Prelude.Type
+instance ToResourceProperties ExportingConfigProperty
+instance Prelude.Eq ExportingConfigProperty
+instance Prelude.Show ExportingConfigProperty
+instance JSON.ToJSON ExportingConfigProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.CustomerProfiles.Domain.JobScheduleProperty (
+        JobScheduleProperty(..), mkJobScheduleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data JobScheduleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-jobschedule.html>
+    JobScheduleProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-jobschedule.html#cfn-customerprofiles-domain-jobschedule-dayoftheweek>
+                         dayOfTheWeek :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-jobschedule.html#cfn-customerprofiles-domain-jobschedule-time>
+                         time :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkJobScheduleProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> JobScheduleProperty
+mkJobScheduleProperty dayOfTheWeek time
+  = JobScheduleProperty
+      {haddock_workaround_ = (), dayOfTheWeek = dayOfTheWeek,
+       time = time}
+instance ToResourceProperties JobScheduleProperty where
+  toResourceProperties JobScheduleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.JobSchedule",
+         supportsTags = Prelude.False,
+         properties = ["DayOfTheWeek" JSON..= dayOfTheWeek,
+                       "Time" JSON..= time]}
+instance JSON.ToJSON JobScheduleProperty where
+  toJSON JobScheduleProperty {..}
+    = JSON.object
+        ["DayOfTheWeek" JSON..= dayOfTheWeek, "Time" JSON..= time]
+instance Property "DayOfTheWeek" JobScheduleProperty where
+  type PropertyType "DayOfTheWeek" JobScheduleProperty = Value Prelude.Text
+  set newValue JobScheduleProperty {..}
+    = JobScheduleProperty {dayOfTheWeek = newValue, ..}
+instance Property "Time" JobScheduleProperty where
+  type PropertyType "Time" JobScheduleProperty = Value Prelude.Text
+  set newValue JobScheduleProperty {..}
+    = JobScheduleProperty {time = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/JobScheduleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.JobScheduleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data JobScheduleProperty :: Prelude.Type
+instance ToResourceProperties JobScheduleProperty
+instance Prelude.Eq JobScheduleProperty
+instance Prelude.Show JobScheduleProperty
+instance JSON.ToJSON JobScheduleProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.CustomerProfiles.Domain.MatchingProperty (
+        module Exports, MatchingProperty(..), mkMatchingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.AutoMergingProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.ExportingConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.JobScheduleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MatchingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matching.html>
+    MatchingProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matching.html#cfn-customerprofiles-domain-matching-automerging>
+                      autoMerging :: (Prelude.Maybe AutoMergingProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matching.html#cfn-customerprofiles-domain-matching-enabled>
+                      enabled :: (Value Prelude.Bool),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matching.html#cfn-customerprofiles-domain-matching-exportingconfig>
+                      exportingConfig :: (Prelude.Maybe ExportingConfigProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matching.html#cfn-customerprofiles-domain-matching-jobschedule>
+                      jobSchedule :: (Prelude.Maybe JobScheduleProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchingProperty :: Value Prelude.Bool -> MatchingProperty
+mkMatchingProperty enabled
+  = MatchingProperty
+      {haddock_workaround_ = (), enabled = enabled,
+       autoMerging = Prelude.Nothing, exportingConfig = Prelude.Nothing,
+       jobSchedule = Prelude.Nothing}
+instance ToResourceProperties MatchingProperty where
+  toResourceProperties MatchingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.Matching",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Enabled" JSON..= enabled]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoMerging" Prelude.<$> autoMerging,
+                               (JSON..=) "ExportingConfig" Prelude.<$> exportingConfig,
+                               (JSON..=) "JobSchedule" Prelude.<$> jobSchedule]))}
+instance JSON.ToJSON MatchingProperty where
+  toJSON MatchingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Enabled" JSON..= enabled]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoMerging" Prelude.<$> autoMerging,
+                  (JSON..=) "ExportingConfig" Prelude.<$> exportingConfig,
+                  (JSON..=) "JobSchedule" Prelude.<$> jobSchedule])))
+instance Property "AutoMerging" MatchingProperty where
+  type PropertyType "AutoMerging" MatchingProperty = AutoMergingProperty
+  set newValue MatchingProperty {..}
+    = MatchingProperty {autoMerging = Prelude.pure newValue, ..}
+instance Property "Enabled" MatchingProperty where
+  type PropertyType "Enabled" MatchingProperty = Value Prelude.Bool
+  set newValue MatchingProperty {..}
+    = MatchingProperty {enabled = newValue, ..}
+instance Property "ExportingConfig" MatchingProperty where
+  type PropertyType "ExportingConfig" MatchingProperty = ExportingConfigProperty
+  set newValue MatchingProperty {..}
+    = MatchingProperty {exportingConfig = Prelude.pure newValue, ..}
+instance Property "JobSchedule" MatchingProperty where
+  type PropertyType "JobSchedule" MatchingProperty = JobScheduleProperty
+  set newValue MatchingProperty {..}
+    = MatchingProperty {jobSchedule = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/MatchingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.MatchingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MatchingProperty :: Prelude.Type
+instance ToResourceProperties MatchingProperty
+instance Prelude.Eq MatchingProperty
+instance Prelude.Show MatchingProperty
+instance JSON.ToJSON MatchingProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.CustomerProfiles.Domain.MatchingRuleProperty (
+        MatchingRuleProperty(..), mkMatchingRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MatchingRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matchingrule.html>
+    MatchingRuleProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-matchingrule.html#cfn-customerprofiles-domain-matchingrule-rule>
+                          rule :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchingRuleProperty ::
+  ValueList Prelude.Text -> MatchingRuleProperty
+mkMatchingRuleProperty rule
+  = MatchingRuleProperty {haddock_workaround_ = (), rule = rule}
+instance ToResourceProperties MatchingRuleProperty where
+  toResourceProperties MatchingRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.MatchingRule",
+         supportsTags = Prelude.False, properties = ["Rule" JSON..= rule]}
+instance JSON.ToJSON MatchingRuleProperty where
+  toJSON MatchingRuleProperty {..}
+    = JSON.object ["Rule" JSON..= rule]
+instance Property "Rule" MatchingRuleProperty where
+  type PropertyType "Rule" MatchingRuleProperty = ValueList Prelude.Text
+  set newValue MatchingRuleProperty {..}
+    = MatchingRuleProperty {rule = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/MatchingRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.MatchingRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MatchingRuleProperty :: Prelude.Type
+instance ToResourceProperties MatchingRuleProperty
+instance Prelude.Eq MatchingRuleProperty
+instance Prelude.Show MatchingRuleProperty
+instance JSON.ToJSON MatchingRuleProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs
@@ -0,0 +1,118 @@
+module Stratosphere.CustomerProfiles.Domain.RuleBasedMatchingProperty (
+        module Exports, RuleBasedMatchingProperty(..),
+        mkRuleBasedMatchingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.AttributeTypesSelectorProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.ConflictResolutionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.ExportingConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Domain.MatchingRuleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleBasedMatchingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html>
+    RuleBasedMatchingProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-attributetypesselector>
+                               attributeTypesSelector :: (Prelude.Maybe AttributeTypesSelectorProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-conflictresolution>
+                               conflictResolution :: (Prelude.Maybe ConflictResolutionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-enabled>
+                               enabled :: (Value Prelude.Bool),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-exportingconfig>
+                               exportingConfig :: (Prelude.Maybe ExportingConfigProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-matchingrules>
+                               matchingRules :: (Prelude.Maybe [MatchingRuleProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-maxallowedrulelevelformatching>
+                               maxAllowedRuleLevelForMatching :: (Prelude.Maybe (Value Prelude.Integer)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-maxallowedrulelevelformerging>
+                               maxAllowedRuleLevelForMerging :: (Prelude.Maybe (Value Prelude.Integer)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-rulebasedmatching.html#cfn-customerprofiles-domain-rulebasedmatching-status>
+                               status :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleBasedMatchingProperty ::
+  Value Prelude.Bool -> RuleBasedMatchingProperty
+mkRuleBasedMatchingProperty enabled
+  = RuleBasedMatchingProperty
+      {haddock_workaround_ = (), enabled = enabled,
+       attributeTypesSelector = Prelude.Nothing,
+       conflictResolution = Prelude.Nothing,
+       exportingConfig = Prelude.Nothing, matchingRules = Prelude.Nothing,
+       maxAllowedRuleLevelForMatching = Prelude.Nothing,
+       maxAllowedRuleLevelForMerging = Prelude.Nothing,
+       status = Prelude.Nothing}
+instance ToResourceProperties RuleBasedMatchingProperty where
+  toResourceProperties RuleBasedMatchingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.RuleBasedMatching",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Enabled" JSON..= enabled]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AttributeTypesSelector"
+                                 Prelude.<$> attributeTypesSelector,
+                               (JSON..=) "ConflictResolution" Prelude.<$> conflictResolution,
+                               (JSON..=) "ExportingConfig" Prelude.<$> exportingConfig,
+                               (JSON..=) "MatchingRules" Prelude.<$> matchingRules,
+                               (JSON..=) "MaxAllowedRuleLevelForMatching"
+                                 Prelude.<$> maxAllowedRuleLevelForMatching,
+                               (JSON..=) "MaxAllowedRuleLevelForMerging"
+                                 Prelude.<$> maxAllowedRuleLevelForMerging,
+                               (JSON..=) "Status" Prelude.<$> status]))}
+instance JSON.ToJSON RuleBasedMatchingProperty where
+  toJSON RuleBasedMatchingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Enabled" JSON..= enabled]
+              (Prelude.catMaybes
+                 [(JSON..=) "AttributeTypesSelector"
+                    Prelude.<$> attributeTypesSelector,
+                  (JSON..=) "ConflictResolution" Prelude.<$> conflictResolution,
+                  (JSON..=) "ExportingConfig" Prelude.<$> exportingConfig,
+                  (JSON..=) "MatchingRules" Prelude.<$> matchingRules,
+                  (JSON..=) "MaxAllowedRuleLevelForMatching"
+                    Prelude.<$> maxAllowedRuleLevelForMatching,
+                  (JSON..=) "MaxAllowedRuleLevelForMerging"
+                    Prelude.<$> maxAllowedRuleLevelForMerging,
+                  (JSON..=) "Status" Prelude.<$> status])))
+instance Property "AttributeTypesSelector" RuleBasedMatchingProperty where
+  type PropertyType "AttributeTypesSelector" RuleBasedMatchingProperty = AttributeTypesSelectorProperty
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {attributeTypesSelector = Prelude.pure newValue, ..}
+instance Property "ConflictResolution" RuleBasedMatchingProperty where
+  type PropertyType "ConflictResolution" RuleBasedMatchingProperty = ConflictResolutionProperty
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {conflictResolution = Prelude.pure newValue, ..}
+instance Property "Enabled" RuleBasedMatchingProperty where
+  type PropertyType "Enabled" RuleBasedMatchingProperty = Value Prelude.Bool
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty {enabled = newValue, ..}
+instance Property "ExportingConfig" RuleBasedMatchingProperty where
+  type PropertyType "ExportingConfig" RuleBasedMatchingProperty = ExportingConfigProperty
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {exportingConfig = Prelude.pure newValue, ..}
+instance Property "MatchingRules" RuleBasedMatchingProperty where
+  type PropertyType "MatchingRules" RuleBasedMatchingProperty = [MatchingRuleProperty]
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {matchingRules = Prelude.pure newValue, ..}
+instance Property "MaxAllowedRuleLevelForMatching" RuleBasedMatchingProperty where
+  type PropertyType "MaxAllowedRuleLevelForMatching" RuleBasedMatchingProperty = Value Prelude.Integer
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {maxAllowedRuleLevelForMatching = Prelude.pure newValue, ..}
+instance Property "MaxAllowedRuleLevelForMerging" RuleBasedMatchingProperty where
+  type PropertyType "MaxAllowedRuleLevelForMerging" RuleBasedMatchingProperty = Value Prelude.Integer
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty
+        {maxAllowedRuleLevelForMerging = Prelude.pure newValue, ..}
+instance Property "Status" RuleBasedMatchingProperty where
+  type PropertyType "Status" RuleBasedMatchingProperty = Value Prelude.Text
+  set newValue RuleBasedMatchingProperty {..}
+    = RuleBasedMatchingProperty {status = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/RuleBasedMatchingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.RuleBasedMatchingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleBasedMatchingProperty :: Prelude.Type
+instance ToResourceProperties RuleBasedMatchingProperty
+instance Prelude.Eq RuleBasedMatchingProperty
+instance Prelude.Show RuleBasedMatchingProperty
+instance JSON.ToJSON RuleBasedMatchingProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs b/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.Domain.S3ExportingConfigProperty (
+        S3ExportingConfigProperty(..), mkS3ExportingConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3ExportingConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-s3exportingconfig.html>
+    S3ExportingConfigProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-s3exportingconfig.html#cfn-customerprofiles-domain-s3exportingconfig-s3bucketname>
+                               s3BucketName :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-domain-s3exportingconfig.html#cfn-customerprofiles-domain-s3exportingconfig-s3keyname>
+                               s3KeyName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3ExportingConfigProperty ::
+  Value Prelude.Text -> S3ExportingConfigProperty
+mkS3ExportingConfigProperty s3BucketName
+  = S3ExportingConfigProperty
+      {haddock_workaround_ = (), s3BucketName = s3BucketName,
+       s3KeyName = Prelude.Nothing}
+instance ToResourceProperties S3ExportingConfigProperty where
+  toResourceProperties S3ExportingConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Domain.S3ExportingConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["S3BucketName" JSON..= s3BucketName]
+                           (Prelude.catMaybes [(JSON..=) "S3KeyName" Prelude.<$> s3KeyName]))}
+instance JSON.ToJSON S3ExportingConfigProperty where
+  toJSON S3ExportingConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["S3BucketName" JSON..= s3BucketName]
+              (Prelude.catMaybes [(JSON..=) "S3KeyName" Prelude.<$> s3KeyName])))
+instance Property "S3BucketName" S3ExportingConfigProperty where
+  type PropertyType "S3BucketName" S3ExportingConfigProperty = Value Prelude.Text
+  set newValue S3ExportingConfigProperty {..}
+    = S3ExportingConfigProperty {s3BucketName = newValue, ..}
+instance Property "S3KeyName" S3ExportingConfigProperty where
+  type PropertyType "S3KeyName" S3ExportingConfigProperty = Value Prelude.Text
+  set newValue S3ExportingConfigProperty {..}
+    = S3ExportingConfigProperty {s3KeyName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Domain/S3ExportingConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Domain.S3ExportingConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3ExportingConfigProperty :: Prelude.Type
+instance ToResourceProperties S3ExportingConfigProperty
+instance Prelude.Eq S3ExportingConfigProperty
+instance Prelude.Show S3ExportingConfigProperty
+instance JSON.ToJSON S3ExportingConfigProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventStream.hs b/gen/Stratosphere/CustomerProfiles/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventStream.hs
@@ -0,0 +1,62 @@
+module Stratosphere.CustomerProfiles.EventStream (
+        EventStream(..), mkEventStream
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EventStream
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventstream.html>
+    EventStream {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventstream.html#cfn-customerprofiles-eventstream-domainname>
+                 domainName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventstream.html#cfn-customerprofiles-eventstream-eventstreamname>
+                 eventStreamName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventstream.html#cfn-customerprofiles-eventstream-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventstream.html#cfn-customerprofiles-eventstream-uri>
+                 uri :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventStream ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> EventStream
+mkEventStream domainName eventStreamName uri
+  = EventStream
+      {haddock_workaround_ = (), domainName = domainName,
+       eventStreamName = eventStreamName, uri = uri,
+       tags = Prelude.Nothing}
+instance ToResourceProperties EventStream where
+  toResourceProperties EventStream {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventStream",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName,
+                            "EventStreamName" JSON..= eventStreamName, "Uri" JSON..= uri]
+                           (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EventStream where
+  toJSON EventStream {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName,
+               "EventStreamName" JSON..= eventStreamName, "Uri" JSON..= uri]
+              (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DomainName" EventStream where
+  type PropertyType "DomainName" EventStream = Value Prelude.Text
+  set newValue EventStream {..}
+    = EventStream {domainName = newValue, ..}
+instance Property "EventStreamName" EventStream where
+  type PropertyType "EventStreamName" EventStream = Value Prelude.Text
+  set newValue EventStream {..}
+    = EventStream {eventStreamName = newValue, ..}
+instance Property "Tags" EventStream where
+  type PropertyType "Tags" EventStream = [Tag]
+  set newValue EventStream {..}
+    = EventStream {tags = Prelude.pure newValue, ..}
+instance Property "Uri" EventStream where
+  type PropertyType "Uri" EventStream = Value Prelude.Text
+  set newValue EventStream {..} = EventStream {uri = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs b/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CustomerProfiles.EventStream.DestinationDetailsProperty (
+        DestinationDetailsProperty(..), mkDestinationDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DestinationDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventstream-destinationdetails.html>
+    DestinationDetailsProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventstream-destinationdetails.html#cfn-customerprofiles-eventstream-destinationdetails-status>
+                                status :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventstream-destinationdetails.html#cfn-customerprofiles-eventstream-destinationdetails-uri>
+                                uri :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDestinationDetailsProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> DestinationDetailsProperty
+mkDestinationDetailsProperty status uri
+  = DestinationDetailsProperty
+      {haddock_workaround_ = (), status = status, uri = uri}
+instance ToResourceProperties DestinationDetailsProperty where
+  toResourceProperties DestinationDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventStream.DestinationDetails",
+         supportsTags = Prelude.False,
+         properties = ["Status" JSON..= status, "Uri" JSON..= uri]}
+instance JSON.ToJSON DestinationDetailsProperty where
+  toJSON DestinationDetailsProperty {..}
+    = JSON.object ["Status" JSON..= status, "Uri" JSON..= uri]
+instance Property "Status" DestinationDetailsProperty where
+  type PropertyType "Status" DestinationDetailsProperty = Value Prelude.Text
+  set newValue DestinationDetailsProperty {..}
+    = DestinationDetailsProperty {status = newValue, ..}
+instance Property "Uri" DestinationDetailsProperty where
+  type PropertyType "Uri" DestinationDetailsProperty = Value Prelude.Text
+  set newValue DestinationDetailsProperty {..}
+    = DestinationDetailsProperty {uri = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventStream/DestinationDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventStream.DestinationDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DestinationDetailsProperty :: Prelude.Type
+instance ToResourceProperties DestinationDetailsProperty
+instance Prelude.Eq DestinationDetailsProperty
+instance Prelude.Show DestinationDetailsProperty
+instance JSON.ToJSON DestinationDetailsProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger.hs
@@ -0,0 +1,109 @@
+module Stratosphere.CustomerProfiles.EventTrigger (
+        module Exports, EventTrigger(..), mkEventTrigger
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.EventTrigger.EventTriggerConditionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.EventTrigger.EventTriggerLimitsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EventTrigger
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html>
+    EventTrigger {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-description>
+                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-domainname>
+                  domainName :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-eventtriggerconditions>
+                  eventTriggerConditions :: [EventTriggerConditionProperty],
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-eventtriggerlimits>
+                  eventTriggerLimits :: (Prelude.Maybe EventTriggerLimitsProperty),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-eventtriggername>
+                  eventTriggerName :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-objecttypename>
+                  objectTypeName :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-segmentfilter>
+                  segmentFilter :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-eventtrigger.html#cfn-customerprofiles-eventtrigger-tags>
+                  tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventTrigger ::
+  Value Prelude.Text
+  -> [EventTriggerConditionProperty]
+     -> Value Prelude.Text -> Value Prelude.Text -> EventTrigger
+mkEventTrigger
+  domainName
+  eventTriggerConditions
+  eventTriggerName
+  objectTypeName
+  = EventTrigger
+      {haddock_workaround_ = (), domainName = domainName,
+       eventTriggerConditions = eventTriggerConditions,
+       eventTriggerName = eventTriggerName,
+       objectTypeName = objectTypeName, description = Prelude.Nothing,
+       eventTriggerLimits = Prelude.Nothing,
+       segmentFilter = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties EventTrigger where
+  toResourceProperties EventTrigger {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName,
+                            "EventTriggerConditions" JSON..= eventTriggerConditions,
+                            "EventTriggerName" JSON..= eventTriggerName,
+                            "ObjectTypeName" JSON..= objectTypeName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EventTriggerLimits" Prelude.<$> eventTriggerLimits,
+                               (JSON..=) "SegmentFilter" Prelude.<$> segmentFilter,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EventTrigger where
+  toJSON EventTrigger {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName,
+               "EventTriggerConditions" JSON..= eventTriggerConditions,
+               "EventTriggerName" JSON..= eventTriggerName,
+               "ObjectTypeName" JSON..= objectTypeName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EventTriggerLimits" Prelude.<$> eventTriggerLimits,
+                  (JSON..=) "SegmentFilter" Prelude.<$> segmentFilter,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" EventTrigger where
+  type PropertyType "Description" EventTrigger = Value Prelude.Text
+  set newValue EventTrigger {..}
+    = EventTrigger {description = Prelude.pure newValue, ..}
+instance Property "DomainName" EventTrigger where
+  type PropertyType "DomainName" EventTrigger = Value Prelude.Text
+  set newValue EventTrigger {..}
+    = EventTrigger {domainName = newValue, ..}
+instance Property "EventTriggerConditions" EventTrigger where
+  type PropertyType "EventTriggerConditions" EventTrigger = [EventTriggerConditionProperty]
+  set newValue EventTrigger {..}
+    = EventTrigger {eventTriggerConditions = newValue, ..}
+instance Property "EventTriggerLimits" EventTrigger where
+  type PropertyType "EventTriggerLimits" EventTrigger = EventTriggerLimitsProperty
+  set newValue EventTrigger {..}
+    = EventTrigger {eventTriggerLimits = Prelude.pure newValue, ..}
+instance Property "EventTriggerName" EventTrigger where
+  type PropertyType "EventTriggerName" EventTrigger = Value Prelude.Text
+  set newValue EventTrigger {..}
+    = EventTrigger {eventTriggerName = newValue, ..}
+instance Property "ObjectTypeName" EventTrigger where
+  type PropertyType "ObjectTypeName" EventTrigger = Value Prelude.Text
+  set newValue EventTrigger {..}
+    = EventTrigger {objectTypeName = newValue, ..}
+instance Property "SegmentFilter" EventTrigger where
+  type PropertyType "SegmentFilter" EventTrigger = Value Prelude.Text
+  set newValue EventTrigger {..}
+    = EventTrigger {segmentFilter = Prelude.pure newValue, ..}
+instance Property "Tags" EventTrigger where
+  type PropertyType "Tags" EventTrigger = [Tag]
+  set newValue EventTrigger {..}
+    = EventTrigger {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerConditionProperty (
+        module Exports, EventTriggerConditionProperty(..),
+        mkEventTriggerConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.EventTrigger.EventTriggerDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EventTriggerConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggercondition.html>
+    EventTriggerConditionProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggercondition.html#cfn-customerprofiles-eventtrigger-eventtriggercondition-eventtriggerdimensions>
+                                   eventTriggerDimensions :: [EventTriggerDimensionProperty],
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggercondition.html#cfn-customerprofiles-eventtrigger-eventtriggercondition-logicaloperator>
+                                   logicalOperator :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventTriggerConditionProperty ::
+  [EventTriggerDimensionProperty]
+  -> Value Prelude.Text -> EventTriggerConditionProperty
+mkEventTriggerConditionProperty
+  eventTriggerDimensions
+  logicalOperator
+  = EventTriggerConditionProperty
+      {haddock_workaround_ = (),
+       eventTriggerDimensions = eventTriggerDimensions,
+       logicalOperator = logicalOperator}
+instance ToResourceProperties EventTriggerConditionProperty where
+  toResourceProperties EventTriggerConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger.EventTriggerCondition",
+         supportsTags = Prelude.False,
+         properties = ["EventTriggerDimensions"
+                         JSON..= eventTriggerDimensions,
+                       "LogicalOperator" JSON..= logicalOperator]}
+instance JSON.ToJSON EventTriggerConditionProperty where
+  toJSON EventTriggerConditionProperty {..}
+    = JSON.object
+        ["EventTriggerDimensions" JSON..= eventTriggerDimensions,
+         "LogicalOperator" JSON..= logicalOperator]
+instance Property "EventTriggerDimensions" EventTriggerConditionProperty where
+  type PropertyType "EventTriggerDimensions" EventTriggerConditionProperty = [EventTriggerDimensionProperty]
+  set newValue EventTriggerConditionProperty {..}
+    = EventTriggerConditionProperty
+        {eventTriggerDimensions = newValue, ..}
+instance Property "LogicalOperator" EventTriggerConditionProperty where
+  type PropertyType "LogicalOperator" EventTriggerConditionProperty = Value Prelude.Text
+  set newValue EventTriggerConditionProperty {..}
+    = EventTriggerConditionProperty {logicalOperator = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EventTriggerConditionProperty :: Prelude.Type
+instance ToResourceProperties EventTriggerConditionProperty
+instance Prelude.Eq EventTriggerConditionProperty
+instance Prelude.Show EventTriggerConditionProperty
+instance JSON.ToJSON EventTriggerConditionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerDimensionProperty (
+        module Exports, EventTriggerDimensionProperty(..),
+        mkEventTriggerDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.EventTrigger.ObjectAttributeProperty as Exports
+import Stratosphere.ResourceProperties
+data EventTriggerDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggerdimension.html>
+    EventTriggerDimensionProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggerdimension.html#cfn-customerprofiles-eventtrigger-eventtriggerdimension-objectattributes>
+                                   objectAttributes :: [ObjectAttributeProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventTriggerDimensionProperty ::
+  [ObjectAttributeProperty] -> EventTriggerDimensionProperty
+mkEventTriggerDimensionProperty objectAttributes
+  = EventTriggerDimensionProperty
+      {haddock_workaround_ = (), objectAttributes = objectAttributes}
+instance ToResourceProperties EventTriggerDimensionProperty where
+  toResourceProperties EventTriggerDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger.EventTriggerDimension",
+         supportsTags = Prelude.False,
+         properties = ["ObjectAttributes" JSON..= objectAttributes]}
+instance JSON.ToJSON EventTriggerDimensionProperty where
+  toJSON EventTriggerDimensionProperty {..}
+    = JSON.object ["ObjectAttributes" JSON..= objectAttributes]
+instance Property "ObjectAttributes" EventTriggerDimensionProperty where
+  type PropertyType "ObjectAttributes" EventTriggerDimensionProperty = [ObjectAttributeProperty]
+  set newValue EventTriggerDimensionProperty {..}
+    = EventTriggerDimensionProperty {objectAttributes = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EventTriggerDimensionProperty :: Prelude.Type
+instance ToResourceProperties EventTriggerDimensionProperty
+instance Prelude.Eq EventTriggerDimensionProperty
+instance Prelude.Show EventTriggerDimensionProperty
+instance JSON.ToJSON EventTriggerDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs
@@ -0,0 +1,48 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerLimitsProperty (
+        module Exports, EventTriggerLimitsProperty(..),
+        mkEventTriggerLimitsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.EventTrigger.PeriodProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EventTriggerLimitsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggerlimits.html>
+    EventTriggerLimitsProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggerlimits.html#cfn-customerprofiles-eventtrigger-eventtriggerlimits-eventexpiration>
+                                eventExpiration :: (Prelude.Maybe (Value Prelude.Integer)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-eventtriggerlimits.html#cfn-customerprofiles-eventtrigger-eventtriggerlimits-periods>
+                                periods :: (Prelude.Maybe [PeriodProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventTriggerLimitsProperty :: EventTriggerLimitsProperty
+mkEventTriggerLimitsProperty
+  = EventTriggerLimitsProperty
+      {haddock_workaround_ = (), eventExpiration = Prelude.Nothing,
+       periods = Prelude.Nothing}
+instance ToResourceProperties EventTriggerLimitsProperty where
+  toResourceProperties EventTriggerLimitsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger.EventTriggerLimits",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EventExpiration" Prelude.<$> eventExpiration,
+                            (JSON..=) "Periods" Prelude.<$> periods])}
+instance JSON.ToJSON EventTriggerLimitsProperty where
+  toJSON EventTriggerLimitsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EventExpiration" Prelude.<$> eventExpiration,
+               (JSON..=) "Periods" Prelude.<$> periods]))
+instance Property "EventExpiration" EventTriggerLimitsProperty where
+  type PropertyType "EventExpiration" EventTriggerLimitsProperty = Value Prelude.Integer
+  set newValue EventTriggerLimitsProperty {..}
+    = EventTriggerLimitsProperty
+        {eventExpiration = Prelude.pure newValue, ..}
+instance Property "Periods" EventTriggerLimitsProperty where
+  type PropertyType "Periods" EventTriggerLimitsProperty = [PeriodProperty]
+  set newValue EventTriggerLimitsProperty {..}
+    = EventTriggerLimitsProperty {periods = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/EventTriggerLimitsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventTrigger.EventTriggerLimitsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EventTriggerLimitsProperty :: Prelude.Type
+instance ToResourceProperties EventTriggerLimitsProperty
+instance Prelude.Eq EventTriggerLimitsProperty
+instance Prelude.Show EventTriggerLimitsProperty
+instance JSON.ToJSON EventTriggerLimitsProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.CustomerProfiles.EventTrigger.ObjectAttributeProperty (
+        ObjectAttributeProperty(..), mkObjectAttributeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ObjectAttributeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-objectattribute.html>
+    ObjectAttributeProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-objectattribute.html#cfn-customerprofiles-eventtrigger-objectattribute-comparisonoperator>
+                             comparisonOperator :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-objectattribute.html#cfn-customerprofiles-eventtrigger-objectattribute-fieldname>
+                             fieldName :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-objectattribute.html#cfn-customerprofiles-eventtrigger-objectattribute-source>
+                             source :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-objectattribute.html#cfn-customerprofiles-eventtrigger-objectattribute-values>
+                             values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObjectAttributeProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> ObjectAttributeProperty
+mkObjectAttributeProperty comparisonOperator values
+  = ObjectAttributeProperty
+      {haddock_workaround_ = (), comparisonOperator = comparisonOperator,
+       values = values, fieldName = Prelude.Nothing,
+       source = Prelude.Nothing}
+instance ToResourceProperties ObjectAttributeProperty where
+  toResourceProperties ObjectAttributeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger.ObjectAttribute",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ComparisonOperator" JSON..= comparisonOperator,
+                            "Values" JSON..= values]
+                           (Prelude.catMaybes
+                              [(JSON..=) "FieldName" Prelude.<$> fieldName,
+                               (JSON..=) "Source" Prelude.<$> source]))}
+instance JSON.ToJSON ObjectAttributeProperty where
+  toJSON ObjectAttributeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ComparisonOperator" JSON..= comparisonOperator,
+               "Values" JSON..= values]
+              (Prelude.catMaybes
+                 [(JSON..=) "FieldName" Prelude.<$> fieldName,
+                  (JSON..=) "Source" Prelude.<$> source])))
+instance Property "ComparisonOperator" ObjectAttributeProperty where
+  type PropertyType "ComparisonOperator" ObjectAttributeProperty = Value Prelude.Text
+  set newValue ObjectAttributeProperty {..}
+    = ObjectAttributeProperty {comparisonOperator = newValue, ..}
+instance Property "FieldName" ObjectAttributeProperty where
+  type PropertyType "FieldName" ObjectAttributeProperty = Value Prelude.Text
+  set newValue ObjectAttributeProperty {..}
+    = ObjectAttributeProperty {fieldName = Prelude.pure newValue, ..}
+instance Property "Source" ObjectAttributeProperty where
+  type PropertyType "Source" ObjectAttributeProperty = Value Prelude.Text
+  set newValue ObjectAttributeProperty {..}
+    = ObjectAttributeProperty {source = Prelude.pure newValue, ..}
+instance Property "Values" ObjectAttributeProperty where
+  type PropertyType "Values" ObjectAttributeProperty = ValueList Prelude.Text
+  set newValue ObjectAttributeProperty {..}
+    = ObjectAttributeProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/ObjectAttributeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventTrigger.ObjectAttributeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ObjectAttributeProperty :: Prelude.Type
+instance ToResourceProperties ObjectAttributeProperty
+instance Prelude.Eq ObjectAttributeProperty
+instance Prelude.Show ObjectAttributeProperty
+instance JSON.ToJSON ObjectAttributeProperty
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs b/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.CustomerProfiles.EventTrigger.PeriodProperty (
+        PeriodProperty(..), mkPeriodProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PeriodProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-period.html>
+    PeriodProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-period.html#cfn-customerprofiles-eventtrigger-period-maxinvocationsperprofile>
+                    maxInvocationsPerProfile :: (Prelude.Maybe (Value Prelude.Integer)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-period.html#cfn-customerprofiles-eventtrigger-period-unit>
+                    unit :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-period.html#cfn-customerprofiles-eventtrigger-period-unlimited>
+                    unlimited :: (Prelude.Maybe (Value Prelude.Bool)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-eventtrigger-period.html#cfn-customerprofiles-eventtrigger-period-value>
+                    value :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPeriodProperty ::
+  Value Prelude.Text -> Value Prelude.Integer -> PeriodProperty
+mkPeriodProperty unit value
+  = PeriodProperty
+      {haddock_workaround_ = (), unit = unit, value = value,
+       maxInvocationsPerProfile = Prelude.Nothing,
+       unlimited = Prelude.Nothing}
+instance ToResourceProperties PeriodProperty where
+  toResourceProperties PeriodProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::EventTrigger.Period",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Unit" JSON..= unit, "Value" JSON..= value]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MaxInvocationsPerProfile"
+                                 Prelude.<$> maxInvocationsPerProfile,
+                               (JSON..=) "Unlimited" Prelude.<$> unlimited]))}
+instance JSON.ToJSON PeriodProperty where
+  toJSON PeriodProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Unit" JSON..= unit, "Value" JSON..= value]
+              (Prelude.catMaybes
+                 [(JSON..=) "MaxInvocationsPerProfile"
+                    Prelude.<$> maxInvocationsPerProfile,
+                  (JSON..=) "Unlimited" Prelude.<$> unlimited])))
+instance Property "MaxInvocationsPerProfile" PeriodProperty where
+  type PropertyType "MaxInvocationsPerProfile" PeriodProperty = Value Prelude.Integer
+  set newValue PeriodProperty {..}
+    = PeriodProperty
+        {maxInvocationsPerProfile = Prelude.pure newValue, ..}
+instance Property "Unit" PeriodProperty where
+  type PropertyType "Unit" PeriodProperty = Value Prelude.Text
+  set newValue PeriodProperty {..}
+    = PeriodProperty {unit = newValue, ..}
+instance Property "Unlimited" PeriodProperty where
+  type PropertyType "Unlimited" PeriodProperty = Value Prelude.Bool
+  set newValue PeriodProperty {..}
+    = PeriodProperty {unlimited = Prelude.pure newValue, ..}
+instance Property "Value" PeriodProperty where
+  type PropertyType "Value" PeriodProperty = Value Prelude.Integer
+  set newValue PeriodProperty {..}
+    = PeriodProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/EventTrigger/PeriodProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.EventTrigger.PeriodProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PeriodProperty :: Prelude.Type
+instance ToResourceProperties PeriodProperty
+instance Prelude.Eq PeriodProperty
+instance Prelude.Show PeriodProperty
+instance JSON.ToJSON PeriodProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration.hs b/gen/Stratosphere/CustomerProfiles/Integration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration.hs
@@ -0,0 +1,93 @@
+module Stratosphere.CustomerProfiles.Integration (
+        module Exports, Integration(..), mkIntegration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.FlowDefinitionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.ObjectTypeMappingProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Integration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html>
+    Integration {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-domainname>
+                 domainName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-eventtriggernames>
+                 eventTriggerNames :: (Prelude.Maybe (ValueList Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-flowdefinition>
+                 flowDefinition :: (Prelude.Maybe FlowDefinitionProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-objecttypename>
+                 objectTypeName :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-objecttypenames>
+                 objectTypeNames :: (Prelude.Maybe [ObjectTypeMappingProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-integration.html#cfn-customerprofiles-integration-uri>
+                 uri :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntegration :: Value Prelude.Text -> Integration
+mkIntegration domainName
+  = Integration
+      {haddock_workaround_ = (), domainName = domainName,
+       eventTriggerNames = Prelude.Nothing,
+       flowDefinition = Prelude.Nothing, objectTypeName = Prelude.Nothing,
+       objectTypeNames = Prelude.Nothing, tags = Prelude.Nothing,
+       uri = Prelude.Nothing}
+instance ToResourceProperties Integration where
+  toResourceProperties Integration {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EventTriggerNames" Prelude.<$> eventTriggerNames,
+                               (JSON..=) "FlowDefinition" Prelude.<$> flowDefinition,
+                               (JSON..=) "ObjectTypeName" Prelude.<$> objectTypeName,
+                               (JSON..=) "ObjectTypeNames" Prelude.<$> objectTypeNames,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Uri" Prelude.<$> uri]))}
+instance JSON.ToJSON Integration where
+  toJSON Integration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName]
+              (Prelude.catMaybes
+                 [(JSON..=) "EventTriggerNames" Prelude.<$> eventTriggerNames,
+                  (JSON..=) "FlowDefinition" Prelude.<$> flowDefinition,
+                  (JSON..=) "ObjectTypeName" Prelude.<$> objectTypeName,
+                  (JSON..=) "ObjectTypeNames" Prelude.<$> objectTypeNames,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Uri" Prelude.<$> uri])))
+instance Property "DomainName" Integration where
+  type PropertyType "DomainName" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {domainName = newValue, ..}
+instance Property "EventTriggerNames" Integration where
+  type PropertyType "EventTriggerNames" Integration = ValueList Prelude.Text
+  set newValue Integration {..}
+    = Integration {eventTriggerNames = Prelude.pure newValue, ..}
+instance Property "FlowDefinition" Integration where
+  type PropertyType "FlowDefinition" Integration = FlowDefinitionProperty
+  set newValue Integration {..}
+    = Integration {flowDefinition = Prelude.pure newValue, ..}
+instance Property "ObjectTypeName" Integration where
+  type PropertyType "ObjectTypeName" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {objectTypeName = Prelude.pure newValue, ..}
+instance Property "ObjectTypeNames" Integration where
+  type PropertyType "ObjectTypeNames" Integration = [ObjectTypeMappingProperty]
+  set newValue Integration {..}
+    = Integration {objectTypeNames = Prelude.pure newValue, ..}
+instance Property "Tags" Integration where
+  type PropertyType "Tags" Integration = [Tag]
+  set newValue Integration {..}
+    = Integration {tags = Prelude.pure newValue, ..}
+instance Property "Uri" Integration where
+  type PropertyType "Uri" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {uri = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.CustomerProfiles.Integration.ConnectorOperatorProperty (
+        ConnectorOperatorProperty(..), mkConnectorOperatorProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ConnectorOperatorProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html>
+    ConnectorOperatorProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html#cfn-customerprofiles-integration-connectoroperator-marketo>
+                               marketo :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html#cfn-customerprofiles-integration-connectoroperator-s3>
+                               s3 :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html#cfn-customerprofiles-integration-connectoroperator-salesforce>
+                               salesforce :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html#cfn-customerprofiles-integration-connectoroperator-servicenow>
+                               serviceNow :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-connectoroperator.html#cfn-customerprofiles-integration-connectoroperator-zendesk>
+                               zendesk :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnectorOperatorProperty :: ConnectorOperatorProperty
+mkConnectorOperatorProperty
+  = ConnectorOperatorProperty
+      {haddock_workaround_ = (), marketo = Prelude.Nothing,
+       s3 = Prelude.Nothing, salesforce = Prelude.Nothing,
+       serviceNow = Prelude.Nothing, zendesk = Prelude.Nothing}
+instance ToResourceProperties ConnectorOperatorProperty where
+  toResourceProperties ConnectorOperatorProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.ConnectorOperator",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Marketo" Prelude.<$> marketo,
+                            (JSON..=) "S3" Prelude.<$> s3,
+                            (JSON..=) "Salesforce" Prelude.<$> salesforce,
+                            (JSON..=) "ServiceNow" Prelude.<$> serviceNow,
+                            (JSON..=) "Zendesk" Prelude.<$> zendesk])}
+instance JSON.ToJSON ConnectorOperatorProperty where
+  toJSON ConnectorOperatorProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Marketo" Prelude.<$> marketo,
+               (JSON..=) "S3" Prelude.<$> s3,
+               (JSON..=) "Salesforce" Prelude.<$> salesforce,
+               (JSON..=) "ServiceNow" Prelude.<$> serviceNow,
+               (JSON..=) "Zendesk" Prelude.<$> zendesk]))
+instance Property "Marketo" ConnectorOperatorProperty where
+  type PropertyType "Marketo" ConnectorOperatorProperty = Value Prelude.Text
+  set newValue ConnectorOperatorProperty {..}
+    = ConnectorOperatorProperty {marketo = Prelude.pure newValue, ..}
+instance Property "S3" ConnectorOperatorProperty where
+  type PropertyType "S3" ConnectorOperatorProperty = Value Prelude.Text
+  set newValue ConnectorOperatorProperty {..}
+    = ConnectorOperatorProperty {s3 = Prelude.pure newValue, ..}
+instance Property "Salesforce" ConnectorOperatorProperty where
+  type PropertyType "Salesforce" ConnectorOperatorProperty = Value Prelude.Text
+  set newValue ConnectorOperatorProperty {..}
+    = ConnectorOperatorProperty
+        {salesforce = Prelude.pure newValue, ..}
+instance Property "ServiceNow" ConnectorOperatorProperty where
+  type PropertyType "ServiceNow" ConnectorOperatorProperty = Value Prelude.Text
+  set newValue ConnectorOperatorProperty {..}
+    = ConnectorOperatorProperty
+        {serviceNow = Prelude.pure newValue, ..}
+instance Property "Zendesk" ConnectorOperatorProperty where
+  type PropertyType "Zendesk" ConnectorOperatorProperty = Value Prelude.Text
+  set newValue ConnectorOperatorProperty {..}
+    = ConnectorOperatorProperty {zendesk = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ConnectorOperatorProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.ConnectorOperatorProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConnectorOperatorProperty :: Prelude.Type
+instance ToResourceProperties ConnectorOperatorProperty
+instance Prelude.Eq ConnectorOperatorProperty
+instance Prelude.Show ConnectorOperatorProperty
+instance JSON.ToJSON ConnectorOperatorProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs
@@ -0,0 +1,90 @@
+module Stratosphere.CustomerProfiles.Integration.FlowDefinitionProperty (
+        module Exports, FlowDefinitionProperty(..),
+        mkFlowDefinitionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.SourceFlowConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.TaskProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.TriggerConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FlowDefinitionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html>
+    FlowDefinitionProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-description>
+                            description :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-flowname>
+                            flowName :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-kmsarn>
+                            kmsArn :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-sourceflowconfig>
+                            sourceFlowConfig :: SourceFlowConfigProperty,
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-tasks>
+                            tasks :: [TaskProperty],
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-flowdefinition.html#cfn-customerprofiles-integration-flowdefinition-triggerconfig>
+                            triggerConfig :: TriggerConfigProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFlowDefinitionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> SourceFlowConfigProperty
+        -> [TaskProperty]
+           -> TriggerConfigProperty -> FlowDefinitionProperty
+mkFlowDefinitionProperty
+  flowName
+  kmsArn
+  sourceFlowConfig
+  tasks
+  triggerConfig
+  = FlowDefinitionProperty
+      {haddock_workaround_ = (), flowName = flowName, kmsArn = kmsArn,
+       sourceFlowConfig = sourceFlowConfig, tasks = tasks,
+       triggerConfig = triggerConfig, description = Prelude.Nothing}
+instance ToResourceProperties FlowDefinitionProperty where
+  toResourceProperties FlowDefinitionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.FlowDefinition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["FlowName" JSON..= flowName, "KmsArn" JSON..= kmsArn,
+                            "SourceFlowConfig" JSON..= sourceFlowConfig, "Tasks" JSON..= tasks,
+                            "TriggerConfig" JSON..= triggerConfig]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON FlowDefinitionProperty where
+  toJSON FlowDefinitionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["FlowName" JSON..= flowName, "KmsArn" JSON..= kmsArn,
+               "SourceFlowConfig" JSON..= sourceFlowConfig, "Tasks" JSON..= tasks,
+               "TriggerConfig" JSON..= triggerConfig]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "Description" FlowDefinitionProperty where
+  type PropertyType "Description" FlowDefinitionProperty = Value Prelude.Text
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {description = Prelude.pure newValue, ..}
+instance Property "FlowName" FlowDefinitionProperty where
+  type PropertyType "FlowName" FlowDefinitionProperty = Value Prelude.Text
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {flowName = newValue, ..}
+instance Property "KmsArn" FlowDefinitionProperty where
+  type PropertyType "KmsArn" FlowDefinitionProperty = Value Prelude.Text
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {kmsArn = newValue, ..}
+instance Property "SourceFlowConfig" FlowDefinitionProperty where
+  type PropertyType "SourceFlowConfig" FlowDefinitionProperty = SourceFlowConfigProperty
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {sourceFlowConfig = newValue, ..}
+instance Property "Tasks" FlowDefinitionProperty where
+  type PropertyType "Tasks" FlowDefinitionProperty = [TaskProperty]
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {tasks = newValue, ..}
+instance Property "TriggerConfig" FlowDefinitionProperty where
+  type PropertyType "TriggerConfig" FlowDefinitionProperty = TriggerConfigProperty
+  set newValue FlowDefinitionProperty {..}
+    = FlowDefinitionProperty {triggerConfig = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/FlowDefinitionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.FlowDefinitionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FlowDefinitionProperty :: Prelude.Type
+instance ToResourceProperties FlowDefinitionProperty
+instance Prelude.Eq FlowDefinitionProperty
+instance Prelude.Show FlowDefinitionProperty
+instance JSON.ToJSON FlowDefinitionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CustomerProfiles.Integration.IncrementalPullConfigProperty (
+        IncrementalPullConfigProperty(..), mkIncrementalPullConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IncrementalPullConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-incrementalpullconfig.html>
+    IncrementalPullConfigProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-incrementalpullconfig.html#cfn-customerprofiles-integration-incrementalpullconfig-datetimetypefieldname>
+                                   datetimeTypeFieldName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIncrementalPullConfigProperty :: IncrementalPullConfigProperty
+mkIncrementalPullConfigProperty
+  = IncrementalPullConfigProperty
+      {haddock_workaround_ = (), datetimeTypeFieldName = Prelude.Nothing}
+instance ToResourceProperties IncrementalPullConfigProperty where
+  toResourceProperties IncrementalPullConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.IncrementalPullConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DatetimeTypeFieldName"
+                              Prelude.<$> datetimeTypeFieldName])}
+instance JSON.ToJSON IncrementalPullConfigProperty where
+  toJSON IncrementalPullConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DatetimeTypeFieldName"
+                 Prelude.<$> datetimeTypeFieldName]))
+instance Property "DatetimeTypeFieldName" IncrementalPullConfigProperty where
+  type PropertyType "DatetimeTypeFieldName" IncrementalPullConfigProperty = Value Prelude.Text
+  set newValue IncrementalPullConfigProperty {..}
+    = IncrementalPullConfigProperty
+        {datetimeTypeFieldName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/IncrementalPullConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.IncrementalPullConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IncrementalPullConfigProperty :: Prelude.Type
+instance ToResourceProperties IncrementalPullConfigProperty
+instance Prelude.Eq IncrementalPullConfigProperty
+instance Prelude.Show IncrementalPullConfigProperty
+instance JSON.ToJSON IncrementalPullConfigProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CustomerProfiles.Integration.MarketoSourcePropertiesProperty (
+        MarketoSourcePropertiesProperty(..),
+        mkMarketoSourcePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MarketoSourcePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-marketosourceproperties.html>
+    MarketoSourcePropertiesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-marketosourceproperties.html#cfn-customerprofiles-integration-marketosourceproperties-object>
+                                     object :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMarketoSourcePropertiesProperty ::
+  Value Prelude.Text -> MarketoSourcePropertiesProperty
+mkMarketoSourcePropertiesProperty object
+  = MarketoSourcePropertiesProperty
+      {haddock_workaround_ = (), object = object}
+instance ToResourceProperties MarketoSourcePropertiesProperty where
+  toResourceProperties MarketoSourcePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.MarketoSourceProperties",
+         supportsTags = Prelude.False,
+         properties = ["Object" JSON..= object]}
+instance JSON.ToJSON MarketoSourcePropertiesProperty where
+  toJSON MarketoSourcePropertiesProperty {..}
+    = JSON.object ["Object" JSON..= object]
+instance Property "Object" MarketoSourcePropertiesProperty where
+  type PropertyType "Object" MarketoSourcePropertiesProperty = Value Prelude.Text
+  set newValue MarketoSourcePropertiesProperty {..}
+    = MarketoSourcePropertiesProperty {object = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/MarketoSourcePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.MarketoSourcePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MarketoSourcePropertiesProperty :: Prelude.Type
+instance ToResourceProperties MarketoSourcePropertiesProperty
+instance Prelude.Eq MarketoSourcePropertiesProperty
+instance Prelude.Show MarketoSourcePropertiesProperty
+instance JSON.ToJSON MarketoSourcePropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CustomerProfiles.Integration.ObjectTypeMappingProperty (
+        ObjectTypeMappingProperty(..), mkObjectTypeMappingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ObjectTypeMappingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-objecttypemapping.html>
+    ObjectTypeMappingProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-objecttypemapping.html#cfn-customerprofiles-integration-objecttypemapping-key>
+                               key :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-objecttypemapping.html#cfn-customerprofiles-integration-objecttypemapping-value>
+                               value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObjectTypeMappingProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ObjectTypeMappingProperty
+mkObjectTypeMappingProperty key value
+  = ObjectTypeMappingProperty
+      {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties ObjectTypeMappingProperty where
+  toResourceProperties ObjectTypeMappingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.ObjectTypeMapping",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON ObjectTypeMappingProperty where
+  toJSON ObjectTypeMappingProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" ObjectTypeMappingProperty where
+  type PropertyType "Key" ObjectTypeMappingProperty = Value Prelude.Text
+  set newValue ObjectTypeMappingProperty {..}
+    = ObjectTypeMappingProperty {key = newValue, ..}
+instance Property "Value" ObjectTypeMappingProperty where
+  type PropertyType "Value" ObjectTypeMappingProperty = Value Prelude.Text
+  set newValue ObjectTypeMappingProperty {..}
+    = ObjectTypeMappingProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ObjectTypeMappingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.ObjectTypeMappingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ObjectTypeMappingProperty :: Prelude.Type
+instance ToResourceProperties ObjectTypeMappingProperty
+instance Prelude.Eq ObjectTypeMappingProperty
+instance Prelude.Show ObjectTypeMappingProperty
+instance JSON.ToJSON ObjectTypeMappingProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CustomerProfiles.Integration.S3SourcePropertiesProperty (
+        S3SourcePropertiesProperty(..), mkS3SourcePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3SourcePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-s3sourceproperties.html>
+    S3SourcePropertiesProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-s3sourceproperties.html#cfn-customerprofiles-integration-s3sourceproperties-bucketname>
+                                bucketName :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-s3sourceproperties.html#cfn-customerprofiles-integration-s3sourceproperties-bucketprefix>
+                                bucketPrefix :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3SourcePropertiesProperty ::
+  Value Prelude.Text -> S3SourcePropertiesProperty
+mkS3SourcePropertiesProperty bucketName
+  = S3SourcePropertiesProperty
+      {haddock_workaround_ = (), bucketName = bucketName,
+       bucketPrefix = Prelude.Nothing}
+instance ToResourceProperties S3SourcePropertiesProperty where
+  toResourceProperties S3SourcePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.S3SourceProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["BucketName" JSON..= bucketName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BucketPrefix" Prelude.<$> bucketPrefix]))}
+instance JSON.ToJSON S3SourcePropertiesProperty where
+  toJSON S3SourcePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["BucketName" JSON..= bucketName]
+              (Prelude.catMaybes
+                 [(JSON..=) "BucketPrefix" Prelude.<$> bucketPrefix])))
+instance Property "BucketName" S3SourcePropertiesProperty where
+  type PropertyType "BucketName" S3SourcePropertiesProperty = Value Prelude.Text
+  set newValue S3SourcePropertiesProperty {..}
+    = S3SourcePropertiesProperty {bucketName = newValue, ..}
+instance Property "BucketPrefix" S3SourcePropertiesProperty where
+  type PropertyType "BucketPrefix" S3SourcePropertiesProperty = Value Prelude.Text
+  set newValue S3SourcePropertiesProperty {..}
+    = S3SourcePropertiesProperty
+        {bucketPrefix = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/S3SourcePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.S3SourcePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3SourcePropertiesProperty :: Prelude.Type
+instance ToResourceProperties S3SourcePropertiesProperty
+instance Prelude.Eq S3SourcePropertiesProperty
+instance Prelude.Show S3SourcePropertiesProperty
+instance JSON.ToJSON S3SourcePropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.CustomerProfiles.Integration.SalesforceSourcePropertiesProperty (
+        SalesforceSourcePropertiesProperty(..),
+        mkSalesforceSourcePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SalesforceSourcePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-salesforcesourceproperties.html>
+    SalesforceSourcePropertiesProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-salesforcesourceproperties.html#cfn-customerprofiles-integration-salesforcesourceproperties-enabledynamicfieldupdate>
+                                        enableDynamicFieldUpdate :: (Prelude.Maybe (Value Prelude.Bool)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-salesforcesourceproperties.html#cfn-customerprofiles-integration-salesforcesourceproperties-includedeletedrecords>
+                                        includeDeletedRecords :: (Prelude.Maybe (Value Prelude.Bool)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-salesforcesourceproperties.html#cfn-customerprofiles-integration-salesforcesourceproperties-object>
+                                        object :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSalesforceSourcePropertiesProperty ::
+  Value Prelude.Text -> SalesforceSourcePropertiesProperty
+mkSalesforceSourcePropertiesProperty object
+  = SalesforceSourcePropertiesProperty
+      {haddock_workaround_ = (), object = object,
+       enableDynamicFieldUpdate = Prelude.Nothing,
+       includeDeletedRecords = Prelude.Nothing}
+instance ToResourceProperties SalesforceSourcePropertiesProperty where
+  toResourceProperties SalesforceSourcePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.SalesforceSourceProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Object" JSON..= object]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EnableDynamicFieldUpdate"
+                                 Prelude.<$> enableDynamicFieldUpdate,
+                               (JSON..=) "IncludeDeletedRecords"
+                                 Prelude.<$> includeDeletedRecords]))}
+instance JSON.ToJSON SalesforceSourcePropertiesProperty where
+  toJSON SalesforceSourcePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Object" JSON..= object]
+              (Prelude.catMaybes
+                 [(JSON..=) "EnableDynamicFieldUpdate"
+                    Prelude.<$> enableDynamicFieldUpdate,
+                  (JSON..=) "IncludeDeletedRecords"
+                    Prelude.<$> includeDeletedRecords])))
+instance Property "EnableDynamicFieldUpdate" SalesforceSourcePropertiesProperty where
+  type PropertyType "EnableDynamicFieldUpdate" SalesforceSourcePropertiesProperty = Value Prelude.Bool
+  set newValue SalesforceSourcePropertiesProperty {..}
+    = SalesforceSourcePropertiesProperty
+        {enableDynamicFieldUpdate = Prelude.pure newValue, ..}
+instance Property "IncludeDeletedRecords" SalesforceSourcePropertiesProperty where
+  type PropertyType "IncludeDeletedRecords" SalesforceSourcePropertiesProperty = Value Prelude.Bool
+  set newValue SalesforceSourcePropertiesProperty {..}
+    = SalesforceSourcePropertiesProperty
+        {includeDeletedRecords = Prelude.pure newValue, ..}
+instance Property "Object" SalesforceSourcePropertiesProperty where
+  type PropertyType "Object" SalesforceSourcePropertiesProperty = Value Prelude.Text
+  set newValue SalesforceSourcePropertiesProperty {..}
+    = SalesforceSourcePropertiesProperty {object = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SalesforceSourcePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.SalesforceSourcePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SalesforceSourcePropertiesProperty :: Prelude.Type
+instance ToResourceProperties SalesforceSourcePropertiesProperty
+instance Prelude.Eq SalesforceSourcePropertiesProperty
+instance Prelude.Show SalesforceSourcePropertiesProperty
+instance JSON.ToJSON SalesforceSourcePropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs
@@ -0,0 +1,100 @@
+module Stratosphere.CustomerProfiles.Integration.ScheduledTriggerPropertiesProperty (
+        ScheduledTriggerPropertiesProperty(..),
+        mkScheduledTriggerPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScheduledTriggerPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html>
+    ScheduledTriggerPropertiesProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-datapullmode>
+                                        dataPullMode :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-firstexecutionfrom>
+                                        firstExecutionFrom :: (Prelude.Maybe (Value Prelude.Double)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-scheduleendtime>
+                                        scheduleEndTime :: (Prelude.Maybe (Value Prelude.Double)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-scheduleexpression>
+                                        scheduleExpression :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-scheduleoffset>
+                                        scheduleOffset :: (Prelude.Maybe (Value Prelude.Integer)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-schedulestarttime>
+                                        scheduleStartTime :: (Prelude.Maybe (Value Prelude.Double)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-scheduledtriggerproperties.html#cfn-customerprofiles-integration-scheduledtriggerproperties-timezone>
+                                        timezone :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScheduledTriggerPropertiesProperty ::
+  Value Prelude.Text -> ScheduledTriggerPropertiesProperty
+mkScheduledTriggerPropertiesProperty scheduleExpression
+  = ScheduledTriggerPropertiesProperty
+      {haddock_workaround_ = (), scheduleExpression = scheduleExpression,
+       dataPullMode = Prelude.Nothing,
+       firstExecutionFrom = Prelude.Nothing,
+       scheduleEndTime = Prelude.Nothing,
+       scheduleOffset = Prelude.Nothing,
+       scheduleStartTime = Prelude.Nothing, timezone = Prelude.Nothing}
+instance ToResourceProperties ScheduledTriggerPropertiesProperty where
+  toResourceProperties ScheduledTriggerPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.ScheduledTriggerProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ScheduleExpression" JSON..= scheduleExpression]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DataPullMode" Prelude.<$> dataPullMode,
+                               (JSON..=) "FirstExecutionFrom" Prelude.<$> firstExecutionFrom,
+                               (JSON..=) "ScheduleEndTime" Prelude.<$> scheduleEndTime,
+                               (JSON..=) "ScheduleOffset" Prelude.<$> scheduleOffset,
+                               (JSON..=) "ScheduleStartTime" Prelude.<$> scheduleStartTime,
+                               (JSON..=) "Timezone" Prelude.<$> timezone]))}
+instance JSON.ToJSON ScheduledTriggerPropertiesProperty where
+  toJSON ScheduledTriggerPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ScheduleExpression" JSON..= scheduleExpression]
+              (Prelude.catMaybes
+                 [(JSON..=) "DataPullMode" Prelude.<$> dataPullMode,
+                  (JSON..=) "FirstExecutionFrom" Prelude.<$> firstExecutionFrom,
+                  (JSON..=) "ScheduleEndTime" Prelude.<$> scheduleEndTime,
+                  (JSON..=) "ScheduleOffset" Prelude.<$> scheduleOffset,
+                  (JSON..=) "ScheduleStartTime" Prelude.<$> scheduleStartTime,
+                  (JSON..=) "Timezone" Prelude.<$> timezone])))
+instance Property "DataPullMode" ScheduledTriggerPropertiesProperty where
+  type PropertyType "DataPullMode" ScheduledTriggerPropertiesProperty = Value Prelude.Text
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {dataPullMode = Prelude.pure newValue, ..}
+instance Property "FirstExecutionFrom" ScheduledTriggerPropertiesProperty where
+  type PropertyType "FirstExecutionFrom" ScheduledTriggerPropertiesProperty = Value Prelude.Double
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {firstExecutionFrom = Prelude.pure newValue, ..}
+instance Property "ScheduleEndTime" ScheduledTriggerPropertiesProperty where
+  type PropertyType "ScheduleEndTime" ScheduledTriggerPropertiesProperty = Value Prelude.Double
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {scheduleEndTime = Prelude.pure newValue, ..}
+instance Property "ScheduleExpression" ScheduledTriggerPropertiesProperty where
+  type PropertyType "ScheduleExpression" ScheduledTriggerPropertiesProperty = Value Prelude.Text
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {scheduleExpression = newValue, ..}
+instance Property "ScheduleOffset" ScheduledTriggerPropertiesProperty where
+  type PropertyType "ScheduleOffset" ScheduledTriggerPropertiesProperty = Value Prelude.Integer
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {scheduleOffset = Prelude.pure newValue, ..}
+instance Property "ScheduleStartTime" ScheduledTriggerPropertiesProperty where
+  type PropertyType "ScheduleStartTime" ScheduledTriggerPropertiesProperty = Value Prelude.Double
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {scheduleStartTime = Prelude.pure newValue, ..}
+instance Property "Timezone" ScheduledTriggerPropertiesProperty where
+  type PropertyType "Timezone" ScheduledTriggerPropertiesProperty = Value Prelude.Text
+  set newValue ScheduledTriggerPropertiesProperty {..}
+    = ScheduledTriggerPropertiesProperty
+        {timezone = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ScheduledTriggerPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.ScheduledTriggerPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScheduledTriggerPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ScheduledTriggerPropertiesProperty
+instance Prelude.Eq ScheduledTriggerPropertiesProperty
+instance Prelude.Show ScheduledTriggerPropertiesProperty
+instance JSON.ToJSON ScheduledTriggerPropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CustomerProfiles.Integration.ServiceNowSourcePropertiesProperty (
+        ServiceNowSourcePropertiesProperty(..),
+        mkServiceNowSourcePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ServiceNowSourcePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-servicenowsourceproperties.html>
+    ServiceNowSourcePropertiesProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-servicenowsourceproperties.html#cfn-customerprofiles-integration-servicenowsourceproperties-object>
+                                        object :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkServiceNowSourcePropertiesProperty ::
+  Value Prelude.Text -> ServiceNowSourcePropertiesProperty
+mkServiceNowSourcePropertiesProperty object
+  = ServiceNowSourcePropertiesProperty
+      {haddock_workaround_ = (), object = object}
+instance ToResourceProperties ServiceNowSourcePropertiesProperty where
+  toResourceProperties ServiceNowSourcePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.ServiceNowSourceProperties",
+         supportsTags = Prelude.False,
+         properties = ["Object" JSON..= object]}
+instance JSON.ToJSON ServiceNowSourcePropertiesProperty where
+  toJSON ServiceNowSourcePropertiesProperty {..}
+    = JSON.object ["Object" JSON..= object]
+instance Property "Object" ServiceNowSourcePropertiesProperty where
+  type PropertyType "Object" ServiceNowSourcePropertiesProperty = Value Prelude.Text
+  set newValue ServiceNowSourcePropertiesProperty {..}
+    = ServiceNowSourcePropertiesProperty {object = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ServiceNowSourcePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.ServiceNowSourcePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ServiceNowSourcePropertiesProperty :: Prelude.Type
+instance ToResourceProperties ServiceNowSourcePropertiesProperty
+instance Prelude.Eq ServiceNowSourcePropertiesProperty
+instance Prelude.Show ServiceNowSourcePropertiesProperty
+instance JSON.ToJSON ServiceNowSourcePropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs
@@ -0,0 +1,81 @@
+module Stratosphere.CustomerProfiles.Integration.SourceConnectorPropertiesProperty (
+        module Exports, SourceConnectorPropertiesProperty(..),
+        mkSourceConnectorPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.MarketoSourcePropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.S3SourcePropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.SalesforceSourcePropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.ServiceNowSourcePropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.ZendeskSourcePropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+data SourceConnectorPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html>
+    SourceConnectorPropertiesProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html#cfn-customerprofiles-integration-sourceconnectorproperties-marketo>
+                                       marketo :: (Prelude.Maybe MarketoSourcePropertiesProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html#cfn-customerprofiles-integration-sourceconnectorproperties-s3>
+                                       s3 :: (Prelude.Maybe S3SourcePropertiesProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html#cfn-customerprofiles-integration-sourceconnectorproperties-salesforce>
+                                       salesforce :: (Prelude.Maybe SalesforceSourcePropertiesProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html#cfn-customerprofiles-integration-sourceconnectorproperties-servicenow>
+                                       serviceNow :: (Prelude.Maybe ServiceNowSourcePropertiesProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceconnectorproperties.html#cfn-customerprofiles-integration-sourceconnectorproperties-zendesk>
+                                       zendesk :: (Prelude.Maybe ZendeskSourcePropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceConnectorPropertiesProperty ::
+  SourceConnectorPropertiesProperty
+mkSourceConnectorPropertiesProperty
+  = SourceConnectorPropertiesProperty
+      {haddock_workaround_ = (), marketo = Prelude.Nothing,
+       s3 = Prelude.Nothing, salesforce = Prelude.Nothing,
+       serviceNow = Prelude.Nothing, zendesk = Prelude.Nothing}
+instance ToResourceProperties SourceConnectorPropertiesProperty where
+  toResourceProperties SourceConnectorPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.SourceConnectorProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Marketo" Prelude.<$> marketo,
+                            (JSON..=) "S3" Prelude.<$> s3,
+                            (JSON..=) "Salesforce" Prelude.<$> salesforce,
+                            (JSON..=) "ServiceNow" Prelude.<$> serviceNow,
+                            (JSON..=) "Zendesk" Prelude.<$> zendesk])}
+instance JSON.ToJSON SourceConnectorPropertiesProperty where
+  toJSON SourceConnectorPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Marketo" Prelude.<$> marketo,
+               (JSON..=) "S3" Prelude.<$> s3,
+               (JSON..=) "Salesforce" Prelude.<$> salesforce,
+               (JSON..=) "ServiceNow" Prelude.<$> serviceNow,
+               (JSON..=) "Zendesk" Prelude.<$> zendesk]))
+instance Property "Marketo" SourceConnectorPropertiesProperty where
+  type PropertyType "Marketo" SourceConnectorPropertiesProperty = MarketoSourcePropertiesProperty
+  set newValue SourceConnectorPropertiesProperty {..}
+    = SourceConnectorPropertiesProperty
+        {marketo = Prelude.pure newValue, ..}
+instance Property "S3" SourceConnectorPropertiesProperty where
+  type PropertyType "S3" SourceConnectorPropertiesProperty = S3SourcePropertiesProperty
+  set newValue SourceConnectorPropertiesProperty {..}
+    = SourceConnectorPropertiesProperty
+        {s3 = Prelude.pure newValue, ..}
+instance Property "Salesforce" SourceConnectorPropertiesProperty where
+  type PropertyType "Salesforce" SourceConnectorPropertiesProperty = SalesforceSourcePropertiesProperty
+  set newValue SourceConnectorPropertiesProperty {..}
+    = SourceConnectorPropertiesProperty
+        {salesforce = Prelude.pure newValue, ..}
+instance Property "ServiceNow" SourceConnectorPropertiesProperty where
+  type PropertyType "ServiceNow" SourceConnectorPropertiesProperty = ServiceNowSourcePropertiesProperty
+  set newValue SourceConnectorPropertiesProperty {..}
+    = SourceConnectorPropertiesProperty
+        {serviceNow = Prelude.pure newValue, ..}
+instance Property "Zendesk" SourceConnectorPropertiesProperty where
+  type PropertyType "Zendesk" SourceConnectorPropertiesProperty = ZendeskSourcePropertiesProperty
+  set newValue SourceConnectorPropertiesProperty {..}
+    = SourceConnectorPropertiesProperty
+        {zendesk = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SourceConnectorPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.SourceConnectorPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceConnectorPropertiesProperty :: Prelude.Type
+instance ToResourceProperties SourceConnectorPropertiesProperty
+instance Prelude.Eq SourceConnectorPropertiesProperty
+instance Prelude.Show SourceConnectorPropertiesProperty
+instance JSON.ToJSON SourceConnectorPropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs
@@ -0,0 +1,75 @@
+module Stratosphere.CustomerProfiles.Integration.SourceFlowConfigProperty (
+        module Exports, SourceFlowConfigProperty(..),
+        mkSourceFlowConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.IncrementalPullConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.SourceConnectorPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceFlowConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceflowconfig.html>
+    SourceFlowConfigProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceflowconfig.html#cfn-customerprofiles-integration-sourceflowconfig-connectorprofilename>
+                              connectorProfileName :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceflowconfig.html#cfn-customerprofiles-integration-sourceflowconfig-connectortype>
+                              connectorType :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceflowconfig.html#cfn-customerprofiles-integration-sourceflowconfig-incrementalpullconfig>
+                              incrementalPullConfig :: (Prelude.Maybe IncrementalPullConfigProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-sourceflowconfig.html#cfn-customerprofiles-integration-sourceflowconfig-sourceconnectorproperties>
+                              sourceConnectorProperties :: SourceConnectorPropertiesProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceFlowConfigProperty ::
+  Value Prelude.Text
+  -> SourceConnectorPropertiesProperty -> SourceFlowConfigProperty
+mkSourceFlowConfigProperty connectorType sourceConnectorProperties
+  = SourceFlowConfigProperty
+      {haddock_workaround_ = (), connectorType = connectorType,
+       sourceConnectorProperties = sourceConnectorProperties,
+       connectorProfileName = Prelude.Nothing,
+       incrementalPullConfig = Prelude.Nothing}
+instance ToResourceProperties SourceFlowConfigProperty where
+  toResourceProperties SourceFlowConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.SourceFlowConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConnectorType" JSON..= connectorType,
+                            "SourceConnectorProperties" JSON..= sourceConnectorProperties]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConnectorProfileName" Prelude.<$> connectorProfileName,
+                               (JSON..=) "IncrementalPullConfig"
+                                 Prelude.<$> incrementalPullConfig]))}
+instance JSON.ToJSON SourceFlowConfigProperty where
+  toJSON SourceFlowConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConnectorType" JSON..= connectorType,
+               "SourceConnectorProperties" JSON..= sourceConnectorProperties]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConnectorProfileName" Prelude.<$> connectorProfileName,
+                  (JSON..=) "IncrementalPullConfig"
+                    Prelude.<$> incrementalPullConfig])))
+instance Property "ConnectorProfileName" SourceFlowConfigProperty where
+  type PropertyType "ConnectorProfileName" SourceFlowConfigProperty = Value Prelude.Text
+  set newValue SourceFlowConfigProperty {..}
+    = SourceFlowConfigProperty
+        {connectorProfileName = Prelude.pure newValue, ..}
+instance Property "ConnectorType" SourceFlowConfigProperty where
+  type PropertyType "ConnectorType" SourceFlowConfigProperty = Value Prelude.Text
+  set newValue SourceFlowConfigProperty {..}
+    = SourceFlowConfigProperty {connectorType = newValue, ..}
+instance Property "IncrementalPullConfig" SourceFlowConfigProperty where
+  type PropertyType "IncrementalPullConfig" SourceFlowConfigProperty = IncrementalPullConfigProperty
+  set newValue SourceFlowConfigProperty {..}
+    = SourceFlowConfigProperty
+        {incrementalPullConfig = Prelude.pure newValue, ..}
+instance Property "SourceConnectorProperties" SourceFlowConfigProperty where
+  type PropertyType "SourceConnectorProperties" SourceFlowConfigProperty = SourceConnectorPropertiesProperty
+  set newValue SourceFlowConfigProperty {..}
+    = SourceFlowConfigProperty
+        {sourceConnectorProperties = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/SourceFlowConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.SourceFlowConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceFlowConfigProperty :: Prelude.Type
+instance ToResourceProperties SourceFlowConfigProperty
+instance Prelude.Eq SourceFlowConfigProperty
+instance Prelude.Show SourceFlowConfigProperty
+instance JSON.ToJSON SourceFlowConfigProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.CustomerProfiles.Integration.TaskPropertiesMapProperty (
+        TaskPropertiesMapProperty(..), mkTaskPropertiesMapProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TaskPropertiesMapProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-taskpropertiesmap.html>
+    TaskPropertiesMapProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-taskpropertiesmap.html#cfn-customerprofiles-integration-taskpropertiesmap-operatorpropertykey>
+                               operatorPropertyKey :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-taskpropertiesmap.html#cfn-customerprofiles-integration-taskpropertiesmap-property>
+                               property :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTaskPropertiesMapProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> TaskPropertiesMapProperty
+mkTaskPropertiesMapProperty operatorPropertyKey property
+  = TaskPropertiesMapProperty
+      {haddock_workaround_ = (),
+       operatorPropertyKey = operatorPropertyKey, property = property}
+instance ToResourceProperties TaskPropertiesMapProperty where
+  toResourceProperties TaskPropertiesMapProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.TaskPropertiesMap",
+         supportsTags = Prelude.False,
+         properties = ["OperatorPropertyKey" JSON..= operatorPropertyKey,
+                       "Property" JSON..= property]}
+instance JSON.ToJSON TaskPropertiesMapProperty where
+  toJSON TaskPropertiesMapProperty {..}
+    = JSON.object
+        ["OperatorPropertyKey" JSON..= operatorPropertyKey,
+         "Property" JSON..= property]
+instance Property "OperatorPropertyKey" TaskPropertiesMapProperty where
+  type PropertyType "OperatorPropertyKey" TaskPropertiesMapProperty = Value Prelude.Text
+  set newValue TaskPropertiesMapProperty {..}
+    = TaskPropertiesMapProperty {operatorPropertyKey = newValue, ..}
+instance Property "Property" TaskPropertiesMapProperty where
+  type PropertyType "Property" TaskPropertiesMapProperty = Value Prelude.Text
+  set newValue TaskPropertiesMapProperty {..}
+    = TaskPropertiesMapProperty {property = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TaskPropertiesMapProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.TaskPropertiesMapProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TaskPropertiesMapProperty :: Prelude.Type
+instance ToResourceProperties TaskPropertiesMapProperty
+instance Prelude.Eq TaskPropertiesMapProperty
+instance Prelude.Show TaskPropertiesMapProperty
+instance JSON.ToJSON TaskPropertiesMapProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs
@@ -0,0 +1,74 @@
+module Stratosphere.CustomerProfiles.Integration.TaskProperty (
+        module Exports, TaskProperty(..), mkTaskProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.ConnectorOperatorProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.TaskPropertiesMapProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TaskProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html>
+    TaskProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html#cfn-customerprofiles-integration-task-connectoroperator>
+                  connectorOperator :: (Prelude.Maybe ConnectorOperatorProperty),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html#cfn-customerprofiles-integration-task-destinationfield>
+                  destinationField :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html#cfn-customerprofiles-integration-task-sourcefields>
+                  sourceFields :: (ValueList Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html#cfn-customerprofiles-integration-task-taskproperties>
+                  taskProperties :: (Prelude.Maybe [TaskPropertiesMapProperty]),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-task.html#cfn-customerprofiles-integration-task-tasktype>
+                  taskType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTaskProperty ::
+  ValueList Prelude.Text -> Value Prelude.Text -> TaskProperty
+mkTaskProperty sourceFields taskType
+  = TaskProperty
+      {haddock_workaround_ = (), sourceFields = sourceFields,
+       taskType = taskType, connectorOperator = Prelude.Nothing,
+       destinationField = Prelude.Nothing,
+       taskProperties = Prelude.Nothing}
+instance ToResourceProperties TaskProperty where
+  toResourceProperties TaskProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.Task",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceFields" JSON..= sourceFields, "TaskType" JSON..= taskType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConnectorOperator" Prelude.<$> connectorOperator,
+                               (JSON..=) "DestinationField" Prelude.<$> destinationField,
+                               (JSON..=) "TaskProperties" Prelude.<$> taskProperties]))}
+instance JSON.ToJSON TaskProperty where
+  toJSON TaskProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceFields" JSON..= sourceFields, "TaskType" JSON..= taskType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConnectorOperator" Prelude.<$> connectorOperator,
+                  (JSON..=) "DestinationField" Prelude.<$> destinationField,
+                  (JSON..=) "TaskProperties" Prelude.<$> taskProperties])))
+instance Property "ConnectorOperator" TaskProperty where
+  type PropertyType "ConnectorOperator" TaskProperty = ConnectorOperatorProperty
+  set newValue TaskProperty {..}
+    = TaskProperty {connectorOperator = Prelude.pure newValue, ..}
+instance Property "DestinationField" TaskProperty where
+  type PropertyType "DestinationField" TaskProperty = Value Prelude.Text
+  set newValue TaskProperty {..}
+    = TaskProperty {destinationField = Prelude.pure newValue, ..}
+instance Property "SourceFields" TaskProperty where
+  type PropertyType "SourceFields" TaskProperty = ValueList Prelude.Text
+  set newValue TaskProperty {..}
+    = TaskProperty {sourceFields = newValue, ..}
+instance Property "TaskProperties" TaskProperty where
+  type PropertyType "TaskProperties" TaskProperty = [TaskPropertiesMapProperty]
+  set newValue TaskProperty {..}
+    = TaskProperty {taskProperties = Prelude.pure newValue, ..}
+instance Property "TaskType" TaskProperty where
+  type PropertyType "TaskType" TaskProperty = Value Prelude.Text
+  set newValue TaskProperty {..}
+    = TaskProperty {taskType = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TaskProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.TaskProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TaskProperty :: Prelude.Type
+instance ToResourceProperties TaskProperty
+instance Prelude.Eq TaskProperty
+instance Prelude.Show TaskProperty
+instance JSON.ToJSON TaskProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.CustomerProfiles.Integration.TriggerConfigProperty (
+        module Exports, TriggerConfigProperty(..), mkTriggerConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.TriggerPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TriggerConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-triggerconfig.html>
+    TriggerConfigProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-triggerconfig.html#cfn-customerprofiles-integration-triggerconfig-triggerproperties>
+                           triggerProperties :: (Prelude.Maybe TriggerPropertiesProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-triggerconfig.html#cfn-customerprofiles-integration-triggerconfig-triggertype>
+                           triggerType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTriggerConfigProperty ::
+  Value Prelude.Text -> TriggerConfigProperty
+mkTriggerConfigProperty triggerType
+  = TriggerConfigProperty
+      {haddock_workaround_ = (), triggerType = triggerType,
+       triggerProperties = Prelude.Nothing}
+instance ToResourceProperties TriggerConfigProperty where
+  toResourceProperties TriggerConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.TriggerConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TriggerType" JSON..= triggerType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "TriggerProperties" Prelude.<$> triggerProperties]))}
+instance JSON.ToJSON TriggerConfigProperty where
+  toJSON TriggerConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TriggerType" JSON..= triggerType]
+              (Prelude.catMaybes
+                 [(JSON..=) "TriggerProperties" Prelude.<$> triggerProperties])))
+instance Property "TriggerProperties" TriggerConfigProperty where
+  type PropertyType "TriggerProperties" TriggerConfigProperty = TriggerPropertiesProperty
+  set newValue TriggerConfigProperty {..}
+    = TriggerConfigProperty
+        {triggerProperties = Prelude.pure newValue, ..}
+instance Property "TriggerType" TriggerConfigProperty where
+  type PropertyType "TriggerType" TriggerConfigProperty = Value Prelude.Text
+  set newValue TriggerConfigProperty {..}
+    = TriggerConfigProperty {triggerType = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TriggerConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.TriggerConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TriggerConfigProperty :: Prelude.Type
+instance ToResourceProperties TriggerConfigProperty
+instance Prelude.Eq TriggerConfigProperty
+instance Prelude.Show TriggerConfigProperty
+instance JSON.ToJSON TriggerConfigProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.CustomerProfiles.Integration.TriggerPropertiesProperty (
+        module Exports, TriggerPropertiesProperty(..),
+        mkTriggerPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.Integration.ScheduledTriggerPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+data TriggerPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-triggerproperties.html>
+    TriggerPropertiesProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-triggerproperties.html#cfn-customerprofiles-integration-triggerproperties-scheduled>
+                               scheduled :: (Prelude.Maybe ScheduledTriggerPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTriggerPropertiesProperty :: TriggerPropertiesProperty
+mkTriggerPropertiesProperty
+  = TriggerPropertiesProperty
+      {haddock_workaround_ = (), scheduled = Prelude.Nothing}
+instance ToResourceProperties TriggerPropertiesProperty where
+  toResourceProperties TriggerPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.TriggerProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Scheduled" Prelude.<$> scheduled])}
+instance JSON.ToJSON TriggerPropertiesProperty where
+  toJSON TriggerPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Scheduled" Prelude.<$> scheduled]))
+instance Property "Scheduled" TriggerPropertiesProperty where
+  type PropertyType "Scheduled" TriggerPropertiesProperty = ScheduledTriggerPropertiesProperty
+  set newValue TriggerPropertiesProperty {..}
+    = TriggerPropertiesProperty {scheduled = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/TriggerPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.TriggerPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TriggerPropertiesProperty :: Prelude.Type
+instance ToResourceProperties TriggerPropertiesProperty
+instance Prelude.Eq TriggerPropertiesProperty
+instance Prelude.Show TriggerPropertiesProperty
+instance JSON.ToJSON TriggerPropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs b/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CustomerProfiles.Integration.ZendeskSourcePropertiesProperty (
+        ZendeskSourcePropertiesProperty(..),
+        mkZendeskSourcePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ZendeskSourcePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-zendesksourceproperties.html>
+    ZendeskSourcePropertiesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-integration-zendesksourceproperties.html#cfn-customerprofiles-integration-zendesksourceproperties-object>
+                                     object :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkZendeskSourcePropertiesProperty ::
+  Value Prelude.Text -> ZendeskSourcePropertiesProperty
+mkZendeskSourcePropertiesProperty object
+  = ZendeskSourcePropertiesProperty
+      {haddock_workaround_ = (), object = object}
+instance ToResourceProperties ZendeskSourcePropertiesProperty where
+  toResourceProperties ZendeskSourcePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::Integration.ZendeskSourceProperties",
+         supportsTags = Prelude.False,
+         properties = ["Object" JSON..= object]}
+instance JSON.ToJSON ZendeskSourcePropertiesProperty where
+  toJSON ZendeskSourcePropertiesProperty {..}
+    = JSON.object ["Object" JSON..= object]
+instance Property "Object" ZendeskSourcePropertiesProperty where
+  type PropertyType "Object" ZendeskSourcePropertiesProperty = Value Prelude.Text
+  set newValue ZendeskSourcePropertiesProperty {..}
+    = ZendeskSourcePropertiesProperty {object = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/Integration/ZendeskSourcePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.Integration.ZendeskSourcePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ZendeskSourcePropertiesProperty :: Prelude.Type
+instance ToResourceProperties ZendeskSourcePropertiesProperty
+instance Prelude.Eq ZendeskSourcePropertiesProperty
+instance Prelude.Show ZendeskSourcePropertiesProperty
+instance JSON.ToJSON ZendeskSourcePropertiesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType.hs b/gen/Stratosphere/CustomerProfiles/ObjectType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType.hs
@@ -0,0 +1,143 @@
+module Stratosphere.CustomerProfiles.ObjectType (
+        module Exports, ObjectType(..), mkObjectType
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.ObjectType.FieldMapProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.ObjectType.KeyMapProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ObjectType
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html>
+    ObjectType {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-allowprofilecreation>
+                allowProfileCreation :: (Prelude.Maybe (Value Prelude.Bool)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-description>
+                description :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-domainname>
+                domainName :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-encryptionkey>
+                encryptionKey :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-expirationdays>
+                expirationDays :: (Prelude.Maybe (Value Prelude.Integer)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-fields>
+                fields :: (Prelude.Maybe [FieldMapProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-keys>
+                keys :: (Prelude.Maybe [KeyMapProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-maxprofileobjectcount>
+                maxProfileObjectCount :: (Prelude.Maybe (Value Prelude.Integer)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-objecttypename>
+                objectTypeName :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-sourcelastupdatedtimestampformat>
+                sourceLastUpdatedTimestampFormat :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-tags>
+                tags :: (Prelude.Maybe [Tag]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-objecttype.html#cfn-customerprofiles-objecttype-templateid>
+                templateId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObjectType ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> ObjectType
+mkObjectType description domainName objectTypeName
+  = ObjectType
+      {haddock_workaround_ = (), description = description,
+       domainName = domainName, objectTypeName = objectTypeName,
+       allowProfileCreation = Prelude.Nothing,
+       encryptionKey = Prelude.Nothing, expirationDays = Prelude.Nothing,
+       fields = Prelude.Nothing, keys = Prelude.Nothing,
+       maxProfileObjectCount = Prelude.Nothing,
+       sourceLastUpdatedTimestampFormat = Prelude.Nothing,
+       tags = Prelude.Nothing, templateId = Prelude.Nothing}
+instance ToResourceProperties ObjectType where
+  toResourceProperties ObjectType {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::ObjectType",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Description" JSON..= description,
+                            "DomainName" JSON..= domainName,
+                            "ObjectTypeName" JSON..= objectTypeName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AllowProfileCreation" Prelude.<$> allowProfileCreation,
+                               (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                               (JSON..=) "ExpirationDays" Prelude.<$> expirationDays,
+                               (JSON..=) "Fields" Prelude.<$> fields,
+                               (JSON..=) "Keys" Prelude.<$> keys,
+                               (JSON..=) "MaxProfileObjectCount"
+                                 Prelude.<$> maxProfileObjectCount,
+                               (JSON..=) "SourceLastUpdatedTimestampFormat"
+                                 Prelude.<$> sourceLastUpdatedTimestampFormat,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "TemplateId" Prelude.<$> templateId]))}
+instance JSON.ToJSON ObjectType where
+  toJSON ObjectType {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Description" JSON..= description,
+               "DomainName" JSON..= domainName,
+               "ObjectTypeName" JSON..= objectTypeName]
+              (Prelude.catMaybes
+                 [(JSON..=) "AllowProfileCreation" Prelude.<$> allowProfileCreation,
+                  (JSON..=) "EncryptionKey" Prelude.<$> encryptionKey,
+                  (JSON..=) "ExpirationDays" Prelude.<$> expirationDays,
+                  (JSON..=) "Fields" Prelude.<$> fields,
+                  (JSON..=) "Keys" Prelude.<$> keys,
+                  (JSON..=) "MaxProfileObjectCount"
+                    Prelude.<$> maxProfileObjectCount,
+                  (JSON..=) "SourceLastUpdatedTimestampFormat"
+                    Prelude.<$> sourceLastUpdatedTimestampFormat,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "TemplateId" Prelude.<$> templateId])))
+instance Property "AllowProfileCreation" ObjectType where
+  type PropertyType "AllowProfileCreation" ObjectType = Value Prelude.Bool
+  set newValue ObjectType {..}
+    = ObjectType {allowProfileCreation = Prelude.pure newValue, ..}
+instance Property "Description" ObjectType where
+  type PropertyType "Description" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType {description = newValue, ..}
+instance Property "DomainName" ObjectType where
+  type PropertyType "DomainName" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType {domainName = newValue, ..}
+instance Property "EncryptionKey" ObjectType where
+  type PropertyType "EncryptionKey" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType {encryptionKey = Prelude.pure newValue, ..}
+instance Property "ExpirationDays" ObjectType where
+  type PropertyType "ExpirationDays" ObjectType = Value Prelude.Integer
+  set newValue ObjectType {..}
+    = ObjectType {expirationDays = Prelude.pure newValue, ..}
+instance Property "Fields" ObjectType where
+  type PropertyType "Fields" ObjectType = [FieldMapProperty]
+  set newValue ObjectType {..}
+    = ObjectType {fields = Prelude.pure newValue, ..}
+instance Property "Keys" ObjectType where
+  type PropertyType "Keys" ObjectType = [KeyMapProperty]
+  set newValue ObjectType {..}
+    = ObjectType {keys = Prelude.pure newValue, ..}
+instance Property "MaxProfileObjectCount" ObjectType where
+  type PropertyType "MaxProfileObjectCount" ObjectType = Value Prelude.Integer
+  set newValue ObjectType {..}
+    = ObjectType {maxProfileObjectCount = Prelude.pure newValue, ..}
+instance Property "ObjectTypeName" ObjectType where
+  type PropertyType "ObjectTypeName" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType {objectTypeName = newValue, ..}
+instance Property "SourceLastUpdatedTimestampFormat" ObjectType where
+  type PropertyType "SourceLastUpdatedTimestampFormat" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType
+        {sourceLastUpdatedTimestampFormat = Prelude.pure newValue, ..}
+instance Property "Tags" ObjectType where
+  type PropertyType "Tags" ObjectType = [Tag]
+  set newValue ObjectType {..}
+    = ObjectType {tags = Prelude.pure newValue, ..}
+instance Property "TemplateId" ObjectType where
+  type PropertyType "TemplateId" ObjectType = Value Prelude.Text
+  set newValue ObjectType {..}
+    = ObjectType {templateId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs b/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.ObjectType.FieldMapProperty (
+        module Exports, FieldMapProperty(..), mkFieldMapProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.ObjectType.ObjectTypeFieldProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldMapProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-fieldmap.html>
+    FieldMapProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-fieldmap.html#cfn-customerprofiles-objecttype-fieldmap-name>
+                      name :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-fieldmap.html#cfn-customerprofiles-objecttype-fieldmap-objecttypefield>
+                      objectTypeField :: (Prelude.Maybe ObjectTypeFieldProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldMapProperty :: FieldMapProperty
+mkFieldMapProperty
+  = FieldMapProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       objectTypeField = Prelude.Nothing}
+instance ToResourceProperties FieldMapProperty where
+  toResourceProperties FieldMapProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::ObjectType.FieldMap",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "ObjectTypeField" Prelude.<$> objectTypeField])}
+instance JSON.ToJSON FieldMapProperty where
+  toJSON FieldMapProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "ObjectTypeField" Prelude.<$> objectTypeField]))
+instance Property "Name" FieldMapProperty where
+  type PropertyType "Name" FieldMapProperty = Value Prelude.Text
+  set newValue FieldMapProperty {..}
+    = FieldMapProperty {name = Prelude.pure newValue, ..}
+instance Property "ObjectTypeField" FieldMapProperty where
+  type PropertyType "ObjectTypeField" FieldMapProperty = ObjectTypeFieldProperty
+  set newValue FieldMapProperty {..}
+    = FieldMapProperty {objectTypeField = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/FieldMapProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.ObjectType.FieldMapProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldMapProperty :: Prelude.Type
+instance ToResourceProperties FieldMapProperty
+instance Prelude.Eq FieldMapProperty
+instance Prelude.Show FieldMapProperty
+instance JSON.ToJSON FieldMapProperty
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs b/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.ObjectType.KeyMapProperty (
+        module Exports, KeyMapProperty(..), mkKeyMapProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.ObjectType.ObjectTypeKeyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KeyMapProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-keymap.html>
+    KeyMapProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-keymap.html#cfn-customerprofiles-objecttype-keymap-name>
+                    name :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-keymap.html#cfn-customerprofiles-objecttype-keymap-objecttypekeylist>
+                    objectTypeKeyList :: (Prelude.Maybe [ObjectTypeKeyProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKeyMapProperty :: KeyMapProperty
+mkKeyMapProperty
+  = KeyMapProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       objectTypeKeyList = Prelude.Nothing}
+instance ToResourceProperties KeyMapProperty where
+  toResourceProperties KeyMapProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::ObjectType.KeyMap",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "ObjectTypeKeyList" Prelude.<$> objectTypeKeyList])}
+instance JSON.ToJSON KeyMapProperty where
+  toJSON KeyMapProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "ObjectTypeKeyList" Prelude.<$> objectTypeKeyList]))
+instance Property "Name" KeyMapProperty where
+  type PropertyType "Name" KeyMapProperty = Value Prelude.Text
+  set newValue KeyMapProperty {..}
+    = KeyMapProperty {name = Prelude.pure newValue, ..}
+instance Property "ObjectTypeKeyList" KeyMapProperty where
+  type PropertyType "ObjectTypeKeyList" KeyMapProperty = [ObjectTypeKeyProperty]
+  set newValue KeyMapProperty {..}
+    = KeyMapProperty {objectTypeKeyList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/KeyMapProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.ObjectType.KeyMapProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KeyMapProperty :: Prelude.Type
+instance ToResourceProperties KeyMapProperty
+instance Prelude.Eq KeyMapProperty
+instance Prelude.Show KeyMapProperty
+instance JSON.ToJSON KeyMapProperty
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CustomerProfiles.ObjectType.ObjectTypeFieldProperty (
+        ObjectTypeFieldProperty(..), mkObjectTypeFieldProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ObjectTypeFieldProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypefield.html>
+    ObjectTypeFieldProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypefield.html#cfn-customerprofiles-objecttype-objecttypefield-contenttype>
+                             contentType :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypefield.html#cfn-customerprofiles-objecttype-objecttypefield-source>
+                             source :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypefield.html#cfn-customerprofiles-objecttype-objecttypefield-target>
+                             target :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObjectTypeFieldProperty :: ObjectTypeFieldProperty
+mkObjectTypeFieldProperty
+  = ObjectTypeFieldProperty
+      {haddock_workaround_ = (), contentType = Prelude.Nothing,
+       source = Prelude.Nothing, target = Prelude.Nothing}
+instance ToResourceProperties ObjectTypeFieldProperty where
+  toResourceProperties ObjectTypeFieldProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::ObjectType.ObjectTypeField",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ContentType" Prelude.<$> contentType,
+                            (JSON..=) "Source" Prelude.<$> source,
+                            (JSON..=) "Target" Prelude.<$> target])}
+instance JSON.ToJSON ObjectTypeFieldProperty where
+  toJSON ObjectTypeFieldProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ContentType" Prelude.<$> contentType,
+               (JSON..=) "Source" Prelude.<$> source,
+               (JSON..=) "Target" Prelude.<$> target]))
+instance Property "ContentType" ObjectTypeFieldProperty where
+  type PropertyType "ContentType" ObjectTypeFieldProperty = Value Prelude.Text
+  set newValue ObjectTypeFieldProperty {..}
+    = ObjectTypeFieldProperty {contentType = Prelude.pure newValue, ..}
+instance Property "Source" ObjectTypeFieldProperty where
+  type PropertyType "Source" ObjectTypeFieldProperty = Value Prelude.Text
+  set newValue ObjectTypeFieldProperty {..}
+    = ObjectTypeFieldProperty {source = Prelude.pure newValue, ..}
+instance Property "Target" ObjectTypeFieldProperty where
+  type PropertyType "Target" ObjectTypeFieldProperty = Value Prelude.Text
+  set newValue ObjectTypeFieldProperty {..}
+    = ObjectTypeFieldProperty {target = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeFieldProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.ObjectType.ObjectTypeFieldProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ObjectTypeFieldProperty :: Prelude.Type
+instance ToResourceProperties ObjectTypeFieldProperty
+instance Prelude.Eq ObjectTypeFieldProperty
+instance Prelude.Show ObjectTypeFieldProperty
+instance JSON.ToJSON ObjectTypeFieldProperty
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.ObjectType.ObjectTypeKeyProperty (
+        ObjectTypeKeyProperty(..), mkObjectTypeKeyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ObjectTypeKeyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypekey.html>
+    ObjectTypeKeyProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypekey.html#cfn-customerprofiles-objecttype-objecttypekey-fieldnames>
+                           fieldNames :: (Prelude.Maybe (ValueList Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-objecttype-objecttypekey.html#cfn-customerprofiles-objecttype-objecttypekey-standardidentifiers>
+                           standardIdentifiers :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkObjectTypeKeyProperty :: ObjectTypeKeyProperty
+mkObjectTypeKeyProperty
+  = ObjectTypeKeyProperty
+      {haddock_workaround_ = (), fieldNames = Prelude.Nothing,
+       standardIdentifiers = Prelude.Nothing}
+instance ToResourceProperties ObjectTypeKeyProperty where
+  toResourceProperties ObjectTypeKeyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::ObjectType.ObjectTypeKey",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "FieldNames" Prelude.<$> fieldNames,
+                            (JSON..=) "StandardIdentifiers" Prelude.<$> standardIdentifiers])}
+instance JSON.ToJSON ObjectTypeKeyProperty where
+  toJSON ObjectTypeKeyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "FieldNames" Prelude.<$> fieldNames,
+               (JSON..=) "StandardIdentifiers" Prelude.<$> standardIdentifiers]))
+instance Property "FieldNames" ObjectTypeKeyProperty where
+  type PropertyType "FieldNames" ObjectTypeKeyProperty = ValueList Prelude.Text
+  set newValue ObjectTypeKeyProperty {..}
+    = ObjectTypeKeyProperty {fieldNames = Prelude.pure newValue, ..}
+instance Property "StandardIdentifiers" ObjectTypeKeyProperty where
+  type PropertyType "StandardIdentifiers" ObjectTypeKeyProperty = ValueList Prelude.Text
+  set newValue ObjectTypeKeyProperty {..}
+    = ObjectTypeKeyProperty
+        {standardIdentifiers = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/ObjectType/ObjectTypeKeyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.ObjectType.ObjectTypeKeyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ObjectTypeKeyProperty :: Prelude.Type
+instance ToResourceProperties ObjectTypeKeyProperty
+instance Prelude.Eq ObjectTypeKeyProperty
+instance Prelude.Show ObjectTypeKeyProperty
+instance JSON.ToJSON ObjectTypeKeyProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition.hs
@@ -0,0 +1,91 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition (
+        module Exports, SegmentDefinition(..), mkSegmentDefinition
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.SegmentGroupProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data SegmentDefinition
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html>
+    SegmentDefinition {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-description>
+                       description :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-displayname>
+                       displayName :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-domainname>
+                       domainName :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-segmentdefinitionname>
+                       segmentDefinitionName :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-segmentgroups>
+                       segmentGroups :: SegmentGroupProperty,
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-customerprofiles-segmentdefinition.html#cfn-customerprofiles-segmentdefinition-tags>
+                       tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSegmentDefinition ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> SegmentGroupProperty -> SegmentDefinition
+mkSegmentDefinition
+  displayName
+  domainName
+  segmentDefinitionName
+  segmentGroups
+  = SegmentDefinition
+      {haddock_workaround_ = (), displayName = displayName,
+       domainName = domainName,
+       segmentDefinitionName = segmentDefinitionName,
+       segmentGroups = segmentGroups, description = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties SegmentDefinition where
+  toResourceProperties SegmentDefinition {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DisplayName" JSON..= displayName,
+                            "DomainName" JSON..= domainName,
+                            "SegmentDefinitionName" JSON..= segmentDefinitionName,
+                            "SegmentGroups" JSON..= segmentGroups]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON SegmentDefinition where
+  toJSON SegmentDefinition {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DisplayName" JSON..= displayName,
+               "DomainName" JSON..= domainName,
+               "SegmentDefinitionName" JSON..= segmentDefinitionName,
+               "SegmentGroups" JSON..= segmentGroups]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" SegmentDefinition where
+  type PropertyType "Description" SegmentDefinition = Value Prelude.Text
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {description = Prelude.pure newValue, ..}
+instance Property "DisplayName" SegmentDefinition where
+  type PropertyType "DisplayName" SegmentDefinition = Value Prelude.Text
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {displayName = newValue, ..}
+instance Property "DomainName" SegmentDefinition where
+  type PropertyType "DomainName" SegmentDefinition = Value Prelude.Text
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {domainName = newValue, ..}
+instance Property "SegmentDefinitionName" SegmentDefinition where
+  type PropertyType "SegmentDefinitionName" SegmentDefinition = Value Prelude.Text
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {segmentDefinitionName = newValue, ..}
+instance Property "SegmentGroups" SegmentDefinition where
+  type PropertyType "SegmentGroups" SegmentDefinition = SegmentGroupProperty
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {segmentGroups = newValue, ..}
+instance Property "Tags" SegmentDefinition where
+  type PropertyType "Tags" SegmentDefinition = [Tag]
+  set newValue SegmentDefinition {..}
+    = SegmentDefinition {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs
@@ -0,0 +1,80 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.AddressDimensionProperty (
+        module Exports, AddressDimensionProperty(..),
+        mkAddressDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ProfileDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+data AddressDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html>
+    AddressDimensionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-city>
+                              city :: (Prelude.Maybe ProfileDimensionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-country>
+                              country :: (Prelude.Maybe ProfileDimensionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-county>
+                              county :: (Prelude.Maybe ProfileDimensionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-postalcode>
+                              postalCode :: (Prelude.Maybe ProfileDimensionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-province>
+                              province :: (Prelude.Maybe ProfileDimensionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-addressdimension.html#cfn-customerprofiles-segmentdefinition-addressdimension-state>
+                              state :: (Prelude.Maybe ProfileDimensionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAddressDimensionProperty :: AddressDimensionProperty
+mkAddressDimensionProperty
+  = AddressDimensionProperty
+      {haddock_workaround_ = (), city = Prelude.Nothing,
+       country = Prelude.Nothing, county = Prelude.Nothing,
+       postalCode = Prelude.Nothing, province = Prelude.Nothing,
+       state = Prelude.Nothing}
+instance ToResourceProperties AddressDimensionProperty where
+  toResourceProperties AddressDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.AddressDimension",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "City" Prelude.<$> city,
+                            (JSON..=) "Country" Prelude.<$> country,
+                            (JSON..=) "County" Prelude.<$> county,
+                            (JSON..=) "PostalCode" Prelude.<$> postalCode,
+                            (JSON..=) "Province" Prelude.<$> province,
+                            (JSON..=) "State" Prelude.<$> state])}
+instance JSON.ToJSON AddressDimensionProperty where
+  toJSON AddressDimensionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "City" Prelude.<$> city,
+               (JSON..=) "Country" Prelude.<$> country,
+               (JSON..=) "County" Prelude.<$> county,
+               (JSON..=) "PostalCode" Prelude.<$> postalCode,
+               (JSON..=) "Province" Prelude.<$> province,
+               (JSON..=) "State" Prelude.<$> state]))
+instance Property "City" AddressDimensionProperty where
+  type PropertyType "City" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {city = Prelude.pure newValue, ..}
+instance Property "Country" AddressDimensionProperty where
+  type PropertyType "Country" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {country = Prelude.pure newValue, ..}
+instance Property "County" AddressDimensionProperty where
+  type PropertyType "County" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {county = Prelude.pure newValue, ..}
+instance Property "PostalCode" AddressDimensionProperty where
+  type PropertyType "PostalCode" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {postalCode = Prelude.pure newValue, ..}
+instance Property "Province" AddressDimensionProperty where
+  type PropertyType "Province" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {province = Prelude.pure newValue, ..}
+instance Property "State" AddressDimensionProperty where
+  type PropertyType "State" AddressDimensionProperty = ProfileDimensionProperty
+  set newValue AddressDimensionProperty {..}
+    = AddressDimensionProperty {state = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AddressDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.AddressDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AddressDimensionProperty :: Prelude.Type
+instance ToResourceProperties AddressDimensionProperty
+instance Prelude.Eq AddressDimensionProperty
+instance Prelude.Show AddressDimensionProperty
+instance JSON.ToJSON AddressDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.AttributeDimensionProperty (
+        AttributeDimensionProperty(..), mkAttributeDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributeDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-attributedimension.html>
+    AttributeDimensionProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-attributedimension.html#cfn-customerprofiles-segmentdefinition-attributedimension-dimensiontype>
+                                dimensionType :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-attributedimension.html#cfn-customerprofiles-segmentdefinition-attributedimension-values>
+                                values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributeDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> AttributeDimensionProperty
+mkAttributeDimensionProperty dimensionType values
+  = AttributeDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values}
+instance ToResourceProperties AttributeDimensionProperty where
+  toResourceProperties AttributeDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.AttributeDimension",
+         supportsTags = Prelude.False,
+         properties = ["DimensionType" JSON..= dimensionType,
+                       "Values" JSON..= values]}
+instance JSON.ToJSON AttributeDimensionProperty where
+  toJSON AttributeDimensionProperty {..}
+    = JSON.object
+        ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+instance Property "DimensionType" AttributeDimensionProperty where
+  type PropertyType "DimensionType" AttributeDimensionProperty = Value Prelude.Text
+  set newValue AttributeDimensionProperty {..}
+    = AttributeDimensionProperty {dimensionType = newValue, ..}
+instance Property "Values" AttributeDimensionProperty where
+  type PropertyType "Values" AttributeDimensionProperty = ValueList Prelude.Text
+  set newValue AttributeDimensionProperty {..}
+    = AttributeDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/AttributeDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.AttributeDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributeDimensionProperty :: Prelude.Type
+instance ToResourceProperties AttributeDimensionProperty
+instance Prelude.Eq AttributeDimensionProperty
+instance Prelude.Show AttributeDimensionProperty
+instance JSON.ToJSON AttributeDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.CalculatedAttributeDimensionProperty (
+        module Exports, CalculatedAttributeDimensionProperty(..),
+        mkCalculatedAttributeDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ConditionOverridesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CalculatedAttributeDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-calculatedattributedimension.html>
+    CalculatedAttributeDimensionProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-calculatedattributedimension.html#cfn-customerprofiles-segmentdefinition-calculatedattributedimension-conditionoverrides>
+                                          conditionOverrides :: (Prelude.Maybe ConditionOverridesProperty),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-calculatedattributedimension.html#cfn-customerprofiles-segmentdefinition-calculatedattributedimension-dimensiontype>
+                                          dimensionType :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-calculatedattributedimension.html#cfn-customerprofiles-segmentdefinition-calculatedattributedimension-values>
+                                          values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCalculatedAttributeDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> CalculatedAttributeDimensionProperty
+mkCalculatedAttributeDimensionProperty dimensionType values
+  = CalculatedAttributeDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values, conditionOverrides = Prelude.Nothing}
+instance ToResourceProperties CalculatedAttributeDimensionProperty where
+  toResourceProperties CalculatedAttributeDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.CalculatedAttributeDimension",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConditionOverrides" Prelude.<$> conditionOverrides]))}
+instance JSON.ToJSON CalculatedAttributeDimensionProperty where
+  toJSON CalculatedAttributeDimensionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConditionOverrides" Prelude.<$> conditionOverrides])))
+instance Property "ConditionOverrides" CalculatedAttributeDimensionProperty where
+  type PropertyType "ConditionOverrides" CalculatedAttributeDimensionProperty = ConditionOverridesProperty
+  set newValue CalculatedAttributeDimensionProperty {..}
+    = CalculatedAttributeDimensionProperty
+        {conditionOverrides = Prelude.pure newValue, ..}
+instance Property "DimensionType" CalculatedAttributeDimensionProperty where
+  type PropertyType "DimensionType" CalculatedAttributeDimensionProperty = Value Prelude.Text
+  set newValue CalculatedAttributeDimensionProperty {..}
+    = CalculatedAttributeDimensionProperty
+        {dimensionType = newValue, ..}
+instance Property "Values" CalculatedAttributeDimensionProperty where
+  type PropertyType "Values" CalculatedAttributeDimensionProperty = ValueList Prelude.Text
+  set newValue CalculatedAttributeDimensionProperty {..}
+    = CalculatedAttributeDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/CalculatedAttributeDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.CalculatedAttributeDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CalculatedAttributeDimensionProperty :: Prelude.Type
+instance ToResourceProperties CalculatedAttributeDimensionProperty
+instance Prelude.Eq CalculatedAttributeDimensionProperty
+instance Prelude.Show CalculatedAttributeDimensionProperty
+instance JSON.ToJSON CalculatedAttributeDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ConditionOverridesProperty (
+        module Exports, ConditionOverridesProperty(..),
+        mkConditionOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.RangeOverrideProperty as Exports
+import Stratosphere.ResourceProperties
+data ConditionOverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-conditionoverrides.html>
+    ConditionOverridesProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-conditionoverrides.html#cfn-customerprofiles-segmentdefinition-conditionoverrides-range>
+                                range :: (Prelude.Maybe RangeOverrideProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConditionOverridesProperty :: ConditionOverridesProperty
+mkConditionOverridesProperty
+  = ConditionOverridesProperty
+      {haddock_workaround_ = (), range = Prelude.Nothing}
+instance ToResourceProperties ConditionOverridesProperty where
+  toResourceProperties ConditionOverridesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.ConditionOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Range" Prelude.<$> range])}
+instance JSON.ToJSON ConditionOverridesProperty where
+  toJSON ConditionOverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Range" Prelude.<$> range]))
+instance Property "Range" ConditionOverridesProperty where
+  type PropertyType "Range" ConditionOverridesProperty = RangeOverrideProperty
+  set newValue ConditionOverridesProperty {..}
+    = ConditionOverridesProperty {range = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ConditionOverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ConditionOverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConditionOverridesProperty :: Prelude.Type
+instance ToResourceProperties ConditionOverridesProperty
+instance Prelude.Eq ConditionOverridesProperty
+instance Prelude.Show ConditionOverridesProperty
+instance JSON.ToJSON ConditionOverridesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.DateDimensionProperty (
+        DateDimensionProperty(..), mkDateDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DateDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-datedimension.html>
+    DateDimensionProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-datedimension.html#cfn-customerprofiles-segmentdefinition-datedimension-dimensiontype>
+                           dimensionType :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-datedimension.html#cfn-customerprofiles-segmentdefinition-datedimension-values>
+                           values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDateDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> DateDimensionProperty
+mkDateDimensionProperty dimensionType values
+  = DateDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values}
+instance ToResourceProperties DateDimensionProperty where
+  toResourceProperties DateDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.DateDimension",
+         supportsTags = Prelude.False,
+         properties = ["DimensionType" JSON..= dimensionType,
+                       "Values" JSON..= values]}
+instance JSON.ToJSON DateDimensionProperty where
+  toJSON DateDimensionProperty {..}
+    = JSON.object
+        ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+instance Property "DimensionType" DateDimensionProperty where
+  type PropertyType "DimensionType" DateDimensionProperty = Value Prelude.Text
+  set newValue DateDimensionProperty {..}
+    = DateDimensionProperty {dimensionType = newValue, ..}
+instance Property "Values" DateDimensionProperty where
+  type PropertyType "Values" DateDimensionProperty = ValueList Prelude.Text
+  set newValue DateDimensionProperty {..}
+    = DateDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DateDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.DateDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DateDimensionProperty :: Prelude.Type
+instance ToResourceProperties DateDimensionProperty
+instance Prelude.Eq DateDimensionProperty
+instance Prelude.Show DateDimensionProperty
+instance JSON.ToJSON DateDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.DimensionProperty (
+        module Exports, DimensionProperty(..), mkDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.CalculatedAttributeDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ProfileAttributesProperty as Exports
+import Stratosphere.ResourceProperties
+data DimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-dimension.html>
+    DimensionProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-dimension.html#cfn-customerprofiles-segmentdefinition-dimension-calculatedattributes>
+                       calculatedAttributes :: (Prelude.Maybe (Prelude.Map Prelude.Text CalculatedAttributeDimensionProperty)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-dimension.html#cfn-customerprofiles-segmentdefinition-dimension-profileattributes>
+                       profileAttributes :: (Prelude.Maybe ProfileAttributesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDimensionProperty :: DimensionProperty
+mkDimensionProperty
+  = DimensionProperty
+      {haddock_workaround_ = (), calculatedAttributes = Prelude.Nothing,
+       profileAttributes = Prelude.Nothing}
+instance ToResourceProperties DimensionProperty where
+  toResourceProperties DimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.Dimension",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CalculatedAttributes" Prelude.<$> calculatedAttributes,
+                            (JSON..=) "ProfileAttributes" Prelude.<$> profileAttributes])}
+instance JSON.ToJSON DimensionProperty where
+  toJSON DimensionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CalculatedAttributes" Prelude.<$> calculatedAttributes,
+               (JSON..=) "ProfileAttributes" Prelude.<$> profileAttributes]))
+instance Property "CalculatedAttributes" DimensionProperty where
+  type PropertyType "CalculatedAttributes" DimensionProperty = Prelude.Map Prelude.Text CalculatedAttributeDimensionProperty
+  set newValue DimensionProperty {..}
+    = DimensionProperty
+        {calculatedAttributes = Prelude.pure newValue, ..}
+instance Property "ProfileAttributes" DimensionProperty where
+  type PropertyType "ProfileAttributes" DimensionProperty = ProfileAttributesProperty
+  set newValue DimensionProperty {..}
+    = DimensionProperty {profileAttributes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/DimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.DimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DimensionProperty :: Prelude.Type
+instance ToResourceProperties DimensionProperty
+instance Prelude.Eq DimensionProperty
+instance Prelude.Show DimensionProperty
+instance JSON.ToJSON DimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ExtraLengthValueProfileDimensionProperty (
+        ExtraLengthValueProfileDimensionProperty(..),
+        mkExtraLengthValueProfileDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ExtraLengthValueProfileDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-extralengthvalueprofiledimension.html>
+    ExtraLengthValueProfileDimensionProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-extralengthvalueprofiledimension.html#cfn-customerprofiles-segmentdefinition-extralengthvalueprofiledimension-dimensiontype>
+                                              dimensionType :: (Value Prelude.Text),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-extralengthvalueprofiledimension.html#cfn-customerprofiles-segmentdefinition-extralengthvalueprofiledimension-values>
+                                              values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExtraLengthValueProfileDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text
+     -> ExtraLengthValueProfileDimensionProperty
+mkExtraLengthValueProfileDimensionProperty dimensionType values
+  = ExtraLengthValueProfileDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values}
+instance ToResourceProperties ExtraLengthValueProfileDimensionProperty where
+  toResourceProperties ExtraLengthValueProfileDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.ExtraLengthValueProfileDimension",
+         supportsTags = Prelude.False,
+         properties = ["DimensionType" JSON..= dimensionType,
+                       "Values" JSON..= values]}
+instance JSON.ToJSON ExtraLengthValueProfileDimensionProperty where
+  toJSON ExtraLengthValueProfileDimensionProperty {..}
+    = JSON.object
+        ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+instance Property "DimensionType" ExtraLengthValueProfileDimensionProperty where
+  type PropertyType "DimensionType" ExtraLengthValueProfileDimensionProperty = Value Prelude.Text
+  set newValue ExtraLengthValueProfileDimensionProperty {..}
+    = ExtraLengthValueProfileDimensionProperty
+        {dimensionType = newValue, ..}
+instance Property "Values" ExtraLengthValueProfileDimensionProperty where
+  type PropertyType "Values" ExtraLengthValueProfileDimensionProperty = ValueList Prelude.Text
+  set newValue ExtraLengthValueProfileDimensionProperty {..}
+    = ExtraLengthValueProfileDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ExtraLengthValueProfileDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ExtraLengthValueProfileDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExtraLengthValueProfileDimensionProperty :: Prelude.Type
+instance ToResourceProperties ExtraLengthValueProfileDimensionProperty
+instance Prelude.Eq ExtraLengthValueProfileDimensionProperty
+instance Prelude.Show ExtraLengthValueProfileDimensionProperty
+instance JSON.ToJSON ExtraLengthValueProfileDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.GroupProperty (
+        module Exports, GroupProperty(..), mkGroupProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.DimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.SourceSegmentProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GroupProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-group.html>
+    GroupProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-group.html#cfn-customerprofiles-segmentdefinition-group-dimensions>
+                   dimensions :: (Prelude.Maybe [DimensionProperty]),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-group.html#cfn-customerprofiles-segmentdefinition-group-sourcesegments>
+                   sourceSegments :: (Prelude.Maybe [SourceSegmentProperty]),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-group.html#cfn-customerprofiles-segmentdefinition-group-sourcetype>
+                   sourceType :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-group.html#cfn-customerprofiles-segmentdefinition-group-type>
+                   type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGroupProperty :: GroupProperty
+mkGroupProperty
+  = GroupProperty
+      {haddock_workaround_ = (), dimensions = Prelude.Nothing,
+       sourceSegments = Prelude.Nothing, sourceType = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties GroupProperty where
+  toResourceProperties GroupProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.Group",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                            (JSON..=) "SourceSegments" Prelude.<$> sourceSegments,
+                            (JSON..=) "SourceType" Prelude.<$> sourceType,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON GroupProperty where
+  toJSON GroupProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+               (JSON..=) "SourceSegments" Prelude.<$> sourceSegments,
+               (JSON..=) "SourceType" Prelude.<$> sourceType,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "Dimensions" GroupProperty where
+  type PropertyType "Dimensions" GroupProperty = [DimensionProperty]
+  set newValue GroupProperty {..}
+    = GroupProperty {dimensions = Prelude.pure newValue, ..}
+instance Property "SourceSegments" GroupProperty where
+  type PropertyType "SourceSegments" GroupProperty = [SourceSegmentProperty]
+  set newValue GroupProperty {..}
+    = GroupProperty {sourceSegments = Prelude.pure newValue, ..}
+instance Property "SourceType" GroupProperty where
+  type PropertyType "SourceType" GroupProperty = Value Prelude.Text
+  set newValue GroupProperty {..}
+    = GroupProperty {sourceType = Prelude.pure newValue, ..}
+instance Property "Type" GroupProperty where
+  type PropertyType "Type" GroupProperty = Value Prelude.Text
+  set newValue GroupProperty {..}
+    = GroupProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/GroupProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.GroupProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GroupProperty :: Prelude.Type
+instance ToResourceProperties GroupProperty
+instance Prelude.Eq GroupProperty
+instance Prelude.Show GroupProperty
+instance JSON.ToJSON GroupProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs
@@ -0,0 +1,244 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileAttributesProperty (
+        module Exports, ProfileAttributesProperty(..),
+        mkProfileAttributesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.AddressDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.AttributeDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.DateDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ExtraLengthValueProfileDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ProfileDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.ProfileTypeDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+data ProfileAttributesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html>
+    ProfileAttributesProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-accountnumber>
+                               accountNumber :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-additionalinformation>
+                               additionalInformation :: (Prelude.Maybe ExtraLengthValueProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-address>
+                               address :: (Prelude.Maybe AddressDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-attributes>
+                               attributes :: (Prelude.Maybe (Prelude.Map Prelude.Text AttributeDimensionProperty)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-billingaddress>
+                               billingAddress :: (Prelude.Maybe AddressDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-birthdate>
+                               birthDate :: (Prelude.Maybe DateDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-businessemailaddress>
+                               businessEmailAddress :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-businessname>
+                               businessName :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-businessphonenumber>
+                               businessPhoneNumber :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-emailaddress>
+                               emailAddress :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-firstname>
+                               firstName :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-genderstring>
+                               genderString :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-homephonenumber>
+                               homePhoneNumber :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-lastname>
+                               lastName :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-mailingaddress>
+                               mailingAddress :: (Prelude.Maybe AddressDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-middlename>
+                               middleName :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-mobilephonenumber>
+                               mobilePhoneNumber :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-partytypestring>
+                               partyTypeString :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-personalemailaddress>
+                               personalEmailAddress :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-phonenumber>
+                               phoneNumber :: (Prelude.Maybe ProfileDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-profiletype>
+                               profileType :: (Prelude.Maybe ProfileTypeDimensionProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profileattributes.html#cfn-customerprofiles-segmentdefinition-profileattributes-shippingaddress>
+                               shippingAddress :: (Prelude.Maybe AddressDimensionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProfileAttributesProperty :: ProfileAttributesProperty
+mkProfileAttributesProperty
+  = ProfileAttributesProperty
+      {haddock_workaround_ = (), accountNumber = Prelude.Nothing,
+       additionalInformation = Prelude.Nothing, address = Prelude.Nothing,
+       attributes = Prelude.Nothing, billingAddress = Prelude.Nothing,
+       birthDate = Prelude.Nothing,
+       businessEmailAddress = Prelude.Nothing,
+       businessName = Prelude.Nothing,
+       businessPhoneNumber = Prelude.Nothing,
+       emailAddress = Prelude.Nothing, firstName = Prelude.Nothing,
+       genderString = Prelude.Nothing, homePhoneNumber = Prelude.Nothing,
+       lastName = Prelude.Nothing, mailingAddress = Prelude.Nothing,
+       middleName = Prelude.Nothing, mobilePhoneNumber = Prelude.Nothing,
+       partyTypeString = Prelude.Nothing,
+       personalEmailAddress = Prelude.Nothing,
+       phoneNumber = Prelude.Nothing, profileType = Prelude.Nothing,
+       shippingAddress = Prelude.Nothing}
+instance ToResourceProperties ProfileAttributesProperty where
+  toResourceProperties ProfileAttributesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.ProfileAttributes",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccountNumber" Prelude.<$> accountNumber,
+                            (JSON..=) "AdditionalInformation"
+                              Prelude.<$> additionalInformation,
+                            (JSON..=) "Address" Prelude.<$> address,
+                            (JSON..=) "Attributes" Prelude.<$> attributes,
+                            (JSON..=) "BillingAddress" Prelude.<$> billingAddress,
+                            (JSON..=) "BirthDate" Prelude.<$> birthDate,
+                            (JSON..=) "BusinessEmailAddress" Prelude.<$> businessEmailAddress,
+                            (JSON..=) "BusinessName" Prelude.<$> businessName,
+                            (JSON..=) "BusinessPhoneNumber" Prelude.<$> businessPhoneNumber,
+                            (JSON..=) "EmailAddress" Prelude.<$> emailAddress,
+                            (JSON..=) "FirstName" Prelude.<$> firstName,
+                            (JSON..=) "GenderString" Prelude.<$> genderString,
+                            (JSON..=) "HomePhoneNumber" Prelude.<$> homePhoneNumber,
+                            (JSON..=) "LastName" Prelude.<$> lastName,
+                            (JSON..=) "MailingAddress" Prelude.<$> mailingAddress,
+                            (JSON..=) "MiddleName" Prelude.<$> middleName,
+                            (JSON..=) "MobilePhoneNumber" Prelude.<$> mobilePhoneNumber,
+                            (JSON..=) "PartyTypeString" Prelude.<$> partyTypeString,
+                            (JSON..=) "PersonalEmailAddress" Prelude.<$> personalEmailAddress,
+                            (JSON..=) "PhoneNumber" Prelude.<$> phoneNumber,
+                            (JSON..=) "ProfileType" Prelude.<$> profileType,
+                            (JSON..=) "ShippingAddress" Prelude.<$> shippingAddress])}
+instance JSON.ToJSON ProfileAttributesProperty where
+  toJSON ProfileAttributesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccountNumber" Prelude.<$> accountNumber,
+               (JSON..=) "AdditionalInformation"
+                 Prelude.<$> additionalInformation,
+               (JSON..=) "Address" Prelude.<$> address,
+               (JSON..=) "Attributes" Prelude.<$> attributes,
+               (JSON..=) "BillingAddress" Prelude.<$> billingAddress,
+               (JSON..=) "BirthDate" Prelude.<$> birthDate,
+               (JSON..=) "BusinessEmailAddress" Prelude.<$> businessEmailAddress,
+               (JSON..=) "BusinessName" Prelude.<$> businessName,
+               (JSON..=) "BusinessPhoneNumber" Prelude.<$> businessPhoneNumber,
+               (JSON..=) "EmailAddress" Prelude.<$> emailAddress,
+               (JSON..=) "FirstName" Prelude.<$> firstName,
+               (JSON..=) "GenderString" Prelude.<$> genderString,
+               (JSON..=) "HomePhoneNumber" Prelude.<$> homePhoneNumber,
+               (JSON..=) "LastName" Prelude.<$> lastName,
+               (JSON..=) "MailingAddress" Prelude.<$> mailingAddress,
+               (JSON..=) "MiddleName" Prelude.<$> middleName,
+               (JSON..=) "MobilePhoneNumber" Prelude.<$> mobilePhoneNumber,
+               (JSON..=) "PartyTypeString" Prelude.<$> partyTypeString,
+               (JSON..=) "PersonalEmailAddress" Prelude.<$> personalEmailAddress,
+               (JSON..=) "PhoneNumber" Prelude.<$> phoneNumber,
+               (JSON..=) "ProfileType" Prelude.<$> profileType,
+               (JSON..=) "ShippingAddress" Prelude.<$> shippingAddress]))
+instance Property "AccountNumber" ProfileAttributesProperty where
+  type PropertyType "AccountNumber" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {accountNumber = Prelude.pure newValue, ..}
+instance Property "AdditionalInformation" ProfileAttributesProperty where
+  type PropertyType "AdditionalInformation" ProfileAttributesProperty = ExtraLengthValueProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {additionalInformation = Prelude.pure newValue, ..}
+instance Property "Address" ProfileAttributesProperty where
+  type PropertyType "Address" ProfileAttributesProperty = AddressDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty {address = Prelude.pure newValue, ..}
+instance Property "Attributes" ProfileAttributesProperty where
+  type PropertyType "Attributes" ProfileAttributesProperty = Prelude.Map Prelude.Text AttributeDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {attributes = Prelude.pure newValue, ..}
+instance Property "BillingAddress" ProfileAttributesProperty where
+  type PropertyType "BillingAddress" ProfileAttributesProperty = AddressDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {billingAddress = Prelude.pure newValue, ..}
+instance Property "BirthDate" ProfileAttributesProperty where
+  type PropertyType "BirthDate" ProfileAttributesProperty = DateDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty {birthDate = Prelude.pure newValue, ..}
+instance Property "BusinessEmailAddress" ProfileAttributesProperty where
+  type PropertyType "BusinessEmailAddress" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {businessEmailAddress = Prelude.pure newValue, ..}
+instance Property "BusinessName" ProfileAttributesProperty where
+  type PropertyType "BusinessName" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {businessName = Prelude.pure newValue, ..}
+instance Property "BusinessPhoneNumber" ProfileAttributesProperty where
+  type PropertyType "BusinessPhoneNumber" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {businessPhoneNumber = Prelude.pure newValue, ..}
+instance Property "EmailAddress" ProfileAttributesProperty where
+  type PropertyType "EmailAddress" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {emailAddress = Prelude.pure newValue, ..}
+instance Property "FirstName" ProfileAttributesProperty where
+  type PropertyType "FirstName" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty {firstName = Prelude.pure newValue, ..}
+instance Property "GenderString" ProfileAttributesProperty where
+  type PropertyType "GenderString" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {genderString = Prelude.pure newValue, ..}
+instance Property "HomePhoneNumber" ProfileAttributesProperty where
+  type PropertyType "HomePhoneNumber" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {homePhoneNumber = Prelude.pure newValue, ..}
+instance Property "LastName" ProfileAttributesProperty where
+  type PropertyType "LastName" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty {lastName = Prelude.pure newValue, ..}
+instance Property "MailingAddress" ProfileAttributesProperty where
+  type PropertyType "MailingAddress" ProfileAttributesProperty = AddressDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {mailingAddress = Prelude.pure newValue, ..}
+instance Property "MiddleName" ProfileAttributesProperty where
+  type PropertyType "MiddleName" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {middleName = Prelude.pure newValue, ..}
+instance Property "MobilePhoneNumber" ProfileAttributesProperty where
+  type PropertyType "MobilePhoneNumber" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {mobilePhoneNumber = Prelude.pure newValue, ..}
+instance Property "PartyTypeString" ProfileAttributesProperty where
+  type PropertyType "PartyTypeString" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {partyTypeString = Prelude.pure newValue, ..}
+instance Property "PersonalEmailAddress" ProfileAttributesProperty where
+  type PropertyType "PersonalEmailAddress" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {personalEmailAddress = Prelude.pure newValue, ..}
+instance Property "PhoneNumber" ProfileAttributesProperty where
+  type PropertyType "PhoneNumber" ProfileAttributesProperty = ProfileDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {phoneNumber = Prelude.pure newValue, ..}
+instance Property "ProfileType" ProfileAttributesProperty where
+  type PropertyType "ProfileType" ProfileAttributesProperty = ProfileTypeDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {profileType = Prelude.pure newValue, ..}
+instance Property "ShippingAddress" ProfileAttributesProperty where
+  type PropertyType "ShippingAddress" ProfileAttributesProperty = AddressDimensionProperty
+  set newValue ProfileAttributesProperty {..}
+    = ProfileAttributesProperty
+        {shippingAddress = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileAttributesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileAttributesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProfileAttributesProperty :: Prelude.Type
+instance ToResourceProperties ProfileAttributesProperty
+instance Prelude.Eq ProfileAttributesProperty
+instance Prelude.Show ProfileAttributesProperty
+instance JSON.ToJSON ProfileAttributesProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileDimensionProperty (
+        ProfileDimensionProperty(..), mkProfileDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProfileDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiledimension.html>
+    ProfileDimensionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiledimension.html#cfn-customerprofiles-segmentdefinition-profiledimension-dimensiontype>
+                              dimensionType :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiledimension.html#cfn-customerprofiles-segmentdefinition-profiledimension-values>
+                              values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProfileDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> ProfileDimensionProperty
+mkProfileDimensionProperty dimensionType values
+  = ProfileDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values}
+instance ToResourceProperties ProfileDimensionProperty where
+  toResourceProperties ProfileDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.ProfileDimension",
+         supportsTags = Prelude.False,
+         properties = ["DimensionType" JSON..= dimensionType,
+                       "Values" JSON..= values]}
+instance JSON.ToJSON ProfileDimensionProperty where
+  toJSON ProfileDimensionProperty {..}
+    = JSON.object
+        ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+instance Property "DimensionType" ProfileDimensionProperty where
+  type PropertyType "DimensionType" ProfileDimensionProperty = Value Prelude.Text
+  set newValue ProfileDimensionProperty {..}
+    = ProfileDimensionProperty {dimensionType = newValue, ..}
+instance Property "Values" ProfileDimensionProperty where
+  type PropertyType "Values" ProfileDimensionProperty = ValueList Prelude.Text
+  set newValue ProfileDimensionProperty {..}
+    = ProfileDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProfileDimensionProperty :: Prelude.Type
+instance ToResourceProperties ProfileDimensionProperty
+instance Prelude.Eq ProfileDimensionProperty
+instance Prelude.Show ProfileDimensionProperty
+instance JSON.ToJSON ProfileDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileTypeDimensionProperty (
+        ProfileTypeDimensionProperty(..), mkProfileTypeDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProfileTypeDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiletypedimension.html>
+    ProfileTypeDimensionProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiletypedimension.html#cfn-customerprofiles-segmentdefinition-profiletypedimension-dimensiontype>
+                                  dimensionType :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-profiletypedimension.html#cfn-customerprofiles-segmentdefinition-profiletypedimension-values>
+                                  values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProfileTypeDimensionProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> ProfileTypeDimensionProperty
+mkProfileTypeDimensionProperty dimensionType values
+  = ProfileTypeDimensionProperty
+      {haddock_workaround_ = (), dimensionType = dimensionType,
+       values = values}
+instance ToResourceProperties ProfileTypeDimensionProperty where
+  toResourceProperties ProfileTypeDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.ProfileTypeDimension",
+         supportsTags = Prelude.False,
+         properties = ["DimensionType" JSON..= dimensionType,
+                       "Values" JSON..= values]}
+instance JSON.ToJSON ProfileTypeDimensionProperty where
+  toJSON ProfileTypeDimensionProperty {..}
+    = JSON.object
+        ["DimensionType" JSON..= dimensionType, "Values" JSON..= values]
+instance Property "DimensionType" ProfileTypeDimensionProperty where
+  type PropertyType "DimensionType" ProfileTypeDimensionProperty = Value Prelude.Text
+  set newValue ProfileTypeDimensionProperty {..}
+    = ProfileTypeDimensionProperty {dimensionType = newValue, ..}
+instance Property "Values" ProfileTypeDimensionProperty where
+  type PropertyType "Values" ProfileTypeDimensionProperty = ValueList Prelude.Text
+  set newValue ProfileTypeDimensionProperty {..}
+    = ProfileTypeDimensionProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/ProfileTypeDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.ProfileTypeDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProfileTypeDimensionProperty :: Prelude.Type
+instance ToResourceProperties ProfileTypeDimensionProperty
+instance Prelude.Eq ProfileTypeDimensionProperty
+instance Prelude.Show ProfileTypeDimensionProperty
+instance JSON.ToJSON ProfileTypeDimensionProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.RangeOverrideProperty (
+        RangeOverrideProperty(..), mkRangeOverrideProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RangeOverrideProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-rangeoverride.html>
+    RangeOverrideProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-rangeoverride.html#cfn-customerprofiles-segmentdefinition-rangeoverride-end>
+                           end :: (Prelude.Maybe (Value Prelude.Integer)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-rangeoverride.html#cfn-customerprofiles-segmentdefinition-rangeoverride-start>
+                           start :: (Value Prelude.Integer),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-rangeoverride.html#cfn-customerprofiles-segmentdefinition-rangeoverride-unit>
+                           unit :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRangeOverrideProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Text -> RangeOverrideProperty
+mkRangeOverrideProperty start unit
+  = RangeOverrideProperty
+      {haddock_workaround_ = (), start = start, unit = unit,
+       end = Prelude.Nothing}
+instance ToResourceProperties RangeOverrideProperty where
+  toResourceProperties RangeOverrideProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.RangeOverride",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Start" JSON..= start, "Unit" JSON..= unit]
+                           (Prelude.catMaybes [(JSON..=) "End" Prelude.<$> end]))}
+instance JSON.ToJSON RangeOverrideProperty where
+  toJSON RangeOverrideProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Start" JSON..= start, "Unit" JSON..= unit]
+              (Prelude.catMaybes [(JSON..=) "End" Prelude.<$> end])))
+instance Property "End" RangeOverrideProperty where
+  type PropertyType "End" RangeOverrideProperty = Value Prelude.Integer
+  set newValue RangeOverrideProperty {..}
+    = RangeOverrideProperty {end = Prelude.pure newValue, ..}
+instance Property "Start" RangeOverrideProperty where
+  type PropertyType "Start" RangeOverrideProperty = Value Prelude.Integer
+  set newValue RangeOverrideProperty {..}
+    = RangeOverrideProperty {start = newValue, ..}
+instance Property "Unit" RangeOverrideProperty where
+  type PropertyType "Unit" RangeOverrideProperty = Value Prelude.Text
+  set newValue RangeOverrideProperty {..}
+    = RangeOverrideProperty {unit = newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/RangeOverrideProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.RangeOverrideProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RangeOverrideProperty :: Prelude.Type
+instance ToResourceProperties RangeOverrideProperty
+instance Prelude.Eq RangeOverrideProperty
+instance Prelude.Show RangeOverrideProperty
+instance JSON.ToJSON RangeOverrideProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.SegmentGroupProperty (
+        module Exports, SegmentGroupProperty(..), mkSegmentGroupProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CustomerProfiles.SegmentDefinition.GroupProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SegmentGroupProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-segmentgroup.html>
+    SegmentGroupProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-segmentgroup.html#cfn-customerprofiles-segmentdefinition-segmentgroup-groups>
+                          groups :: (Prelude.Maybe [GroupProperty]),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-segmentgroup.html#cfn-customerprofiles-segmentdefinition-segmentgroup-include>
+                          include :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSegmentGroupProperty :: SegmentGroupProperty
+mkSegmentGroupProperty
+  = SegmentGroupProperty
+      {haddock_workaround_ = (), groups = Prelude.Nothing,
+       include = Prelude.Nothing}
+instance ToResourceProperties SegmentGroupProperty where
+  toResourceProperties SegmentGroupProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.SegmentGroup",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Groups" Prelude.<$> groups,
+                            (JSON..=) "Include" Prelude.<$> include])}
+instance JSON.ToJSON SegmentGroupProperty where
+  toJSON SegmentGroupProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Groups" Prelude.<$> groups,
+               (JSON..=) "Include" Prelude.<$> include]))
+instance Property "Groups" SegmentGroupProperty where
+  type PropertyType "Groups" SegmentGroupProperty = [GroupProperty]
+  set newValue SegmentGroupProperty {..}
+    = SegmentGroupProperty {groups = Prelude.pure newValue, ..}
+instance Property "Include" SegmentGroupProperty where
+  type PropertyType "Include" SegmentGroupProperty = Value Prelude.Text
+  set newValue SegmentGroupProperty {..}
+    = SegmentGroupProperty {include = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SegmentGroupProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.SegmentGroupProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SegmentGroupProperty :: Prelude.Type
+instance ToResourceProperties SegmentGroupProperty
+instance Prelude.Eq SegmentGroupProperty
+instance Prelude.Show SegmentGroupProperty
+instance JSON.ToJSON SegmentGroupProperty
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.SourceSegmentProperty (
+        SourceSegmentProperty(..), mkSourceSegmentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SourceSegmentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-sourcesegment.html>
+    SourceSegmentProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-customerprofiles-segmentdefinition-sourcesegment.html#cfn-customerprofiles-segmentdefinition-sourcesegment-segmentdefinitionname>
+                           segmentDefinitionName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSourceSegmentProperty :: SourceSegmentProperty
+mkSourceSegmentProperty
+  = SourceSegmentProperty
+      {haddock_workaround_ = (), segmentDefinitionName = Prelude.Nothing}
+instance ToResourceProperties SourceSegmentProperty where
+  toResourceProperties SourceSegmentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CustomerProfiles::SegmentDefinition.SourceSegment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SegmentDefinitionName"
+                              Prelude.<$> segmentDefinitionName])}
+instance JSON.ToJSON SourceSegmentProperty where
+  toJSON SourceSegmentProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SegmentDefinitionName"
+                 Prelude.<$> segmentDefinitionName]))
+instance Property "SegmentDefinitionName" SourceSegmentProperty where
+  type PropertyType "SegmentDefinitionName" SourceSegmentProperty = Value Prelude.Text
+  set newValue SourceSegmentProperty {..}
+    = SourceSegmentProperty
+        {segmentDefinitionName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs-boot b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CustomerProfiles/SegmentDefinition/SourceSegmentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CustomerProfiles.SegmentDefinition.SourceSegmentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SourceSegmentProperty :: Prelude.Type
+instance ToResourceProperties SourceSegmentProperty
+instance Prelude.Eq SourceSegmentProperty
+instance Prelude.Show SourceSegmentProperty
+instance JSON.ToJSON SourceSegmentProperty
diff --git a/stratosphere-customerprofiles.cabal b/stratosphere-customerprofiles.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-customerprofiles.cabal
@@ -0,0 +1,137 @@
+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-customerprofiles
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS CustomerProfiles.
+description:    Integration into stratosphere to generate resources and properties for AWS CustomerProfiles
+category:       AWS, Cloud, CustomerProfiles
+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.CustomerProfiles.CalculatedAttributeDefinition
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeDetailsProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.AttributeItemProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ConditionsProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.RangeProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ReadinessProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ThresholdProperty
+      Stratosphere.CustomerProfiles.CalculatedAttributeDefinition.ValueRangeProperty
+      Stratosphere.CustomerProfiles.Domain
+      Stratosphere.CustomerProfiles.Domain.AttributeTypesSelectorProperty
+      Stratosphere.CustomerProfiles.Domain.AutoMergingProperty
+      Stratosphere.CustomerProfiles.Domain.ConflictResolutionProperty
+      Stratosphere.CustomerProfiles.Domain.ConsolidationProperty
+      Stratosphere.CustomerProfiles.Domain.DomainStatsProperty
+      Stratosphere.CustomerProfiles.Domain.ExportingConfigProperty
+      Stratosphere.CustomerProfiles.Domain.JobScheduleProperty
+      Stratosphere.CustomerProfiles.Domain.MatchingProperty
+      Stratosphere.CustomerProfiles.Domain.MatchingRuleProperty
+      Stratosphere.CustomerProfiles.Domain.RuleBasedMatchingProperty
+      Stratosphere.CustomerProfiles.Domain.S3ExportingConfigProperty
+      Stratosphere.CustomerProfiles.EventStream
+      Stratosphere.CustomerProfiles.EventStream.DestinationDetailsProperty
+      Stratosphere.CustomerProfiles.EventTrigger
+      Stratosphere.CustomerProfiles.EventTrigger.EventTriggerConditionProperty
+      Stratosphere.CustomerProfiles.EventTrigger.EventTriggerDimensionProperty
+      Stratosphere.CustomerProfiles.EventTrigger.EventTriggerLimitsProperty
+      Stratosphere.CustomerProfiles.EventTrigger.ObjectAttributeProperty
+      Stratosphere.CustomerProfiles.EventTrigger.PeriodProperty
+      Stratosphere.CustomerProfiles.Integration
+      Stratosphere.CustomerProfiles.Integration.ConnectorOperatorProperty
+      Stratosphere.CustomerProfiles.Integration.FlowDefinitionProperty
+      Stratosphere.CustomerProfiles.Integration.IncrementalPullConfigProperty
+      Stratosphere.CustomerProfiles.Integration.MarketoSourcePropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.ObjectTypeMappingProperty
+      Stratosphere.CustomerProfiles.Integration.S3SourcePropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.SalesforceSourcePropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.ScheduledTriggerPropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.ServiceNowSourcePropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.SourceConnectorPropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.SourceFlowConfigProperty
+      Stratosphere.CustomerProfiles.Integration.TaskPropertiesMapProperty
+      Stratosphere.CustomerProfiles.Integration.TaskProperty
+      Stratosphere.CustomerProfiles.Integration.TriggerConfigProperty
+      Stratosphere.CustomerProfiles.Integration.TriggerPropertiesProperty
+      Stratosphere.CustomerProfiles.Integration.ZendeskSourcePropertiesProperty
+      Stratosphere.CustomerProfiles.ObjectType
+      Stratosphere.CustomerProfiles.ObjectType.FieldMapProperty
+      Stratosphere.CustomerProfiles.ObjectType.KeyMapProperty
+      Stratosphere.CustomerProfiles.ObjectType.ObjectTypeFieldProperty
+      Stratosphere.CustomerProfiles.ObjectType.ObjectTypeKeyProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition
+      Stratosphere.CustomerProfiles.SegmentDefinition.AddressDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.AttributeDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.CalculatedAttributeDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.ConditionOverridesProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.DateDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.DimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.ExtraLengthValueProfileDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.GroupProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.ProfileAttributesProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.ProfileDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.ProfileTypeDimensionProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.RangeOverrideProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.SegmentGroupProperty
+      Stratosphere.CustomerProfiles.SegmentDefinition.SourceSegmentProperty
+  other-modules:
+      Paths_stratosphere_customerprofiles
+  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
