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/DataZone/Connection.hs b/gen/Stratosphere/DataZone/Connection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection.hs
@@ -0,0 +1,104 @@
+module Stratosphere.DataZone.Connection (
+        module Exports, Connection(..), mkConnection
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.AwsLocationProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.ConnectionPropertiesInputProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Connection
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html>
+    Connection {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-awslocation>
+                awsLocation :: (Prelude.Maybe AwsLocationProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-domainidentifier>
+                domainIdentifier :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-enabletrustedidentitypropagation>
+                enableTrustedIdentityPropagation :: (Prelude.Maybe (Value Prelude.Bool)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-environmentidentifier>
+                environmentIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-name>
+                name :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-projectidentifier>
+                projectIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-connection.html#cfn-datazone-connection-props>
+                props :: (Prelude.Maybe ConnectionPropertiesInputProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnection ::
+  Value Prelude.Text -> Value Prelude.Text -> Connection
+mkConnection domainIdentifier name
+  = Connection
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       name = name, awsLocation = Prelude.Nothing,
+       description = Prelude.Nothing,
+       enableTrustedIdentityPropagation = Prelude.Nothing,
+       environmentIdentifier = Prelude.Nothing,
+       projectIdentifier = Prelude.Nothing, props = Prelude.Nothing}
+instance ToResourceProperties Connection where
+  toResourceProperties Connection {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AwsLocation" Prelude.<$> awsLocation,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnableTrustedIdentityPropagation"
+                                 Prelude.<$> enableTrustedIdentityPropagation,
+                               (JSON..=) "EnvironmentIdentifier"
+                                 Prelude.<$> environmentIdentifier,
+                               (JSON..=) "ProjectIdentifier" Prelude.<$> projectIdentifier,
+                               (JSON..=) "Props" Prelude.<$> props]))}
+instance JSON.ToJSON Connection where
+  toJSON Connection {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AwsLocation" Prelude.<$> awsLocation,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnableTrustedIdentityPropagation"
+                    Prelude.<$> enableTrustedIdentityPropagation,
+                  (JSON..=) "EnvironmentIdentifier"
+                    Prelude.<$> environmentIdentifier,
+                  (JSON..=) "ProjectIdentifier" Prelude.<$> projectIdentifier,
+                  (JSON..=) "Props" Prelude.<$> props])))
+instance Property "AwsLocation" Connection where
+  type PropertyType "AwsLocation" Connection = AwsLocationProperty
+  set newValue Connection {..}
+    = Connection {awsLocation = Prelude.pure newValue, ..}
+instance Property "Description" Connection where
+  type PropertyType "Description" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" Connection where
+  type PropertyType "DomainIdentifier" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {domainIdentifier = newValue, ..}
+instance Property "EnableTrustedIdentityPropagation" Connection where
+  type PropertyType "EnableTrustedIdentityPropagation" Connection = Value Prelude.Bool
+  set newValue Connection {..}
+    = Connection
+        {enableTrustedIdentityPropagation = Prelude.pure newValue, ..}
+instance Property "EnvironmentIdentifier" Connection where
+  type PropertyType "EnvironmentIdentifier" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {environmentIdentifier = Prelude.pure newValue, ..}
+instance Property "Name" Connection where
+  type PropertyType "Name" Connection = Value Prelude.Text
+  set newValue Connection {..} = Connection {name = newValue, ..}
+instance Property "ProjectIdentifier" Connection where
+  type PropertyType "ProjectIdentifier" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {projectIdentifier = Prelude.pure newValue, ..}
+instance Property "Props" Connection where
+  type PropertyType "Props" Connection = ConnectionPropertiesInputProperty
+  set newValue Connection {..}
+    = Connection {props = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.DataZone.Connection.AthenaPropertiesInputProperty (
+        AthenaPropertiesInputProperty(..), mkAthenaPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AthenaPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-athenapropertiesinput.html>
+    AthenaPropertiesInputProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-athenapropertiesinput.html#cfn-datazone-connection-athenapropertiesinput-workgroupname>
+                                   workgroupName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAthenaPropertiesInputProperty ::
+  Value Prelude.Text -> AthenaPropertiesInputProperty
+mkAthenaPropertiesInputProperty workgroupName
+  = AthenaPropertiesInputProperty
+      {haddock_workaround_ = (), workgroupName = workgroupName}
+instance ToResourceProperties AthenaPropertiesInputProperty where
+  toResourceProperties AthenaPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.AthenaPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = ["WorkgroupName" JSON..= workgroupName]}
+instance JSON.ToJSON AthenaPropertiesInputProperty where
+  toJSON AthenaPropertiesInputProperty {..}
+    = JSON.object ["WorkgroupName" JSON..= workgroupName]
+instance Property "WorkgroupName" AthenaPropertiesInputProperty where
+  type PropertyType "WorkgroupName" AthenaPropertiesInputProperty = Value Prelude.Text
+  set newValue AthenaPropertiesInputProperty {..}
+    = AthenaPropertiesInputProperty {workgroupName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AthenaPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.AthenaPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AthenaPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties AthenaPropertiesInputProperty
+instance Prelude.Eq AthenaPropertiesInputProperty
+instance Prelude.Show AthenaPropertiesInputProperty
+instance JSON.ToJSON AthenaPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs
@@ -0,0 +1,94 @@
+module Stratosphere.DataZone.Connection.AuthenticationConfigurationInputProperty (
+        module Exports, AuthenticationConfigurationInputProperty(..),
+        mkAuthenticationConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.BasicAuthenticationCredentialsProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.OAuth2PropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AuthenticationConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html>
+    AuthenticationConfigurationInputProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-authenticationtype>
+                                              authenticationType :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-basicauthenticationcredentials>
+                                              basicAuthenticationCredentials :: (Prelude.Maybe BasicAuthenticationCredentialsProperty),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-customauthenticationcredentials>
+                                              customAuthenticationCredentials :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-kmskeyarn>
+                                              kmsKeyArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-oauth2properties>
+                                              oAuth2Properties :: (Prelude.Maybe OAuth2PropertiesProperty),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authenticationconfigurationinput.html#cfn-datazone-connection-authenticationconfigurationinput-secretarn>
+                                              secretArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthenticationConfigurationInputProperty ::
+  AuthenticationConfigurationInputProperty
+mkAuthenticationConfigurationInputProperty
+  = AuthenticationConfigurationInputProperty
+      {haddock_workaround_ = (), authenticationType = Prelude.Nothing,
+       basicAuthenticationCredentials = Prelude.Nothing,
+       customAuthenticationCredentials = Prelude.Nothing,
+       kmsKeyArn = Prelude.Nothing, oAuth2Properties = Prelude.Nothing,
+       secretArn = Prelude.Nothing}
+instance ToResourceProperties AuthenticationConfigurationInputProperty where
+  toResourceProperties AuthenticationConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.AuthenticationConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthenticationType" Prelude.<$> authenticationType,
+                            (JSON..=) "BasicAuthenticationCredentials"
+                              Prelude.<$> basicAuthenticationCredentials,
+                            (JSON..=) "CustomAuthenticationCredentials"
+                              Prelude.<$> customAuthenticationCredentials,
+                            (JSON..=) "KmsKeyArn" Prelude.<$> kmsKeyArn,
+                            (JSON..=) "OAuth2Properties" Prelude.<$> oAuth2Properties,
+                            (JSON..=) "SecretArn" Prelude.<$> secretArn])}
+instance JSON.ToJSON AuthenticationConfigurationInputProperty where
+  toJSON AuthenticationConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthenticationType" Prelude.<$> authenticationType,
+               (JSON..=) "BasicAuthenticationCredentials"
+                 Prelude.<$> basicAuthenticationCredentials,
+               (JSON..=) "CustomAuthenticationCredentials"
+                 Prelude.<$> customAuthenticationCredentials,
+               (JSON..=) "KmsKeyArn" Prelude.<$> kmsKeyArn,
+               (JSON..=) "OAuth2Properties" Prelude.<$> oAuth2Properties,
+               (JSON..=) "SecretArn" Prelude.<$> secretArn]))
+instance Property "AuthenticationType" AuthenticationConfigurationInputProperty where
+  type PropertyType "AuthenticationType" AuthenticationConfigurationInputProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {authenticationType = Prelude.pure newValue, ..}
+instance Property "BasicAuthenticationCredentials" AuthenticationConfigurationInputProperty where
+  type PropertyType "BasicAuthenticationCredentials" AuthenticationConfigurationInputProperty = BasicAuthenticationCredentialsProperty
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {basicAuthenticationCredentials = Prelude.pure newValue, ..}
+instance Property "CustomAuthenticationCredentials" AuthenticationConfigurationInputProperty where
+  type PropertyType "CustomAuthenticationCredentials" AuthenticationConfigurationInputProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {customAuthenticationCredentials = Prelude.pure newValue, ..}
+instance Property "KmsKeyArn" AuthenticationConfigurationInputProperty where
+  type PropertyType "KmsKeyArn" AuthenticationConfigurationInputProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {kmsKeyArn = Prelude.pure newValue, ..}
+instance Property "OAuth2Properties" AuthenticationConfigurationInputProperty where
+  type PropertyType "OAuth2Properties" AuthenticationConfigurationInputProperty = OAuth2PropertiesProperty
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {oAuth2Properties = Prelude.pure newValue, ..}
+instance Property "SecretArn" AuthenticationConfigurationInputProperty where
+  type PropertyType "SecretArn" AuthenticationConfigurationInputProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationInputProperty {..}
+    = AuthenticationConfigurationInputProperty
+        {secretArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AuthenticationConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.AuthenticationConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AuthenticationConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties AuthenticationConfigurationInputProperty
+instance Prelude.Eq AuthenticationConfigurationInputProperty
+instance Prelude.Show AuthenticationConfigurationInputProperty
+instance JSON.ToJSON AuthenticationConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs b/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.DataZone.Connection.AuthorizationCodePropertiesProperty (
+        AuthorizationCodePropertiesProperty(..),
+        mkAuthorizationCodePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AuthorizationCodePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authorizationcodeproperties.html>
+    AuthorizationCodePropertiesProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authorizationcodeproperties.html#cfn-datazone-connection-authorizationcodeproperties-authorizationcode>
+                                         authorizationCode :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-authorizationcodeproperties.html#cfn-datazone-connection-authorizationcodeproperties-redirecturi>
+                                         redirectUri :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthorizationCodePropertiesProperty ::
+  AuthorizationCodePropertiesProperty
+mkAuthorizationCodePropertiesProperty
+  = AuthorizationCodePropertiesProperty
+      {haddock_workaround_ = (), authorizationCode = Prelude.Nothing,
+       redirectUri = Prelude.Nothing}
+instance ToResourceProperties AuthorizationCodePropertiesProperty where
+  toResourceProperties AuthorizationCodePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.AuthorizationCodeProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthorizationCode" Prelude.<$> authorizationCode,
+                            (JSON..=) "RedirectUri" Prelude.<$> redirectUri])}
+instance JSON.ToJSON AuthorizationCodePropertiesProperty where
+  toJSON AuthorizationCodePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthorizationCode" Prelude.<$> authorizationCode,
+               (JSON..=) "RedirectUri" Prelude.<$> redirectUri]))
+instance Property "AuthorizationCode" AuthorizationCodePropertiesProperty where
+  type PropertyType "AuthorizationCode" AuthorizationCodePropertiesProperty = Value Prelude.Text
+  set newValue AuthorizationCodePropertiesProperty {..}
+    = AuthorizationCodePropertiesProperty
+        {authorizationCode = Prelude.pure newValue, ..}
+instance Property "RedirectUri" AuthorizationCodePropertiesProperty where
+  type PropertyType "RedirectUri" AuthorizationCodePropertiesProperty = Value Prelude.Text
+  set newValue AuthorizationCodePropertiesProperty {..}
+    = AuthorizationCodePropertiesProperty
+        {redirectUri = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AuthorizationCodePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.AuthorizationCodePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AuthorizationCodePropertiesProperty :: Prelude.Type
+instance ToResourceProperties AuthorizationCodePropertiesProperty
+instance Prelude.Eq AuthorizationCodePropertiesProperty
+instance Prelude.Show AuthorizationCodePropertiesProperty
+instance JSON.ToJSON AuthorizationCodePropertiesProperty
diff --git a/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs b/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.DataZone.Connection.AwsLocationProperty (
+        AwsLocationProperty(..), mkAwsLocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AwsLocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-awslocation.html>
+    AwsLocationProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-awslocation.html#cfn-datazone-connection-awslocation-accessrole>
+                         accessRole :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-awslocation.html#cfn-datazone-connection-awslocation-awsaccountid>
+                         awsAccountId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-awslocation.html#cfn-datazone-connection-awslocation-awsregion>
+                         awsRegion :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-awslocation.html#cfn-datazone-connection-awslocation-iamconnectionid>
+                         iamConnectionId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAwsLocationProperty :: AwsLocationProperty
+mkAwsLocationProperty
+  = AwsLocationProperty
+      {haddock_workaround_ = (), accessRole = Prelude.Nothing,
+       awsAccountId = Prelude.Nothing, awsRegion = Prelude.Nothing,
+       iamConnectionId = Prelude.Nothing}
+instance ToResourceProperties AwsLocationProperty where
+  toResourceProperties AwsLocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.AwsLocation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccessRole" Prelude.<$> accessRole,
+                            (JSON..=) "AwsAccountId" Prelude.<$> awsAccountId,
+                            (JSON..=) "AwsRegion" Prelude.<$> awsRegion,
+                            (JSON..=) "IamConnectionId" Prelude.<$> iamConnectionId])}
+instance JSON.ToJSON AwsLocationProperty where
+  toJSON AwsLocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccessRole" Prelude.<$> accessRole,
+               (JSON..=) "AwsAccountId" Prelude.<$> awsAccountId,
+               (JSON..=) "AwsRegion" Prelude.<$> awsRegion,
+               (JSON..=) "IamConnectionId" Prelude.<$> iamConnectionId]))
+instance Property "AccessRole" AwsLocationProperty where
+  type PropertyType "AccessRole" AwsLocationProperty = Value Prelude.Text
+  set newValue AwsLocationProperty {..}
+    = AwsLocationProperty {accessRole = Prelude.pure newValue, ..}
+instance Property "AwsAccountId" AwsLocationProperty where
+  type PropertyType "AwsAccountId" AwsLocationProperty = Value Prelude.Text
+  set newValue AwsLocationProperty {..}
+    = AwsLocationProperty {awsAccountId = Prelude.pure newValue, ..}
+instance Property "AwsRegion" AwsLocationProperty where
+  type PropertyType "AwsRegion" AwsLocationProperty = Value Prelude.Text
+  set newValue AwsLocationProperty {..}
+    = AwsLocationProperty {awsRegion = Prelude.pure newValue, ..}
+instance Property "IamConnectionId" AwsLocationProperty where
+  type PropertyType "IamConnectionId" AwsLocationProperty = Value Prelude.Text
+  set newValue AwsLocationProperty {..}
+    = AwsLocationProperty {iamConnectionId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/AwsLocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.AwsLocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AwsLocationProperty :: Prelude.Type
+instance ToResourceProperties AwsLocationProperty
+instance Prelude.Eq AwsLocationProperty
+instance Prelude.Show AwsLocationProperty
+instance JSON.ToJSON AwsLocationProperty
diff --git a/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs b/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.DataZone.Connection.BasicAuthenticationCredentialsProperty (
+        BasicAuthenticationCredentialsProperty(..),
+        mkBasicAuthenticationCredentialsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BasicAuthenticationCredentialsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-basicauthenticationcredentials.html>
+    BasicAuthenticationCredentialsProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-basicauthenticationcredentials.html#cfn-datazone-connection-basicauthenticationcredentials-password>
+                                            password :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-basicauthenticationcredentials.html#cfn-datazone-connection-basicauthenticationcredentials-username>
+                                            userName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBasicAuthenticationCredentialsProperty ::
+  BasicAuthenticationCredentialsProperty
+mkBasicAuthenticationCredentialsProperty
+  = BasicAuthenticationCredentialsProperty
+      {haddock_workaround_ = (), password = Prelude.Nothing,
+       userName = Prelude.Nothing}
+instance ToResourceProperties BasicAuthenticationCredentialsProperty where
+  toResourceProperties BasicAuthenticationCredentialsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.BasicAuthenticationCredentials",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Password" Prelude.<$> password,
+                            (JSON..=) "UserName" Prelude.<$> userName])}
+instance JSON.ToJSON BasicAuthenticationCredentialsProperty where
+  toJSON BasicAuthenticationCredentialsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Password" Prelude.<$> password,
+               (JSON..=) "UserName" Prelude.<$> userName]))
+instance Property "Password" BasicAuthenticationCredentialsProperty where
+  type PropertyType "Password" BasicAuthenticationCredentialsProperty = Value Prelude.Text
+  set newValue BasicAuthenticationCredentialsProperty {..}
+    = BasicAuthenticationCredentialsProperty
+        {password = Prelude.pure newValue, ..}
+instance Property "UserName" BasicAuthenticationCredentialsProperty where
+  type PropertyType "UserName" BasicAuthenticationCredentialsProperty = Value Prelude.Text
+  set newValue BasicAuthenticationCredentialsProperty {..}
+    = BasicAuthenticationCredentialsProperty
+        {userName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/BasicAuthenticationCredentialsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.BasicAuthenticationCredentialsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BasicAuthenticationCredentialsProperty :: Prelude.Type
+instance ToResourceProperties BasicAuthenticationCredentialsProperty
+instance Prelude.Eq BasicAuthenticationCredentialsProperty
+instance Prelude.Show BasicAuthenticationCredentialsProperty
+instance JSON.ToJSON BasicAuthenticationCredentialsProperty
diff --git a/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs
@@ -0,0 +1,116 @@
+module Stratosphere.DataZone.Connection.ConnectionPropertiesInputProperty (
+        module Exports, ConnectionPropertiesInputProperty(..),
+        mkConnectionPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.AthenaPropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.GluePropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.HyperPodPropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.IamPropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.RedshiftPropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.S3PropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.SparkEmrPropertiesInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.SparkGluePropertiesInputProperty as Exports
+import Stratosphere.ResourceProperties
+data ConnectionPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html>
+    ConnectionPropertiesInputProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-athenaproperties>
+                                       athenaProperties :: (Prelude.Maybe AthenaPropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-glueproperties>
+                                       glueProperties :: (Prelude.Maybe GluePropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-hyperpodproperties>
+                                       hyperPodProperties :: (Prelude.Maybe HyperPodPropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-iamproperties>
+                                       iamProperties :: (Prelude.Maybe IamPropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-redshiftproperties>
+                                       redshiftProperties :: (Prelude.Maybe RedshiftPropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-s3properties>
+                                       s3Properties :: (Prelude.Maybe S3PropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-sparkemrproperties>
+                                       sparkEmrProperties :: (Prelude.Maybe SparkEmrPropertiesInputProperty),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-connectionpropertiesinput.html#cfn-datazone-connection-connectionpropertiesinput-sparkglueproperties>
+                                       sparkGlueProperties :: (Prelude.Maybe SparkGluePropertiesInputProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnectionPropertiesInputProperty ::
+  ConnectionPropertiesInputProperty
+mkConnectionPropertiesInputProperty
+  = ConnectionPropertiesInputProperty
+      {haddock_workaround_ = (), athenaProperties = Prelude.Nothing,
+       glueProperties = Prelude.Nothing,
+       hyperPodProperties = Prelude.Nothing,
+       iamProperties = Prelude.Nothing,
+       redshiftProperties = Prelude.Nothing,
+       s3Properties = Prelude.Nothing,
+       sparkEmrProperties = Prelude.Nothing,
+       sparkGlueProperties = Prelude.Nothing}
+instance ToResourceProperties ConnectionPropertiesInputProperty where
+  toResourceProperties ConnectionPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.ConnectionPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AthenaProperties" Prelude.<$> athenaProperties,
+                            (JSON..=) "GlueProperties" Prelude.<$> glueProperties,
+                            (JSON..=) "HyperPodProperties" Prelude.<$> hyperPodProperties,
+                            (JSON..=) "IamProperties" Prelude.<$> iamProperties,
+                            (JSON..=) "RedshiftProperties" Prelude.<$> redshiftProperties,
+                            (JSON..=) "S3Properties" Prelude.<$> s3Properties,
+                            (JSON..=) "SparkEmrProperties" Prelude.<$> sparkEmrProperties,
+                            (JSON..=) "SparkGlueProperties" Prelude.<$> sparkGlueProperties])}
+instance JSON.ToJSON ConnectionPropertiesInputProperty where
+  toJSON ConnectionPropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AthenaProperties" Prelude.<$> athenaProperties,
+               (JSON..=) "GlueProperties" Prelude.<$> glueProperties,
+               (JSON..=) "HyperPodProperties" Prelude.<$> hyperPodProperties,
+               (JSON..=) "IamProperties" Prelude.<$> iamProperties,
+               (JSON..=) "RedshiftProperties" Prelude.<$> redshiftProperties,
+               (JSON..=) "S3Properties" Prelude.<$> s3Properties,
+               (JSON..=) "SparkEmrProperties" Prelude.<$> sparkEmrProperties,
+               (JSON..=) "SparkGlueProperties" Prelude.<$> sparkGlueProperties]))
+instance Property "AthenaProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "AthenaProperties" ConnectionPropertiesInputProperty = AthenaPropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {athenaProperties = Prelude.pure newValue, ..}
+instance Property "GlueProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "GlueProperties" ConnectionPropertiesInputProperty = GluePropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {glueProperties = Prelude.pure newValue, ..}
+instance Property "HyperPodProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "HyperPodProperties" ConnectionPropertiesInputProperty = HyperPodPropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {hyperPodProperties = Prelude.pure newValue, ..}
+instance Property "IamProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "IamProperties" ConnectionPropertiesInputProperty = IamPropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {iamProperties = Prelude.pure newValue, ..}
+instance Property "RedshiftProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "RedshiftProperties" ConnectionPropertiesInputProperty = RedshiftPropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {redshiftProperties = Prelude.pure newValue, ..}
+instance Property "S3Properties" ConnectionPropertiesInputProperty where
+  type PropertyType "S3Properties" ConnectionPropertiesInputProperty = S3PropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {s3Properties = Prelude.pure newValue, ..}
+instance Property "SparkEmrProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "SparkEmrProperties" ConnectionPropertiesInputProperty = SparkEmrPropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {sparkEmrProperties = Prelude.pure newValue, ..}
+instance Property "SparkGlueProperties" ConnectionPropertiesInputProperty where
+  type PropertyType "SparkGlueProperties" ConnectionPropertiesInputProperty = SparkGluePropertiesInputProperty
+  set newValue ConnectionPropertiesInputProperty {..}
+    = ConnectionPropertiesInputProperty
+        {sparkGlueProperties = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/ConnectionPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.ConnectionPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConnectionPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties ConnectionPropertiesInputProperty
+instance Prelude.Eq ConnectionPropertiesInputProperty
+instance Prelude.Show ConnectionPropertiesInputProperty
+instance JSON.ToJSON ConnectionPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs b/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs
@@ -0,0 +1,153 @@
+module Stratosphere.DataZone.Connection.GlueConnectionInputProperty (
+        module Exports, GlueConnectionInputProperty(..),
+        mkGlueConnectionInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.AuthenticationConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.PhysicalConnectionRequirementsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GlueConnectionInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html>
+    GlueConnectionInputProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-athenaproperties>
+                                 athenaProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-authenticationconfiguration>
+                                 authenticationConfiguration :: (Prelude.Maybe AuthenticationConfigurationInputProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-connectionproperties>
+                                 connectionProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-connectiontype>
+                                 connectionType :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-description>
+                                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-matchcriteria>
+                                 matchCriteria :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-name>
+                                 name :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-physicalconnectionrequirements>
+                                 physicalConnectionRequirements :: (Prelude.Maybe PhysicalConnectionRequirementsProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-pythonproperties>
+                                 pythonProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-sparkproperties>
+                                 sparkProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-validatecredentials>
+                                 validateCredentials :: (Prelude.Maybe (Value Prelude.Bool)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueconnectioninput.html#cfn-datazone-connection-glueconnectioninput-validateforcomputeenvironments>
+                                 validateForComputeEnvironments :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGlueConnectionInputProperty :: GlueConnectionInputProperty
+mkGlueConnectionInputProperty
+  = GlueConnectionInputProperty
+      {haddock_workaround_ = (), athenaProperties = Prelude.Nothing,
+       authenticationConfiguration = Prelude.Nothing,
+       connectionProperties = Prelude.Nothing,
+       connectionType = Prelude.Nothing, description = Prelude.Nothing,
+       matchCriteria = Prelude.Nothing, name = Prelude.Nothing,
+       physicalConnectionRequirements = Prelude.Nothing,
+       pythonProperties = Prelude.Nothing,
+       sparkProperties = Prelude.Nothing,
+       validateCredentials = Prelude.Nothing,
+       validateForComputeEnvironments = Prelude.Nothing}
+instance ToResourceProperties GlueConnectionInputProperty where
+  toResourceProperties GlueConnectionInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.GlueConnectionInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AthenaProperties" Prelude.<$> athenaProperties,
+                            (JSON..=) "AuthenticationConfiguration"
+                              Prelude.<$> authenticationConfiguration,
+                            (JSON..=) "ConnectionProperties" Prelude.<$> connectionProperties,
+                            (JSON..=) "ConnectionType" Prelude.<$> connectionType,
+                            (JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "MatchCriteria" Prelude.<$> matchCriteria,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "PhysicalConnectionRequirements"
+                              Prelude.<$> physicalConnectionRequirements,
+                            (JSON..=) "PythonProperties" Prelude.<$> pythonProperties,
+                            (JSON..=) "SparkProperties" Prelude.<$> sparkProperties,
+                            (JSON..=) "ValidateCredentials" Prelude.<$> validateCredentials,
+                            (JSON..=) "ValidateForComputeEnvironments"
+                              Prelude.<$> validateForComputeEnvironments])}
+instance JSON.ToJSON GlueConnectionInputProperty where
+  toJSON GlueConnectionInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AthenaProperties" Prelude.<$> athenaProperties,
+               (JSON..=) "AuthenticationConfiguration"
+                 Prelude.<$> authenticationConfiguration,
+               (JSON..=) "ConnectionProperties" Prelude.<$> connectionProperties,
+               (JSON..=) "ConnectionType" Prelude.<$> connectionType,
+               (JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "MatchCriteria" Prelude.<$> matchCriteria,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "PhysicalConnectionRequirements"
+                 Prelude.<$> physicalConnectionRequirements,
+               (JSON..=) "PythonProperties" Prelude.<$> pythonProperties,
+               (JSON..=) "SparkProperties" Prelude.<$> sparkProperties,
+               (JSON..=) "ValidateCredentials" Prelude.<$> validateCredentials,
+               (JSON..=) "ValidateForComputeEnvironments"
+                 Prelude.<$> validateForComputeEnvironments]))
+instance Property "AthenaProperties" GlueConnectionInputProperty where
+  type PropertyType "AthenaProperties" GlueConnectionInputProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {athenaProperties = Prelude.pure newValue, ..}
+instance Property "AuthenticationConfiguration" GlueConnectionInputProperty where
+  type PropertyType "AuthenticationConfiguration" GlueConnectionInputProperty = AuthenticationConfigurationInputProperty
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {authenticationConfiguration = Prelude.pure newValue, ..}
+instance Property "ConnectionProperties" GlueConnectionInputProperty where
+  type PropertyType "ConnectionProperties" GlueConnectionInputProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {connectionProperties = Prelude.pure newValue, ..}
+instance Property "ConnectionType" GlueConnectionInputProperty where
+  type PropertyType "ConnectionType" GlueConnectionInputProperty = Value Prelude.Text
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {connectionType = Prelude.pure newValue, ..}
+instance Property "Description" GlueConnectionInputProperty where
+  type PropertyType "Description" GlueConnectionInputProperty = Value Prelude.Text
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "MatchCriteria" GlueConnectionInputProperty where
+  type PropertyType "MatchCriteria" GlueConnectionInputProperty = Value Prelude.Text
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {matchCriteria = Prelude.pure newValue, ..}
+instance Property "Name" GlueConnectionInputProperty where
+  type PropertyType "Name" GlueConnectionInputProperty = Value Prelude.Text
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty {name = Prelude.pure newValue, ..}
+instance Property "PhysicalConnectionRequirements" GlueConnectionInputProperty where
+  type PropertyType "PhysicalConnectionRequirements" GlueConnectionInputProperty = PhysicalConnectionRequirementsProperty
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {physicalConnectionRequirements = Prelude.pure newValue, ..}
+instance Property "PythonProperties" GlueConnectionInputProperty where
+  type PropertyType "PythonProperties" GlueConnectionInputProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {pythonProperties = Prelude.pure newValue, ..}
+instance Property "SparkProperties" GlueConnectionInputProperty where
+  type PropertyType "SparkProperties" GlueConnectionInputProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {sparkProperties = Prelude.pure newValue, ..}
+instance Property "ValidateCredentials" GlueConnectionInputProperty where
+  type PropertyType "ValidateCredentials" GlueConnectionInputProperty = Value Prelude.Bool
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {validateCredentials = Prelude.pure newValue, ..}
+instance Property "ValidateForComputeEnvironments" GlueConnectionInputProperty where
+  type PropertyType "ValidateForComputeEnvironments" GlueConnectionInputProperty = ValueList Prelude.Text
+  set newValue GlueConnectionInputProperty {..}
+    = GlueConnectionInputProperty
+        {validateForComputeEnvironments = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GlueConnectionInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.GlueConnectionInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GlueConnectionInputProperty :: Prelude.Type
+instance ToResourceProperties GlueConnectionInputProperty
+instance Prelude.Eq GlueConnectionInputProperty
+instance Prelude.Show GlueConnectionInputProperty
+instance JSON.ToJSON GlueConnectionInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs b/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs
@@ -0,0 +1,69 @@
+module Stratosphere.DataZone.Connection.GlueOAuth2CredentialsProperty (
+        GlueOAuth2CredentialsProperty(..), mkGlueOAuth2CredentialsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GlueOAuth2CredentialsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueoauth2credentials.html>
+    GlueOAuth2CredentialsProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueoauth2credentials.html#cfn-datazone-connection-glueoauth2credentials-accesstoken>
+                                   accessToken :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueoauth2credentials.html#cfn-datazone-connection-glueoauth2credentials-jwttoken>
+                                   jwtToken :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueoauth2credentials.html#cfn-datazone-connection-glueoauth2credentials-refreshtoken>
+                                   refreshToken :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-glueoauth2credentials.html#cfn-datazone-connection-glueoauth2credentials-usermanagedclientapplicationclientsecret>
+                                   userManagedClientApplicationClientSecret :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGlueOAuth2CredentialsProperty :: GlueOAuth2CredentialsProperty
+mkGlueOAuth2CredentialsProperty
+  = GlueOAuth2CredentialsProperty
+      {haddock_workaround_ = (), accessToken = Prelude.Nothing,
+       jwtToken = Prelude.Nothing, refreshToken = Prelude.Nothing,
+       userManagedClientApplicationClientSecret = Prelude.Nothing}
+instance ToResourceProperties GlueOAuth2CredentialsProperty where
+  toResourceProperties GlueOAuth2CredentialsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.GlueOAuth2Credentials",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccessToken" Prelude.<$> accessToken,
+                            (JSON..=) "JwtToken" Prelude.<$> jwtToken,
+                            (JSON..=) "RefreshToken" Prelude.<$> refreshToken,
+                            (JSON..=) "UserManagedClientApplicationClientSecret"
+                              Prelude.<$> userManagedClientApplicationClientSecret])}
+instance JSON.ToJSON GlueOAuth2CredentialsProperty where
+  toJSON GlueOAuth2CredentialsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccessToken" Prelude.<$> accessToken,
+               (JSON..=) "JwtToken" Prelude.<$> jwtToken,
+               (JSON..=) "RefreshToken" Prelude.<$> refreshToken,
+               (JSON..=) "UserManagedClientApplicationClientSecret"
+                 Prelude.<$> userManagedClientApplicationClientSecret]))
+instance Property "AccessToken" GlueOAuth2CredentialsProperty where
+  type PropertyType "AccessToken" GlueOAuth2CredentialsProperty = Value Prelude.Text
+  set newValue GlueOAuth2CredentialsProperty {..}
+    = GlueOAuth2CredentialsProperty
+        {accessToken = Prelude.pure newValue, ..}
+instance Property "JwtToken" GlueOAuth2CredentialsProperty where
+  type PropertyType "JwtToken" GlueOAuth2CredentialsProperty = Value Prelude.Text
+  set newValue GlueOAuth2CredentialsProperty {..}
+    = GlueOAuth2CredentialsProperty
+        {jwtToken = Prelude.pure newValue, ..}
+instance Property "RefreshToken" GlueOAuth2CredentialsProperty where
+  type PropertyType "RefreshToken" GlueOAuth2CredentialsProperty = Value Prelude.Text
+  set newValue GlueOAuth2CredentialsProperty {..}
+    = GlueOAuth2CredentialsProperty
+        {refreshToken = Prelude.pure newValue, ..}
+instance Property "UserManagedClientApplicationClientSecret" GlueOAuth2CredentialsProperty where
+  type PropertyType "UserManagedClientApplicationClientSecret" GlueOAuth2CredentialsProperty = Value Prelude.Text
+  set newValue GlueOAuth2CredentialsProperty {..}
+    = GlueOAuth2CredentialsProperty
+        {userManagedClientApplicationClientSecret = Prelude.pure newValue,
+         ..}
diff --git a/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GlueOAuth2CredentialsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.GlueOAuth2CredentialsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GlueOAuth2CredentialsProperty :: Prelude.Type
+instance ToResourceProperties GlueOAuth2CredentialsProperty
+instance Prelude.Eq GlueOAuth2CredentialsProperty
+instance Prelude.Show GlueOAuth2CredentialsProperty
+instance JSON.ToJSON GlueOAuth2CredentialsProperty
diff --git a/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.DataZone.Connection.GluePropertiesInputProperty (
+        module Exports, GluePropertiesInputProperty(..),
+        mkGluePropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.GlueConnectionInputProperty as Exports
+import Stratosphere.ResourceProperties
+data GluePropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-gluepropertiesinput.html>
+    GluePropertiesInputProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-gluepropertiesinput.html#cfn-datazone-connection-gluepropertiesinput-glueconnectioninput>
+                                 glueConnectionInput :: (Prelude.Maybe GlueConnectionInputProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGluePropertiesInputProperty :: GluePropertiesInputProperty
+mkGluePropertiesInputProperty
+  = GluePropertiesInputProperty
+      {haddock_workaround_ = (), glueConnectionInput = Prelude.Nothing}
+instance ToResourceProperties GluePropertiesInputProperty where
+  toResourceProperties GluePropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.GluePropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GlueConnectionInput" Prelude.<$> glueConnectionInput])}
+instance JSON.ToJSON GluePropertiesInputProperty where
+  toJSON GluePropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GlueConnectionInput" Prelude.<$> glueConnectionInput]))
+instance Property "GlueConnectionInput" GluePropertiesInputProperty where
+  type PropertyType "GlueConnectionInput" GluePropertiesInputProperty = GlueConnectionInputProperty
+  set newValue GluePropertiesInputProperty {..}
+    = GluePropertiesInputProperty
+        {glueConnectionInput = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/GluePropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.GluePropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GluePropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties GluePropertiesInputProperty
+instance Prelude.Eq GluePropertiesInputProperty
+instance Prelude.Show GluePropertiesInputProperty
+instance JSON.ToJSON GluePropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.DataZone.Connection.HyperPodPropertiesInputProperty (
+        HyperPodPropertiesInputProperty(..),
+        mkHyperPodPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HyperPodPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-hyperpodpropertiesinput.html>
+    HyperPodPropertiesInputProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-hyperpodpropertiesinput.html#cfn-datazone-connection-hyperpodpropertiesinput-clustername>
+                                     clusterName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHyperPodPropertiesInputProperty ::
+  Value Prelude.Text -> HyperPodPropertiesInputProperty
+mkHyperPodPropertiesInputProperty clusterName
+  = HyperPodPropertiesInputProperty
+      {haddock_workaround_ = (), clusterName = clusterName}
+instance ToResourceProperties HyperPodPropertiesInputProperty where
+  toResourceProperties HyperPodPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.HyperPodPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = ["ClusterName" JSON..= clusterName]}
+instance JSON.ToJSON HyperPodPropertiesInputProperty where
+  toJSON HyperPodPropertiesInputProperty {..}
+    = JSON.object ["ClusterName" JSON..= clusterName]
+instance Property "ClusterName" HyperPodPropertiesInputProperty where
+  type PropertyType "ClusterName" HyperPodPropertiesInputProperty = Value Prelude.Text
+  set newValue HyperPodPropertiesInputProperty {..}
+    = HyperPodPropertiesInputProperty {clusterName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/HyperPodPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.HyperPodPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HyperPodPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties HyperPodPropertiesInputProperty
+instance Prelude.Eq HyperPodPropertiesInputProperty
+instance Prelude.Show HyperPodPropertiesInputProperty
+instance JSON.ToJSON HyperPodPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.DataZone.Connection.IamPropertiesInputProperty (
+        IamPropertiesInputProperty(..), mkIamPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IamPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-iampropertiesinput.html>
+    IamPropertiesInputProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-iampropertiesinput.html#cfn-datazone-connection-iampropertiesinput-gluelineagesyncenabled>
+                                glueLineageSyncEnabled :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIamPropertiesInputProperty :: IamPropertiesInputProperty
+mkIamPropertiesInputProperty
+  = IamPropertiesInputProperty
+      {haddock_workaround_ = (),
+       glueLineageSyncEnabled = Prelude.Nothing}
+instance ToResourceProperties IamPropertiesInputProperty where
+  toResourceProperties IamPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.IamPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GlueLineageSyncEnabled"
+                              Prelude.<$> glueLineageSyncEnabled])}
+instance JSON.ToJSON IamPropertiesInputProperty where
+  toJSON IamPropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GlueLineageSyncEnabled"
+                 Prelude.<$> glueLineageSyncEnabled]))
+instance Property "GlueLineageSyncEnabled" IamPropertiesInputProperty where
+  type PropertyType "GlueLineageSyncEnabled" IamPropertiesInputProperty = Value Prelude.Bool
+  set newValue IamPropertiesInputProperty {..}
+    = IamPropertiesInputProperty
+        {glueLineageSyncEnabled = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/IamPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.IamPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IamPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties IamPropertiesInputProperty
+instance Prelude.Eq IamPropertiesInputProperty
+instance Prelude.Show IamPropertiesInputProperty
+instance JSON.ToJSON IamPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs b/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.DataZone.Connection.LineageSyncScheduleProperty (
+        LineageSyncScheduleProperty(..), mkLineageSyncScheduleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LineageSyncScheduleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-lineagesyncschedule.html>
+    LineageSyncScheduleProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-lineagesyncschedule.html#cfn-datazone-connection-lineagesyncschedule-schedule>
+                                 schedule :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLineageSyncScheduleProperty :: LineageSyncScheduleProperty
+mkLineageSyncScheduleProperty
+  = LineageSyncScheduleProperty
+      {haddock_workaround_ = (), schedule = Prelude.Nothing}
+instance ToResourceProperties LineageSyncScheduleProperty where
+  toResourceProperties LineageSyncScheduleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.LineageSyncSchedule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Schedule" Prelude.<$> schedule])}
+instance JSON.ToJSON LineageSyncScheduleProperty where
+  toJSON LineageSyncScheduleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Schedule" Prelude.<$> schedule]))
+instance Property "Schedule" LineageSyncScheduleProperty where
+  type PropertyType "Schedule" LineageSyncScheduleProperty = Value Prelude.Text
+  set newValue LineageSyncScheduleProperty {..}
+    = LineageSyncScheduleProperty
+        {schedule = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/LineageSyncScheduleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.LineageSyncScheduleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LineageSyncScheduleProperty :: Prelude.Type
+instance ToResourceProperties LineageSyncScheduleProperty
+instance Prelude.Eq LineageSyncScheduleProperty
+instance Prelude.Show LineageSyncScheduleProperty
+instance JSON.ToJSON LineageSyncScheduleProperty
diff --git a/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs b/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.DataZone.Connection.OAuth2ClientApplicationProperty (
+        OAuth2ClientApplicationProperty(..),
+        mkOAuth2ClientApplicationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OAuth2ClientApplicationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2clientapplication.html>
+    OAuth2ClientApplicationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2clientapplication.html#cfn-datazone-connection-oauth2clientapplication-awsmanagedclientapplicationreference>
+                                     aWSManagedClientApplicationReference :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2clientapplication.html#cfn-datazone-connection-oauth2clientapplication-usermanagedclientapplicationclientid>
+                                     userManagedClientApplicationClientId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOAuth2ClientApplicationProperty ::
+  OAuth2ClientApplicationProperty
+mkOAuth2ClientApplicationProperty
+  = OAuth2ClientApplicationProperty
+      {haddock_workaround_ = (),
+       aWSManagedClientApplicationReference = Prelude.Nothing,
+       userManagedClientApplicationClientId = Prelude.Nothing}
+instance ToResourceProperties OAuth2ClientApplicationProperty where
+  toResourceProperties OAuth2ClientApplicationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.OAuth2ClientApplication",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AWSManagedClientApplicationReference"
+                              Prelude.<$> aWSManagedClientApplicationReference,
+                            (JSON..=) "UserManagedClientApplicationClientId"
+                              Prelude.<$> userManagedClientApplicationClientId])}
+instance JSON.ToJSON OAuth2ClientApplicationProperty where
+  toJSON OAuth2ClientApplicationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AWSManagedClientApplicationReference"
+                 Prelude.<$> aWSManagedClientApplicationReference,
+               (JSON..=) "UserManagedClientApplicationClientId"
+                 Prelude.<$> userManagedClientApplicationClientId]))
+instance Property "AWSManagedClientApplicationReference" OAuth2ClientApplicationProperty where
+  type PropertyType "AWSManagedClientApplicationReference" OAuth2ClientApplicationProperty = Value Prelude.Text
+  set newValue OAuth2ClientApplicationProperty {..}
+    = OAuth2ClientApplicationProperty
+        {aWSManagedClientApplicationReference = Prelude.pure newValue, ..}
+instance Property "UserManagedClientApplicationClientId" OAuth2ClientApplicationProperty where
+  type PropertyType "UserManagedClientApplicationClientId" OAuth2ClientApplicationProperty = Value Prelude.Text
+  set newValue OAuth2ClientApplicationProperty {..}
+    = OAuth2ClientApplicationProperty
+        {userManagedClientApplicationClientId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/OAuth2ClientApplicationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.OAuth2ClientApplicationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OAuth2ClientApplicationProperty :: Prelude.Type
+instance ToResourceProperties OAuth2ClientApplicationProperty
+instance Prelude.Eq OAuth2ClientApplicationProperty
+instance Prelude.Show OAuth2ClientApplicationProperty
+instance JSON.ToJSON OAuth2ClientApplicationProperty
diff --git a/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs b/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs
@@ -0,0 +1,96 @@
+module Stratosphere.DataZone.Connection.OAuth2PropertiesProperty (
+        module Exports, OAuth2PropertiesProperty(..),
+        mkOAuth2PropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.AuthorizationCodePropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.GlueOAuth2CredentialsProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.OAuth2ClientApplicationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OAuth2PropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html>
+    OAuth2PropertiesProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-authorizationcodeproperties>
+                              authorizationCodeProperties :: (Prelude.Maybe AuthorizationCodePropertiesProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-oauth2clientapplication>
+                              oAuth2ClientApplication :: (Prelude.Maybe OAuth2ClientApplicationProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-oauth2credentials>
+                              oAuth2Credentials :: (Prelude.Maybe GlueOAuth2CredentialsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-oauth2granttype>
+                              oAuth2GrantType :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-tokenurl>
+                              tokenUrl :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-oauth2properties.html#cfn-datazone-connection-oauth2properties-tokenurlparametersmap>
+                              tokenUrlParametersMap :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOAuth2PropertiesProperty :: OAuth2PropertiesProperty
+mkOAuth2PropertiesProperty
+  = OAuth2PropertiesProperty
+      {haddock_workaround_ = (),
+       authorizationCodeProperties = Prelude.Nothing,
+       oAuth2ClientApplication = Prelude.Nothing,
+       oAuth2Credentials = Prelude.Nothing,
+       oAuth2GrantType = Prelude.Nothing, tokenUrl = Prelude.Nothing,
+       tokenUrlParametersMap = Prelude.Nothing}
+instance ToResourceProperties OAuth2PropertiesProperty where
+  toResourceProperties OAuth2PropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.OAuth2Properties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthorizationCodeProperties"
+                              Prelude.<$> authorizationCodeProperties,
+                            (JSON..=) "OAuth2ClientApplication"
+                              Prelude.<$> oAuth2ClientApplication,
+                            (JSON..=) "OAuth2Credentials" Prelude.<$> oAuth2Credentials,
+                            (JSON..=) "OAuth2GrantType" Prelude.<$> oAuth2GrantType,
+                            (JSON..=) "TokenUrl" Prelude.<$> tokenUrl,
+                            (JSON..=) "TokenUrlParametersMap"
+                              Prelude.<$> tokenUrlParametersMap])}
+instance JSON.ToJSON OAuth2PropertiesProperty where
+  toJSON OAuth2PropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthorizationCodeProperties"
+                 Prelude.<$> authorizationCodeProperties,
+               (JSON..=) "OAuth2ClientApplication"
+                 Prelude.<$> oAuth2ClientApplication,
+               (JSON..=) "OAuth2Credentials" Prelude.<$> oAuth2Credentials,
+               (JSON..=) "OAuth2GrantType" Prelude.<$> oAuth2GrantType,
+               (JSON..=) "TokenUrl" Prelude.<$> tokenUrl,
+               (JSON..=) "TokenUrlParametersMap"
+                 Prelude.<$> tokenUrlParametersMap]))
+instance Property "AuthorizationCodeProperties" OAuth2PropertiesProperty where
+  type PropertyType "AuthorizationCodeProperties" OAuth2PropertiesProperty = AuthorizationCodePropertiesProperty
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty
+        {authorizationCodeProperties = Prelude.pure newValue, ..}
+instance Property "OAuth2ClientApplication" OAuth2PropertiesProperty where
+  type PropertyType "OAuth2ClientApplication" OAuth2PropertiesProperty = OAuth2ClientApplicationProperty
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty
+        {oAuth2ClientApplication = Prelude.pure newValue, ..}
+instance Property "OAuth2Credentials" OAuth2PropertiesProperty where
+  type PropertyType "OAuth2Credentials" OAuth2PropertiesProperty = GlueOAuth2CredentialsProperty
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty
+        {oAuth2Credentials = Prelude.pure newValue, ..}
+instance Property "OAuth2GrantType" OAuth2PropertiesProperty where
+  type PropertyType "OAuth2GrantType" OAuth2PropertiesProperty = Value Prelude.Text
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty
+        {oAuth2GrantType = Prelude.pure newValue, ..}
+instance Property "TokenUrl" OAuth2PropertiesProperty where
+  type PropertyType "TokenUrl" OAuth2PropertiesProperty = Value Prelude.Text
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty {tokenUrl = Prelude.pure newValue, ..}
+instance Property "TokenUrlParametersMap" OAuth2PropertiesProperty where
+  type PropertyType "TokenUrlParametersMap" OAuth2PropertiesProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue OAuth2PropertiesProperty {..}
+    = OAuth2PropertiesProperty
+        {tokenUrlParametersMap = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/OAuth2PropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.OAuth2PropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OAuth2PropertiesProperty :: Prelude.Type
+instance ToResourceProperties OAuth2PropertiesProperty
+instance Prelude.Eq OAuth2PropertiesProperty
+instance Prelude.Show OAuth2PropertiesProperty
+instance JSON.ToJSON OAuth2PropertiesProperty
diff --git a/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs b/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.DataZone.Connection.PhysicalConnectionRequirementsProperty (
+        PhysicalConnectionRequirementsProperty(..),
+        mkPhysicalConnectionRequirementsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PhysicalConnectionRequirementsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-physicalconnectionrequirements.html>
+    PhysicalConnectionRequirementsProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-physicalconnectionrequirements.html#cfn-datazone-connection-physicalconnectionrequirements-availabilityzone>
+                                            availabilityZone :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-physicalconnectionrequirements.html#cfn-datazone-connection-physicalconnectionrequirements-securitygroupidlist>
+                                            securityGroupIdList :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-physicalconnectionrequirements.html#cfn-datazone-connection-physicalconnectionrequirements-subnetid>
+                                            subnetId :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-physicalconnectionrequirements.html#cfn-datazone-connection-physicalconnectionrequirements-subnetidlist>
+                                            subnetIdList :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPhysicalConnectionRequirementsProperty ::
+  PhysicalConnectionRequirementsProperty
+mkPhysicalConnectionRequirementsProperty
+  = PhysicalConnectionRequirementsProperty
+      {haddock_workaround_ = (), availabilityZone = Prelude.Nothing,
+       securityGroupIdList = Prelude.Nothing, subnetId = Prelude.Nothing,
+       subnetIdList = Prelude.Nothing}
+instance ToResourceProperties PhysicalConnectionRequirementsProperty where
+  toResourceProperties PhysicalConnectionRequirementsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.PhysicalConnectionRequirements",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AvailabilityZone" Prelude.<$> availabilityZone,
+                            (JSON..=) "SecurityGroupIdList" Prelude.<$> securityGroupIdList,
+                            (JSON..=) "SubnetId" Prelude.<$> subnetId,
+                            (JSON..=) "SubnetIdList" Prelude.<$> subnetIdList])}
+instance JSON.ToJSON PhysicalConnectionRequirementsProperty where
+  toJSON PhysicalConnectionRequirementsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AvailabilityZone" Prelude.<$> availabilityZone,
+               (JSON..=) "SecurityGroupIdList" Prelude.<$> securityGroupIdList,
+               (JSON..=) "SubnetId" Prelude.<$> subnetId,
+               (JSON..=) "SubnetIdList" Prelude.<$> subnetIdList]))
+instance Property "AvailabilityZone" PhysicalConnectionRequirementsProperty where
+  type PropertyType "AvailabilityZone" PhysicalConnectionRequirementsProperty = Value Prelude.Text
+  set newValue PhysicalConnectionRequirementsProperty {..}
+    = PhysicalConnectionRequirementsProperty
+        {availabilityZone = Prelude.pure newValue, ..}
+instance Property "SecurityGroupIdList" PhysicalConnectionRequirementsProperty where
+  type PropertyType "SecurityGroupIdList" PhysicalConnectionRequirementsProperty = ValueList Prelude.Text
+  set newValue PhysicalConnectionRequirementsProperty {..}
+    = PhysicalConnectionRequirementsProperty
+        {securityGroupIdList = Prelude.pure newValue, ..}
+instance Property "SubnetId" PhysicalConnectionRequirementsProperty where
+  type PropertyType "SubnetId" PhysicalConnectionRequirementsProperty = Value Prelude.Text
+  set newValue PhysicalConnectionRequirementsProperty {..}
+    = PhysicalConnectionRequirementsProperty
+        {subnetId = Prelude.pure newValue, ..}
+instance Property "SubnetIdList" PhysicalConnectionRequirementsProperty where
+  type PropertyType "SubnetIdList" PhysicalConnectionRequirementsProperty = ValueList Prelude.Text
+  set newValue PhysicalConnectionRequirementsProperty {..}
+    = PhysicalConnectionRequirementsProperty
+        {subnetIdList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/PhysicalConnectionRequirementsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.PhysicalConnectionRequirementsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PhysicalConnectionRequirementsProperty :: Prelude.Type
+instance ToResourceProperties PhysicalConnectionRequirementsProperty
+instance Prelude.Eq PhysicalConnectionRequirementsProperty
+instance Prelude.Show PhysicalConnectionRequirementsProperty
+instance JSON.ToJSON PhysicalConnectionRequirementsProperty
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs b/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.DataZone.Connection.RedshiftCredentialsProperty (
+        module Exports, RedshiftCredentialsProperty(..),
+        mkRedshiftCredentialsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.UsernamePasswordProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftCredentialsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftcredentials.html>
+    RedshiftCredentialsProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftcredentials.html#cfn-datazone-connection-redshiftcredentials-secretarn>
+                                 secretArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftcredentials.html#cfn-datazone-connection-redshiftcredentials-usernamepassword>
+                                 usernamePassword :: (Prelude.Maybe UsernamePasswordProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftCredentialsProperty :: RedshiftCredentialsProperty
+mkRedshiftCredentialsProperty
+  = RedshiftCredentialsProperty
+      {haddock_workaround_ = (), secretArn = Prelude.Nothing,
+       usernamePassword = Prelude.Nothing}
+instance ToResourceProperties RedshiftCredentialsProperty where
+  toResourceProperties RedshiftCredentialsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.RedshiftCredentials",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SecretArn" Prelude.<$> secretArn,
+                            (JSON..=) "UsernamePassword" Prelude.<$> usernamePassword])}
+instance JSON.ToJSON RedshiftCredentialsProperty where
+  toJSON RedshiftCredentialsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SecretArn" Prelude.<$> secretArn,
+               (JSON..=) "UsernamePassword" Prelude.<$> usernamePassword]))
+instance Property "SecretArn" RedshiftCredentialsProperty where
+  type PropertyType "SecretArn" RedshiftCredentialsProperty = Value Prelude.Text
+  set newValue RedshiftCredentialsProperty {..}
+    = RedshiftCredentialsProperty
+        {secretArn = Prelude.pure newValue, ..}
+instance Property "UsernamePassword" RedshiftCredentialsProperty where
+  type PropertyType "UsernamePassword" RedshiftCredentialsProperty = UsernamePasswordProperty
+  set newValue RedshiftCredentialsProperty {..}
+    = RedshiftCredentialsProperty
+        {usernamePassword = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftCredentialsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.RedshiftCredentialsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftCredentialsProperty :: Prelude.Type
+instance ToResourceProperties RedshiftCredentialsProperty
+instance Prelude.Eq RedshiftCredentialsProperty
+instance Prelude.Show RedshiftCredentialsProperty
+instance JSON.ToJSON RedshiftCredentialsProperty
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.DataZone.Connection.RedshiftLineageSyncConfigurationInputProperty (
+        module Exports, RedshiftLineageSyncConfigurationInputProperty(..),
+        mkRedshiftLineageSyncConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.LineageSyncScheduleProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftLineageSyncConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftlineagesyncconfigurationinput.html>
+    RedshiftLineageSyncConfigurationInputProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftlineagesyncconfigurationinput.html#cfn-datazone-connection-redshiftlineagesyncconfigurationinput-enabled>
+                                                   enabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftlineagesyncconfigurationinput.html#cfn-datazone-connection-redshiftlineagesyncconfigurationinput-schedule>
+                                                   schedule :: (Prelude.Maybe LineageSyncScheduleProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftLineageSyncConfigurationInputProperty ::
+  RedshiftLineageSyncConfigurationInputProperty
+mkRedshiftLineageSyncConfigurationInputProperty
+  = RedshiftLineageSyncConfigurationInputProperty
+      {haddock_workaround_ = (), enabled = Prelude.Nothing,
+       schedule = Prelude.Nothing}
+instance ToResourceProperties RedshiftLineageSyncConfigurationInputProperty where
+  toResourceProperties
+    RedshiftLineageSyncConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.RedshiftLineageSyncConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Enabled" Prelude.<$> enabled,
+                            (JSON..=) "Schedule" Prelude.<$> schedule])}
+instance JSON.ToJSON RedshiftLineageSyncConfigurationInputProperty where
+  toJSON RedshiftLineageSyncConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Enabled" Prelude.<$> enabled,
+               (JSON..=) "Schedule" Prelude.<$> schedule]))
+instance Property "Enabled" RedshiftLineageSyncConfigurationInputProperty where
+  type PropertyType "Enabled" RedshiftLineageSyncConfigurationInputProperty = Value Prelude.Bool
+  set newValue RedshiftLineageSyncConfigurationInputProperty {..}
+    = RedshiftLineageSyncConfigurationInputProperty
+        {enabled = Prelude.pure newValue, ..}
+instance Property "Schedule" RedshiftLineageSyncConfigurationInputProperty where
+  type PropertyType "Schedule" RedshiftLineageSyncConfigurationInputProperty = LineageSyncScheduleProperty
+  set newValue RedshiftLineageSyncConfigurationInputProperty {..}
+    = RedshiftLineageSyncConfigurationInputProperty
+        {schedule = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftLineageSyncConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.RedshiftLineageSyncConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftLineageSyncConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties RedshiftLineageSyncConfigurationInputProperty
+instance Prelude.Eq RedshiftLineageSyncConfigurationInputProperty
+instance Prelude.Show RedshiftLineageSyncConfigurationInputProperty
+instance JSON.ToJSON RedshiftLineageSyncConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs
@@ -0,0 +1,90 @@
+module Stratosphere.DataZone.Connection.RedshiftPropertiesInputProperty (
+        module Exports, RedshiftPropertiesInputProperty(..),
+        mkRedshiftPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.RedshiftCredentialsProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.RedshiftLineageSyncConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.RedshiftStoragePropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html>
+    RedshiftPropertiesInputProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-credentials>
+                                     credentials :: (Prelude.Maybe RedshiftCredentialsProperty),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-databasename>
+                                     databaseName :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-host>
+                                     host :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-lineagesync>
+                                     lineageSync :: (Prelude.Maybe RedshiftLineageSyncConfigurationInputProperty),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-port>
+                                     port :: (Prelude.Maybe (Value Prelude.Double)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftpropertiesinput.html#cfn-datazone-connection-redshiftpropertiesinput-storage>
+                                     storage :: (Prelude.Maybe RedshiftStoragePropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftPropertiesInputProperty ::
+  RedshiftPropertiesInputProperty
+mkRedshiftPropertiesInputProperty
+  = RedshiftPropertiesInputProperty
+      {haddock_workaround_ = (), credentials = Prelude.Nothing,
+       databaseName = Prelude.Nothing, host = Prelude.Nothing,
+       lineageSync = Prelude.Nothing, port = Prelude.Nothing,
+       storage = Prelude.Nothing}
+instance ToResourceProperties RedshiftPropertiesInputProperty where
+  toResourceProperties RedshiftPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.RedshiftPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Credentials" Prelude.<$> credentials,
+                            (JSON..=) "DatabaseName" Prelude.<$> databaseName,
+                            (JSON..=) "Host" Prelude.<$> host,
+                            (JSON..=) "LineageSync" Prelude.<$> lineageSync,
+                            (JSON..=) "Port" Prelude.<$> port,
+                            (JSON..=) "Storage" Prelude.<$> storage])}
+instance JSON.ToJSON RedshiftPropertiesInputProperty where
+  toJSON RedshiftPropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Credentials" Prelude.<$> credentials,
+               (JSON..=) "DatabaseName" Prelude.<$> databaseName,
+               (JSON..=) "Host" Prelude.<$> host,
+               (JSON..=) "LineageSync" Prelude.<$> lineageSync,
+               (JSON..=) "Port" Prelude.<$> port,
+               (JSON..=) "Storage" Prelude.<$> storage]))
+instance Property "Credentials" RedshiftPropertiesInputProperty where
+  type PropertyType "Credentials" RedshiftPropertiesInputProperty = RedshiftCredentialsProperty
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {credentials = Prelude.pure newValue, ..}
+instance Property "DatabaseName" RedshiftPropertiesInputProperty where
+  type PropertyType "DatabaseName" RedshiftPropertiesInputProperty = Value Prelude.Text
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {databaseName = Prelude.pure newValue, ..}
+instance Property "Host" RedshiftPropertiesInputProperty where
+  type PropertyType "Host" RedshiftPropertiesInputProperty = Value Prelude.Text
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {host = Prelude.pure newValue, ..}
+instance Property "LineageSync" RedshiftPropertiesInputProperty where
+  type PropertyType "LineageSync" RedshiftPropertiesInputProperty = RedshiftLineageSyncConfigurationInputProperty
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {lineageSync = Prelude.pure newValue, ..}
+instance Property "Port" RedshiftPropertiesInputProperty where
+  type PropertyType "Port" RedshiftPropertiesInputProperty = Value Prelude.Double
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {port = Prelude.pure newValue, ..}
+instance Property "Storage" RedshiftPropertiesInputProperty where
+  type PropertyType "Storage" RedshiftPropertiesInputProperty = RedshiftStoragePropertiesProperty
+  set newValue RedshiftPropertiesInputProperty {..}
+    = RedshiftPropertiesInputProperty
+        {storage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.RedshiftPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties RedshiftPropertiesInputProperty
+instance Prelude.Eq RedshiftPropertiesInputProperty
+instance Prelude.Show RedshiftPropertiesInputProperty
+instance JSON.ToJSON RedshiftPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs b/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.DataZone.Connection.RedshiftStoragePropertiesProperty (
+        RedshiftStoragePropertiesProperty(..),
+        mkRedshiftStoragePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftStoragePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftstorageproperties.html>
+    RedshiftStoragePropertiesProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftstorageproperties.html#cfn-datazone-connection-redshiftstorageproperties-clustername>
+                                       clusterName :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-redshiftstorageproperties.html#cfn-datazone-connection-redshiftstorageproperties-workgroupname>
+                                       workgroupName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftStoragePropertiesProperty ::
+  RedshiftStoragePropertiesProperty
+mkRedshiftStoragePropertiesProperty
+  = RedshiftStoragePropertiesProperty
+      {haddock_workaround_ = (), clusterName = Prelude.Nothing,
+       workgroupName = Prelude.Nothing}
+instance ToResourceProperties RedshiftStoragePropertiesProperty where
+  toResourceProperties RedshiftStoragePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.RedshiftStorageProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ClusterName" Prelude.<$> clusterName,
+                            (JSON..=) "WorkgroupName" Prelude.<$> workgroupName])}
+instance JSON.ToJSON RedshiftStoragePropertiesProperty where
+  toJSON RedshiftStoragePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ClusterName" Prelude.<$> clusterName,
+               (JSON..=) "WorkgroupName" Prelude.<$> workgroupName]))
+instance Property "ClusterName" RedshiftStoragePropertiesProperty where
+  type PropertyType "ClusterName" RedshiftStoragePropertiesProperty = Value Prelude.Text
+  set newValue RedshiftStoragePropertiesProperty {..}
+    = RedshiftStoragePropertiesProperty
+        {clusterName = Prelude.pure newValue, ..}
+instance Property "WorkgroupName" RedshiftStoragePropertiesProperty where
+  type PropertyType "WorkgroupName" RedshiftStoragePropertiesProperty = Value Prelude.Text
+  set newValue RedshiftStoragePropertiesProperty {..}
+    = RedshiftStoragePropertiesProperty
+        {workgroupName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/RedshiftStoragePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.RedshiftStoragePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftStoragePropertiesProperty :: Prelude.Type
+instance ToResourceProperties RedshiftStoragePropertiesProperty
+instance Prelude.Eq RedshiftStoragePropertiesProperty
+instance Prelude.Show RedshiftStoragePropertiesProperty
+instance JSON.ToJSON RedshiftStoragePropertiesProperty
diff --git a/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.DataZone.Connection.S3PropertiesInputProperty (
+        S3PropertiesInputProperty(..), mkS3PropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3PropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-s3propertiesinput.html>
+    S3PropertiesInputProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-s3propertiesinput.html#cfn-datazone-connection-s3propertiesinput-s3accessgrantlocationid>
+                               s3AccessGrantLocationId :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-s3propertiesinput.html#cfn-datazone-connection-s3propertiesinput-s3uri>
+                               s3Uri :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3PropertiesInputProperty ::
+  Value Prelude.Text -> S3PropertiesInputProperty
+mkS3PropertiesInputProperty s3Uri
+  = S3PropertiesInputProperty
+      {haddock_workaround_ = (), s3Uri = s3Uri,
+       s3AccessGrantLocationId = Prelude.Nothing}
+instance ToResourceProperties S3PropertiesInputProperty where
+  toResourceProperties S3PropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.S3PropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["S3Uri" JSON..= s3Uri]
+                           (Prelude.catMaybes
+                              [(JSON..=) "S3AccessGrantLocationId"
+                                 Prelude.<$> s3AccessGrantLocationId]))}
+instance JSON.ToJSON S3PropertiesInputProperty where
+  toJSON S3PropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["S3Uri" JSON..= s3Uri]
+              (Prelude.catMaybes
+                 [(JSON..=) "S3AccessGrantLocationId"
+                    Prelude.<$> s3AccessGrantLocationId])))
+instance Property "S3AccessGrantLocationId" S3PropertiesInputProperty where
+  type PropertyType "S3AccessGrantLocationId" S3PropertiesInputProperty = Value Prelude.Text
+  set newValue S3PropertiesInputProperty {..}
+    = S3PropertiesInputProperty
+        {s3AccessGrantLocationId = Prelude.pure newValue, ..}
+instance Property "S3Uri" S3PropertiesInputProperty where
+  type PropertyType "S3Uri" S3PropertiesInputProperty = Value Prelude.Text
+  set newValue S3PropertiesInputProperty {..}
+    = S3PropertiesInputProperty {s3Uri = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/S3PropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.S3PropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3PropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties S3PropertiesInputProperty
+instance Prelude.Eq S3PropertiesInputProperty
+instance Prelude.Show S3PropertiesInputProperty
+instance JSON.ToJSON S3PropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs
@@ -0,0 +1,99 @@
+module Stratosphere.DataZone.Connection.SparkEmrPropertiesInputProperty (
+        SparkEmrPropertiesInputProperty(..),
+        mkSparkEmrPropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SparkEmrPropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html>
+    SparkEmrPropertiesInputProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-computearn>
+                                     computeArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-instanceprofilearn>
+                                     instanceProfileArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-javavirtualenv>
+                                     javaVirtualEnv :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-loguri>
+                                     logUri :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-pythonvirtualenv>
+                                     pythonVirtualEnv :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-runtimerole>
+                                     runtimeRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkemrpropertiesinput.html#cfn-datazone-connection-sparkemrpropertiesinput-trustedcertificatess3uri>
+                                     trustedCertificatesS3Uri :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSparkEmrPropertiesInputProperty ::
+  SparkEmrPropertiesInputProperty
+mkSparkEmrPropertiesInputProperty
+  = SparkEmrPropertiesInputProperty
+      {haddock_workaround_ = (), computeArn = Prelude.Nothing,
+       instanceProfileArn = Prelude.Nothing,
+       javaVirtualEnv = Prelude.Nothing, logUri = Prelude.Nothing,
+       pythonVirtualEnv = Prelude.Nothing, runtimeRole = Prelude.Nothing,
+       trustedCertificatesS3Uri = Prelude.Nothing}
+instance ToResourceProperties SparkEmrPropertiesInputProperty where
+  toResourceProperties SparkEmrPropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.SparkEmrPropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ComputeArn" Prelude.<$> computeArn,
+                            (JSON..=) "InstanceProfileArn" Prelude.<$> instanceProfileArn,
+                            (JSON..=) "JavaVirtualEnv" Prelude.<$> javaVirtualEnv,
+                            (JSON..=) "LogUri" Prelude.<$> logUri,
+                            (JSON..=) "PythonVirtualEnv" Prelude.<$> pythonVirtualEnv,
+                            (JSON..=) "RuntimeRole" Prelude.<$> runtimeRole,
+                            (JSON..=) "TrustedCertificatesS3Uri"
+                              Prelude.<$> trustedCertificatesS3Uri])}
+instance JSON.ToJSON SparkEmrPropertiesInputProperty where
+  toJSON SparkEmrPropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ComputeArn" Prelude.<$> computeArn,
+               (JSON..=) "InstanceProfileArn" Prelude.<$> instanceProfileArn,
+               (JSON..=) "JavaVirtualEnv" Prelude.<$> javaVirtualEnv,
+               (JSON..=) "LogUri" Prelude.<$> logUri,
+               (JSON..=) "PythonVirtualEnv" Prelude.<$> pythonVirtualEnv,
+               (JSON..=) "RuntimeRole" Prelude.<$> runtimeRole,
+               (JSON..=) "TrustedCertificatesS3Uri"
+                 Prelude.<$> trustedCertificatesS3Uri]))
+instance Property "ComputeArn" SparkEmrPropertiesInputProperty where
+  type PropertyType "ComputeArn" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {computeArn = Prelude.pure newValue, ..}
+instance Property "InstanceProfileArn" SparkEmrPropertiesInputProperty where
+  type PropertyType "InstanceProfileArn" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {instanceProfileArn = Prelude.pure newValue, ..}
+instance Property "JavaVirtualEnv" SparkEmrPropertiesInputProperty where
+  type PropertyType "JavaVirtualEnv" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {javaVirtualEnv = Prelude.pure newValue, ..}
+instance Property "LogUri" SparkEmrPropertiesInputProperty where
+  type PropertyType "LogUri" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {logUri = Prelude.pure newValue, ..}
+instance Property "PythonVirtualEnv" SparkEmrPropertiesInputProperty where
+  type PropertyType "PythonVirtualEnv" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {pythonVirtualEnv = Prelude.pure newValue, ..}
+instance Property "RuntimeRole" SparkEmrPropertiesInputProperty where
+  type PropertyType "RuntimeRole" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {runtimeRole = Prelude.pure newValue, ..}
+instance Property "TrustedCertificatesS3Uri" SparkEmrPropertiesInputProperty where
+  type PropertyType "TrustedCertificatesS3Uri" SparkEmrPropertiesInputProperty = Value Prelude.Text
+  set newValue SparkEmrPropertiesInputProperty {..}
+    = SparkEmrPropertiesInputProperty
+        {trustedCertificatesS3Uri = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkEmrPropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.SparkEmrPropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SparkEmrPropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties SparkEmrPropertiesInputProperty
+instance Prelude.Eq SparkEmrPropertiesInputProperty
+instance Prelude.Show SparkEmrPropertiesInputProperty
+instance JSON.ToJSON SparkEmrPropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs b/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.DataZone.Connection.SparkGlueArgsProperty (
+        SparkGlueArgsProperty(..), mkSparkGlueArgsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SparkGlueArgsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkglueargs.html>
+    SparkGlueArgsProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkglueargs.html#cfn-datazone-connection-sparkglueargs-connection>
+                           connection :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSparkGlueArgsProperty :: SparkGlueArgsProperty
+mkSparkGlueArgsProperty
+  = SparkGlueArgsProperty
+      {haddock_workaround_ = (), connection = Prelude.Nothing}
+instance ToResourceProperties SparkGlueArgsProperty where
+  toResourceProperties SparkGlueArgsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.SparkGlueArgs",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Connection" Prelude.<$> connection])}
+instance JSON.ToJSON SparkGlueArgsProperty where
+  toJSON SparkGlueArgsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Connection" Prelude.<$> connection]))
+instance Property "Connection" SparkGlueArgsProperty where
+  type PropertyType "Connection" SparkGlueArgsProperty = Value Prelude.Text
+  set newValue SparkGlueArgsProperty {..}
+    = SparkGlueArgsProperty {connection = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkGlueArgsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.SparkGlueArgsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SparkGlueArgsProperty :: Prelude.Type
+instance ToResourceProperties SparkGlueArgsProperty
+instance Prelude.Eq SparkGlueArgsProperty
+instance Prelude.Show SparkGlueArgsProperty
+instance JSON.ToJSON SparkGlueArgsProperty
diff --git a/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs b/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs
@@ -0,0 +1,108 @@
+module Stratosphere.DataZone.Connection.SparkGluePropertiesInputProperty (
+        module Exports, SparkGluePropertiesInputProperty(..),
+        mkSparkGluePropertiesInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Connection.SparkGlueArgsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SparkGluePropertiesInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html>
+    SparkGluePropertiesInputProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-additionalargs>
+                                      additionalArgs :: (Prelude.Maybe SparkGlueArgsProperty),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-glueconnectionname>
+                                      glueConnectionName :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-glueversion>
+                                      glueVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-idletimeout>
+                                      idleTimeout :: (Prelude.Maybe (Value Prelude.Double)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-javavirtualenv>
+                                      javaVirtualEnv :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-numberofworkers>
+                                      numberOfWorkers :: (Prelude.Maybe (Value Prelude.Double)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-pythonvirtualenv>
+                                      pythonVirtualEnv :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-sparkgluepropertiesinput.html#cfn-datazone-connection-sparkgluepropertiesinput-workertype>
+                                      workerType :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSparkGluePropertiesInputProperty ::
+  SparkGluePropertiesInputProperty
+mkSparkGluePropertiesInputProperty
+  = SparkGluePropertiesInputProperty
+      {haddock_workaround_ = (), additionalArgs = Prelude.Nothing,
+       glueConnectionName = Prelude.Nothing,
+       glueVersion = Prelude.Nothing, idleTimeout = Prelude.Nothing,
+       javaVirtualEnv = Prelude.Nothing,
+       numberOfWorkers = Prelude.Nothing,
+       pythonVirtualEnv = Prelude.Nothing, workerType = Prelude.Nothing}
+instance ToResourceProperties SparkGluePropertiesInputProperty where
+  toResourceProperties SparkGluePropertiesInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.SparkGluePropertiesInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AdditionalArgs" Prelude.<$> additionalArgs,
+                            (JSON..=) "GlueConnectionName" Prelude.<$> glueConnectionName,
+                            (JSON..=) "GlueVersion" Prelude.<$> glueVersion,
+                            (JSON..=) "IdleTimeout" Prelude.<$> idleTimeout,
+                            (JSON..=) "JavaVirtualEnv" Prelude.<$> javaVirtualEnv,
+                            (JSON..=) "NumberOfWorkers" Prelude.<$> numberOfWorkers,
+                            (JSON..=) "PythonVirtualEnv" Prelude.<$> pythonVirtualEnv,
+                            (JSON..=) "WorkerType" Prelude.<$> workerType])}
+instance JSON.ToJSON SparkGluePropertiesInputProperty where
+  toJSON SparkGluePropertiesInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AdditionalArgs" Prelude.<$> additionalArgs,
+               (JSON..=) "GlueConnectionName" Prelude.<$> glueConnectionName,
+               (JSON..=) "GlueVersion" Prelude.<$> glueVersion,
+               (JSON..=) "IdleTimeout" Prelude.<$> idleTimeout,
+               (JSON..=) "JavaVirtualEnv" Prelude.<$> javaVirtualEnv,
+               (JSON..=) "NumberOfWorkers" Prelude.<$> numberOfWorkers,
+               (JSON..=) "PythonVirtualEnv" Prelude.<$> pythonVirtualEnv,
+               (JSON..=) "WorkerType" Prelude.<$> workerType]))
+instance Property "AdditionalArgs" SparkGluePropertiesInputProperty where
+  type PropertyType "AdditionalArgs" SparkGluePropertiesInputProperty = SparkGlueArgsProperty
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {additionalArgs = Prelude.pure newValue, ..}
+instance Property "GlueConnectionName" SparkGluePropertiesInputProperty where
+  type PropertyType "GlueConnectionName" SparkGluePropertiesInputProperty = Value Prelude.Text
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {glueConnectionName = Prelude.pure newValue, ..}
+instance Property "GlueVersion" SparkGluePropertiesInputProperty where
+  type PropertyType "GlueVersion" SparkGluePropertiesInputProperty = Value Prelude.Text
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {glueVersion = Prelude.pure newValue, ..}
+instance Property "IdleTimeout" SparkGluePropertiesInputProperty where
+  type PropertyType "IdleTimeout" SparkGluePropertiesInputProperty = Value Prelude.Double
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {idleTimeout = Prelude.pure newValue, ..}
+instance Property "JavaVirtualEnv" SparkGluePropertiesInputProperty where
+  type PropertyType "JavaVirtualEnv" SparkGluePropertiesInputProperty = Value Prelude.Text
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {javaVirtualEnv = Prelude.pure newValue, ..}
+instance Property "NumberOfWorkers" SparkGluePropertiesInputProperty where
+  type PropertyType "NumberOfWorkers" SparkGluePropertiesInputProperty = Value Prelude.Double
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {numberOfWorkers = Prelude.pure newValue, ..}
+instance Property "PythonVirtualEnv" SparkGluePropertiesInputProperty where
+  type PropertyType "PythonVirtualEnv" SparkGluePropertiesInputProperty = Value Prelude.Text
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {pythonVirtualEnv = Prelude.pure newValue, ..}
+instance Property "WorkerType" SparkGluePropertiesInputProperty where
+  type PropertyType "WorkerType" SparkGluePropertiesInputProperty = Value Prelude.Text
+  set newValue SparkGluePropertiesInputProperty {..}
+    = SparkGluePropertiesInputProperty
+        {workerType = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/SparkGluePropertiesInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.SparkGluePropertiesInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SparkGluePropertiesInputProperty :: Prelude.Type
+instance ToResourceProperties SparkGluePropertiesInputProperty
+instance Prelude.Eq SparkGluePropertiesInputProperty
+instance Prelude.Show SparkGluePropertiesInputProperty
+instance JSON.ToJSON SparkGluePropertiesInputProperty
diff --git a/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs b/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.Connection.UsernamePasswordProperty (
+        UsernamePasswordProperty(..), mkUsernamePasswordProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UsernamePasswordProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-usernamepassword.html>
+    UsernamePasswordProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-usernamepassword.html#cfn-datazone-connection-usernamepassword-password>
+                              password :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-connection-usernamepassword.html#cfn-datazone-connection-usernamepassword-username>
+                              username :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUsernamePasswordProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> UsernamePasswordProperty
+mkUsernamePasswordProperty password username
+  = UsernamePasswordProperty
+      {haddock_workaround_ = (), password = password,
+       username = username}
+instance ToResourceProperties UsernamePasswordProperty where
+  toResourceProperties UsernamePasswordProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Connection.UsernamePassword",
+         supportsTags = Prelude.False,
+         properties = ["Password" JSON..= password,
+                       "Username" JSON..= username]}
+instance JSON.ToJSON UsernamePasswordProperty where
+  toJSON UsernamePasswordProperty {..}
+    = JSON.object
+        ["Password" JSON..= password, "Username" JSON..= username]
+instance Property "Password" UsernamePasswordProperty where
+  type PropertyType "Password" UsernamePasswordProperty = Value Prelude.Text
+  set newValue UsernamePasswordProperty {..}
+    = UsernamePasswordProperty {password = newValue, ..}
+instance Property "Username" UsernamePasswordProperty where
+  type PropertyType "Username" UsernamePasswordProperty = Value Prelude.Text
+  set newValue UsernamePasswordProperty {..}
+    = UsernamePasswordProperty {username = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs-boot b/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Connection/UsernamePasswordProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Connection.UsernamePasswordProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UsernamePasswordProperty :: Prelude.Type
+instance ToResourceProperties UsernamePasswordProperty
+instance Prelude.Eq UsernamePasswordProperty
+instance Prelude.Show UsernamePasswordProperty
+instance JSON.ToJSON UsernamePasswordProperty
diff --git a/gen/Stratosphere/DataZone/DataSource.hs b/gen/Stratosphere/DataZone/DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource.hs
@@ -0,0 +1,146 @@
+module Stratosphere.DataZone.DataSource (
+        module Exports, DataSource(..), mkDataSource
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.DataSourceConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.FormInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RecommendationConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.ScheduleConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DataSource
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html>
+    DataSource {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-assetformsinput>
+                assetFormsInput :: (Prelude.Maybe [FormInputProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-configuration>
+                configuration :: (Prelude.Maybe DataSourceConfigurationInputProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-connectionidentifier>
+                connectionIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-domainidentifier>
+                domainIdentifier :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-enablesetting>
+                enableSetting :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-environmentidentifier>
+                environmentIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-name>
+                name :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-projectidentifier>
+                projectIdentifier :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-publishonimport>
+                publishOnImport :: (Prelude.Maybe (Value Prelude.Bool)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-recommendation>
+                recommendation :: (Prelude.Maybe RecommendationConfigurationProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-schedule>
+                schedule :: (Prelude.Maybe ScheduleConfigurationProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-datasource.html#cfn-datazone-datasource-type>
+                type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDataSource ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> DataSource
+mkDataSource domainIdentifier name projectIdentifier type'
+  = DataSource
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       name = name, projectIdentifier = projectIdentifier, type' = type',
+       assetFormsInput = Prelude.Nothing, configuration = Prelude.Nothing,
+       connectionIdentifier = Prelude.Nothing,
+       description = Prelude.Nothing, enableSetting = Prelude.Nothing,
+       environmentIdentifier = Prelude.Nothing,
+       publishOnImport = Prelude.Nothing,
+       recommendation = Prelude.Nothing, schedule = Prelude.Nothing}
+instance ToResourceProperties DataSource where
+  toResourceProperties DataSource {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+                            "ProjectIdentifier" JSON..= projectIdentifier,
+                            "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "AssetFormsInput" Prelude.<$> assetFormsInput,
+                               (JSON..=) "Configuration" Prelude.<$> configuration,
+                               (JSON..=) "ConnectionIdentifier" Prelude.<$> connectionIdentifier,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnableSetting" Prelude.<$> enableSetting,
+                               (JSON..=) "EnvironmentIdentifier"
+                                 Prelude.<$> environmentIdentifier,
+                               (JSON..=) "PublishOnImport" Prelude.<$> publishOnImport,
+                               (JSON..=) "Recommendation" Prelude.<$> recommendation,
+                               (JSON..=) "Schedule" Prelude.<$> schedule]))}
+instance JSON.ToJSON DataSource where
+  toJSON DataSource {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+               "ProjectIdentifier" JSON..= projectIdentifier,
+               "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "AssetFormsInput" Prelude.<$> assetFormsInput,
+                  (JSON..=) "Configuration" Prelude.<$> configuration,
+                  (JSON..=) "ConnectionIdentifier" Prelude.<$> connectionIdentifier,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnableSetting" Prelude.<$> enableSetting,
+                  (JSON..=) "EnvironmentIdentifier"
+                    Prelude.<$> environmentIdentifier,
+                  (JSON..=) "PublishOnImport" Prelude.<$> publishOnImport,
+                  (JSON..=) "Recommendation" Prelude.<$> recommendation,
+                  (JSON..=) "Schedule" Prelude.<$> schedule])))
+instance Property "AssetFormsInput" DataSource where
+  type PropertyType "AssetFormsInput" DataSource = [FormInputProperty]
+  set newValue DataSource {..}
+    = DataSource {assetFormsInput = Prelude.pure newValue, ..}
+instance Property "Configuration" DataSource where
+  type PropertyType "Configuration" DataSource = DataSourceConfigurationInputProperty
+  set newValue DataSource {..}
+    = DataSource {configuration = Prelude.pure newValue, ..}
+instance Property "ConnectionIdentifier" DataSource where
+  type PropertyType "ConnectionIdentifier" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {connectionIdentifier = Prelude.pure newValue, ..}
+instance Property "Description" DataSource where
+  type PropertyType "Description" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" DataSource where
+  type PropertyType "DomainIdentifier" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {domainIdentifier = newValue, ..}
+instance Property "EnableSetting" DataSource where
+  type PropertyType "EnableSetting" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {enableSetting = Prelude.pure newValue, ..}
+instance Property "EnvironmentIdentifier" DataSource where
+  type PropertyType "EnvironmentIdentifier" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {environmentIdentifier = Prelude.pure newValue, ..}
+instance Property "Name" DataSource where
+  type PropertyType "Name" DataSource = Value Prelude.Text
+  set newValue DataSource {..} = DataSource {name = newValue, ..}
+instance Property "ProjectIdentifier" DataSource where
+  type PropertyType "ProjectIdentifier" DataSource = Value Prelude.Text
+  set newValue DataSource {..}
+    = DataSource {projectIdentifier = newValue, ..}
+instance Property "PublishOnImport" DataSource where
+  type PropertyType "PublishOnImport" DataSource = Value Prelude.Bool
+  set newValue DataSource {..}
+    = DataSource {publishOnImport = Prelude.pure newValue, ..}
+instance Property "Recommendation" DataSource where
+  type PropertyType "Recommendation" DataSource = RecommendationConfigurationProperty
+  set newValue DataSource {..}
+    = DataSource {recommendation = Prelude.pure newValue, ..}
+instance Property "Schedule" DataSource where
+  type PropertyType "Schedule" DataSource = ScheduleConfigurationProperty
+  set newValue DataSource {..}
+    = DataSource {schedule = Prelude.pure newValue, ..}
+instance Property "Type" DataSource where
+  type PropertyType "Type" DataSource = Value Prelude.Text
+  set newValue DataSource {..} = DataSource {type' = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.DataZone.DataSource.DataSourceConfigurationInputProperty (
+        module Exports, DataSourceConfigurationInputProperty(..),
+        mkDataSourceConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.GlueRunConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RedshiftRunConfigurationInputProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.SageMakerRunConfigurationInputProperty as Exports
+import Stratosphere.ResourceProperties
+data DataSourceConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-datasourceconfigurationinput.html>
+    DataSourceConfigurationInputProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-datasourceconfigurationinput.html#cfn-datazone-datasource-datasourceconfigurationinput-gluerunconfiguration>
+                                          glueRunConfiguration :: (Prelude.Maybe GlueRunConfigurationInputProperty),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-datasourceconfigurationinput.html#cfn-datazone-datasource-datasourceconfigurationinput-redshiftrunconfiguration>
+                                          redshiftRunConfiguration :: (Prelude.Maybe RedshiftRunConfigurationInputProperty),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-datasourceconfigurationinput.html#cfn-datazone-datasource-datasourceconfigurationinput-sagemakerrunconfiguration>
+                                          sageMakerRunConfiguration :: (Prelude.Maybe SageMakerRunConfigurationInputProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDataSourceConfigurationInputProperty ::
+  DataSourceConfigurationInputProperty
+mkDataSourceConfigurationInputProperty
+  = DataSourceConfigurationInputProperty
+      {haddock_workaround_ = (), glueRunConfiguration = Prelude.Nothing,
+       redshiftRunConfiguration = Prelude.Nothing,
+       sageMakerRunConfiguration = Prelude.Nothing}
+instance ToResourceProperties DataSourceConfigurationInputProperty where
+  toResourceProperties DataSourceConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.DataSourceConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GlueRunConfiguration" Prelude.<$> glueRunConfiguration,
+                            (JSON..=) "RedshiftRunConfiguration"
+                              Prelude.<$> redshiftRunConfiguration,
+                            (JSON..=) "SageMakerRunConfiguration"
+                              Prelude.<$> sageMakerRunConfiguration])}
+instance JSON.ToJSON DataSourceConfigurationInputProperty where
+  toJSON DataSourceConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GlueRunConfiguration" Prelude.<$> glueRunConfiguration,
+               (JSON..=) "RedshiftRunConfiguration"
+                 Prelude.<$> redshiftRunConfiguration,
+               (JSON..=) "SageMakerRunConfiguration"
+                 Prelude.<$> sageMakerRunConfiguration]))
+instance Property "GlueRunConfiguration" DataSourceConfigurationInputProperty where
+  type PropertyType "GlueRunConfiguration" DataSourceConfigurationInputProperty = GlueRunConfigurationInputProperty
+  set newValue DataSourceConfigurationInputProperty {..}
+    = DataSourceConfigurationInputProperty
+        {glueRunConfiguration = Prelude.pure newValue, ..}
+instance Property "RedshiftRunConfiguration" DataSourceConfigurationInputProperty where
+  type PropertyType "RedshiftRunConfiguration" DataSourceConfigurationInputProperty = RedshiftRunConfigurationInputProperty
+  set newValue DataSourceConfigurationInputProperty {..}
+    = DataSourceConfigurationInputProperty
+        {redshiftRunConfiguration = Prelude.pure newValue, ..}
+instance Property "SageMakerRunConfiguration" DataSourceConfigurationInputProperty where
+  type PropertyType "SageMakerRunConfiguration" DataSourceConfigurationInputProperty = SageMakerRunConfigurationInputProperty
+  set newValue DataSourceConfigurationInputProperty {..}
+    = DataSourceConfigurationInputProperty
+        {sageMakerRunConfiguration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/DataSourceConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.DataSourceConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DataSourceConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties DataSourceConfigurationInputProperty
+instance Prelude.Eq DataSourceConfigurationInputProperty
+instance Prelude.Show DataSourceConfigurationInputProperty
+instance JSON.ToJSON DataSourceConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs b/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.DataZone.DataSource.FilterExpressionProperty (
+        FilterExpressionProperty(..), mkFilterExpressionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FilterExpressionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-filterexpression.html>
+    FilterExpressionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-filterexpression.html#cfn-datazone-datasource-filterexpression-expression>
+                              expression :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-filterexpression.html#cfn-datazone-datasource-filterexpression-type>
+                              type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFilterExpressionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> FilterExpressionProperty
+mkFilterExpressionProperty expression type'
+  = FilterExpressionProperty
+      {haddock_workaround_ = (), expression = expression, type' = type'}
+instance ToResourceProperties FilterExpressionProperty where
+  toResourceProperties FilterExpressionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.FilterExpression",
+         supportsTags = Prelude.False,
+         properties = ["Expression" JSON..= expression,
+                       "Type" JSON..= type']}
+instance JSON.ToJSON FilterExpressionProperty where
+  toJSON FilterExpressionProperty {..}
+    = JSON.object
+        ["Expression" JSON..= expression, "Type" JSON..= type']
+instance Property "Expression" FilterExpressionProperty where
+  type PropertyType "Expression" FilterExpressionProperty = Value Prelude.Text
+  set newValue FilterExpressionProperty {..}
+    = FilterExpressionProperty {expression = newValue, ..}
+instance Property "Type" FilterExpressionProperty where
+  type PropertyType "Type" FilterExpressionProperty = Value Prelude.Text
+  set newValue FilterExpressionProperty {..}
+    = FilterExpressionProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/FilterExpressionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.FilterExpressionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FilterExpressionProperty :: Prelude.Type
+instance ToResourceProperties FilterExpressionProperty
+instance Prelude.Eq FilterExpressionProperty
+instance Prelude.Show FilterExpressionProperty
+instance JSON.ToJSON FilterExpressionProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs b/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.DataZone.DataSource.FormInputProperty (
+        FormInputProperty(..), mkFormInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-forminput.html>
+    FormInputProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-forminput.html#cfn-datazone-datasource-forminput-content>
+                       content :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-forminput.html#cfn-datazone-datasource-forminput-formname>
+                       formName :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-forminput.html#cfn-datazone-datasource-forminput-typeidentifier>
+                       typeIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-forminput.html#cfn-datazone-datasource-forminput-typerevision>
+                       typeRevision :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormInputProperty :: Value Prelude.Text -> FormInputProperty
+mkFormInputProperty formName
+  = FormInputProperty
+      {haddock_workaround_ = (), formName = formName,
+       content = Prelude.Nothing, typeIdentifier = Prelude.Nothing,
+       typeRevision = Prelude.Nothing}
+instance ToResourceProperties FormInputProperty where
+  toResourceProperties FormInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.FormInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["FormName" JSON..= formName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Content" Prelude.<$> content,
+                               (JSON..=) "TypeIdentifier" Prelude.<$> typeIdentifier,
+                               (JSON..=) "TypeRevision" Prelude.<$> typeRevision]))}
+instance JSON.ToJSON FormInputProperty where
+  toJSON FormInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["FormName" JSON..= formName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Content" Prelude.<$> content,
+                  (JSON..=) "TypeIdentifier" Prelude.<$> typeIdentifier,
+                  (JSON..=) "TypeRevision" Prelude.<$> typeRevision])))
+instance Property "Content" FormInputProperty where
+  type PropertyType "Content" FormInputProperty = Value Prelude.Text
+  set newValue FormInputProperty {..}
+    = FormInputProperty {content = Prelude.pure newValue, ..}
+instance Property "FormName" FormInputProperty where
+  type PropertyType "FormName" FormInputProperty = Value Prelude.Text
+  set newValue FormInputProperty {..}
+    = FormInputProperty {formName = newValue, ..}
+instance Property "TypeIdentifier" FormInputProperty where
+  type PropertyType "TypeIdentifier" FormInputProperty = Value Prelude.Text
+  set newValue FormInputProperty {..}
+    = FormInputProperty {typeIdentifier = Prelude.pure newValue, ..}
+instance Property "TypeRevision" FormInputProperty where
+  type PropertyType "TypeRevision" FormInputProperty = Value Prelude.Text
+  set newValue FormInputProperty {..}
+    = FormInputProperty {typeRevision = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/FormInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.FormInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormInputProperty :: Prelude.Type
+instance ToResourceProperties FormInputProperty
+instance Prelude.Eq FormInputProperty
+instance Prelude.Show FormInputProperty
+instance JSON.ToJSON FormInputProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs
@@ -0,0 +1,77 @@
+module Stratosphere.DataZone.DataSource.GlueRunConfigurationInputProperty (
+        module Exports, GlueRunConfigurationInputProperty(..),
+        mkGlueRunConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RelationalFilterConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GlueRunConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-gluerunconfigurationinput.html>
+    GlueRunConfigurationInputProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-gluerunconfigurationinput.html#cfn-datazone-datasource-gluerunconfigurationinput-autoimportdataqualityresult>
+                                       autoImportDataQualityResult :: (Prelude.Maybe (Value Prelude.Bool)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-gluerunconfigurationinput.html#cfn-datazone-datasource-gluerunconfigurationinput-catalogname>
+                                       catalogName :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-gluerunconfigurationinput.html#cfn-datazone-datasource-gluerunconfigurationinput-dataaccessrole>
+                                       dataAccessRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-gluerunconfigurationinput.html#cfn-datazone-datasource-gluerunconfigurationinput-relationalfilterconfigurations>
+                                       relationalFilterConfigurations :: [RelationalFilterConfigurationProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGlueRunConfigurationInputProperty ::
+  [RelationalFilterConfigurationProperty]
+  -> GlueRunConfigurationInputProperty
+mkGlueRunConfigurationInputProperty relationalFilterConfigurations
+  = GlueRunConfigurationInputProperty
+      {haddock_workaround_ = (),
+       relationalFilterConfigurations = relationalFilterConfigurations,
+       autoImportDataQualityResult = Prelude.Nothing,
+       catalogName = Prelude.Nothing, dataAccessRole = Prelude.Nothing}
+instance ToResourceProperties GlueRunConfigurationInputProperty where
+  toResourceProperties GlueRunConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.GlueRunConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RelationalFilterConfigurations"
+                              JSON..= relationalFilterConfigurations]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoImportDataQualityResult"
+                                 Prelude.<$> autoImportDataQualityResult,
+                               (JSON..=) "CatalogName" Prelude.<$> catalogName,
+                               (JSON..=) "DataAccessRole" Prelude.<$> dataAccessRole]))}
+instance JSON.ToJSON GlueRunConfigurationInputProperty where
+  toJSON GlueRunConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RelationalFilterConfigurations"
+                 JSON..= relationalFilterConfigurations]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoImportDataQualityResult"
+                    Prelude.<$> autoImportDataQualityResult,
+                  (JSON..=) "CatalogName" Prelude.<$> catalogName,
+                  (JSON..=) "DataAccessRole" Prelude.<$> dataAccessRole])))
+instance Property "AutoImportDataQualityResult" GlueRunConfigurationInputProperty where
+  type PropertyType "AutoImportDataQualityResult" GlueRunConfigurationInputProperty = Value Prelude.Bool
+  set newValue GlueRunConfigurationInputProperty {..}
+    = GlueRunConfigurationInputProperty
+        {autoImportDataQualityResult = Prelude.pure newValue, ..}
+instance Property "CatalogName" GlueRunConfigurationInputProperty where
+  type PropertyType "CatalogName" GlueRunConfigurationInputProperty = Value Prelude.Text
+  set newValue GlueRunConfigurationInputProperty {..}
+    = GlueRunConfigurationInputProperty
+        {catalogName = Prelude.pure newValue, ..}
+instance Property "DataAccessRole" GlueRunConfigurationInputProperty where
+  type PropertyType "DataAccessRole" GlueRunConfigurationInputProperty = Value Prelude.Text
+  set newValue GlueRunConfigurationInputProperty {..}
+    = GlueRunConfigurationInputProperty
+        {dataAccessRole = Prelude.pure newValue, ..}
+instance Property "RelationalFilterConfigurations" GlueRunConfigurationInputProperty where
+  type PropertyType "RelationalFilterConfigurations" GlueRunConfigurationInputProperty = [RelationalFilterConfigurationProperty]
+  set newValue GlueRunConfigurationInputProperty {..}
+    = GlueRunConfigurationInputProperty
+        {relationalFilterConfigurations = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/GlueRunConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.GlueRunConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GlueRunConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties GlueRunConfigurationInputProperty
+instance Prelude.Eq GlueRunConfigurationInputProperty
+instance Prelude.Show GlueRunConfigurationInputProperty
+instance JSON.ToJSON GlueRunConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs b/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.DataSource.RecommendationConfigurationProperty (
+        RecommendationConfigurationProperty(..),
+        mkRecommendationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RecommendationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-recommendationconfiguration.html>
+    RecommendationConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-recommendationconfiguration.html#cfn-datazone-datasource-recommendationconfiguration-enablebusinessnamegeneration>
+                                         enableBusinessNameGeneration :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRecommendationConfigurationProperty ::
+  RecommendationConfigurationProperty
+mkRecommendationConfigurationProperty
+  = RecommendationConfigurationProperty
+      {haddock_workaround_ = (),
+       enableBusinessNameGeneration = Prelude.Nothing}
+instance ToResourceProperties RecommendationConfigurationProperty where
+  toResourceProperties RecommendationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RecommendationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EnableBusinessNameGeneration"
+                              Prelude.<$> enableBusinessNameGeneration])}
+instance JSON.ToJSON RecommendationConfigurationProperty where
+  toJSON RecommendationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EnableBusinessNameGeneration"
+                 Prelude.<$> enableBusinessNameGeneration]))
+instance Property "EnableBusinessNameGeneration" RecommendationConfigurationProperty where
+  type PropertyType "EnableBusinessNameGeneration" RecommendationConfigurationProperty = Value Prelude.Bool
+  set newValue RecommendationConfigurationProperty {..}
+    = RecommendationConfigurationProperty
+        {enableBusinessNameGeneration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RecommendationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RecommendationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RecommendationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties RecommendationConfigurationProperty
+instance Prelude.Eq RecommendationConfigurationProperty
+instance Prelude.Show RecommendationConfigurationProperty
+instance JSON.ToJSON RecommendationConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs b/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.DataZone.DataSource.RedshiftClusterStorageProperty (
+        RedshiftClusterStorageProperty(..),
+        mkRedshiftClusterStorageProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftClusterStorageProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftclusterstorage.html>
+    RedshiftClusterStorageProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftclusterstorage.html#cfn-datazone-datasource-redshiftclusterstorage-clustername>
+                                    clusterName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftClusterStorageProperty ::
+  Value Prelude.Text -> RedshiftClusterStorageProperty
+mkRedshiftClusterStorageProperty clusterName
+  = RedshiftClusterStorageProperty
+      {haddock_workaround_ = (), clusterName = clusterName}
+instance ToResourceProperties RedshiftClusterStorageProperty where
+  toResourceProperties RedshiftClusterStorageProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RedshiftClusterStorage",
+         supportsTags = Prelude.False,
+         properties = ["ClusterName" JSON..= clusterName]}
+instance JSON.ToJSON RedshiftClusterStorageProperty where
+  toJSON RedshiftClusterStorageProperty {..}
+    = JSON.object ["ClusterName" JSON..= clusterName]
+instance Property "ClusterName" RedshiftClusterStorageProperty where
+  type PropertyType "ClusterName" RedshiftClusterStorageProperty = Value Prelude.Text
+  set newValue RedshiftClusterStorageProperty {..}
+    = RedshiftClusterStorageProperty {clusterName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftClusterStorageProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RedshiftClusterStorageProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftClusterStorageProperty :: Prelude.Type
+instance ToResourceProperties RedshiftClusterStorageProperty
+instance Prelude.Eq RedshiftClusterStorageProperty
+instance Prelude.Show RedshiftClusterStorageProperty
+instance JSON.ToJSON RedshiftClusterStorageProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs b/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.DataZone.DataSource.RedshiftCredentialConfigurationProperty (
+        RedshiftCredentialConfigurationProperty(..),
+        mkRedshiftCredentialConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftCredentialConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftcredentialconfiguration.html>
+    RedshiftCredentialConfigurationProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftcredentialconfiguration.html#cfn-datazone-datasource-redshiftcredentialconfiguration-secretmanagerarn>
+                                             secretManagerArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftCredentialConfigurationProperty ::
+  Value Prelude.Text -> RedshiftCredentialConfigurationProperty
+mkRedshiftCredentialConfigurationProperty secretManagerArn
+  = RedshiftCredentialConfigurationProperty
+      {haddock_workaround_ = (), secretManagerArn = secretManagerArn}
+instance ToResourceProperties RedshiftCredentialConfigurationProperty where
+  toResourceProperties RedshiftCredentialConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RedshiftCredentialConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["SecretManagerArn" JSON..= secretManagerArn]}
+instance JSON.ToJSON RedshiftCredentialConfigurationProperty where
+  toJSON RedshiftCredentialConfigurationProperty {..}
+    = JSON.object ["SecretManagerArn" JSON..= secretManagerArn]
+instance Property "SecretManagerArn" RedshiftCredentialConfigurationProperty where
+  type PropertyType "SecretManagerArn" RedshiftCredentialConfigurationProperty = Value Prelude.Text
+  set newValue RedshiftCredentialConfigurationProperty {..}
+    = RedshiftCredentialConfigurationProperty
+        {secretManagerArn = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftCredentialConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RedshiftCredentialConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftCredentialConfigurationProperty :: Prelude.Type
+instance ToResourceProperties RedshiftCredentialConfigurationProperty
+instance Prelude.Eq RedshiftCredentialConfigurationProperty
+instance Prelude.Show RedshiftCredentialConfigurationProperty
+instance JSON.ToJSON RedshiftCredentialConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs
@@ -0,0 +1,81 @@
+module Stratosphere.DataZone.DataSource.RedshiftRunConfigurationInputProperty (
+        module Exports, RedshiftRunConfigurationInputProperty(..),
+        mkRedshiftRunConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RedshiftCredentialConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RedshiftStorageProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RelationalFilterConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftRunConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftrunconfigurationinput.html>
+    RedshiftRunConfigurationInputProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftrunconfigurationinput.html#cfn-datazone-datasource-redshiftrunconfigurationinput-dataaccessrole>
+                                           dataAccessRole :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftrunconfigurationinput.html#cfn-datazone-datasource-redshiftrunconfigurationinput-redshiftcredentialconfiguration>
+                                           redshiftCredentialConfiguration :: (Prelude.Maybe RedshiftCredentialConfigurationProperty),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftrunconfigurationinput.html#cfn-datazone-datasource-redshiftrunconfigurationinput-redshiftstorage>
+                                           redshiftStorage :: (Prelude.Maybe RedshiftStorageProperty),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftrunconfigurationinput.html#cfn-datazone-datasource-redshiftrunconfigurationinput-relationalfilterconfigurations>
+                                           relationalFilterConfigurations :: [RelationalFilterConfigurationProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftRunConfigurationInputProperty ::
+  [RelationalFilterConfigurationProperty]
+  -> RedshiftRunConfigurationInputProperty
+mkRedshiftRunConfigurationInputProperty
+  relationalFilterConfigurations
+  = RedshiftRunConfigurationInputProperty
+      {haddock_workaround_ = (),
+       relationalFilterConfigurations = relationalFilterConfigurations,
+       dataAccessRole = Prelude.Nothing,
+       redshiftCredentialConfiguration = Prelude.Nothing,
+       redshiftStorage = Prelude.Nothing}
+instance ToResourceProperties RedshiftRunConfigurationInputProperty where
+  toResourceProperties RedshiftRunConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RedshiftRunConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RelationalFilterConfigurations"
+                              JSON..= relationalFilterConfigurations]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DataAccessRole" Prelude.<$> dataAccessRole,
+                               (JSON..=) "RedshiftCredentialConfiguration"
+                                 Prelude.<$> redshiftCredentialConfiguration,
+                               (JSON..=) "RedshiftStorage" Prelude.<$> redshiftStorage]))}
+instance JSON.ToJSON RedshiftRunConfigurationInputProperty where
+  toJSON RedshiftRunConfigurationInputProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RelationalFilterConfigurations"
+                 JSON..= relationalFilterConfigurations]
+              (Prelude.catMaybes
+                 [(JSON..=) "DataAccessRole" Prelude.<$> dataAccessRole,
+                  (JSON..=) "RedshiftCredentialConfiguration"
+                    Prelude.<$> redshiftCredentialConfiguration,
+                  (JSON..=) "RedshiftStorage" Prelude.<$> redshiftStorage])))
+instance Property "DataAccessRole" RedshiftRunConfigurationInputProperty where
+  type PropertyType "DataAccessRole" RedshiftRunConfigurationInputProperty = Value Prelude.Text
+  set newValue RedshiftRunConfigurationInputProperty {..}
+    = RedshiftRunConfigurationInputProperty
+        {dataAccessRole = Prelude.pure newValue, ..}
+instance Property "RedshiftCredentialConfiguration" RedshiftRunConfigurationInputProperty where
+  type PropertyType "RedshiftCredentialConfiguration" RedshiftRunConfigurationInputProperty = RedshiftCredentialConfigurationProperty
+  set newValue RedshiftRunConfigurationInputProperty {..}
+    = RedshiftRunConfigurationInputProperty
+        {redshiftCredentialConfiguration = Prelude.pure newValue, ..}
+instance Property "RedshiftStorage" RedshiftRunConfigurationInputProperty where
+  type PropertyType "RedshiftStorage" RedshiftRunConfigurationInputProperty = RedshiftStorageProperty
+  set newValue RedshiftRunConfigurationInputProperty {..}
+    = RedshiftRunConfigurationInputProperty
+        {redshiftStorage = Prelude.pure newValue, ..}
+instance Property "RelationalFilterConfigurations" RedshiftRunConfigurationInputProperty where
+  type PropertyType "RelationalFilterConfigurations" RedshiftRunConfigurationInputProperty = [RelationalFilterConfigurationProperty]
+  set newValue RedshiftRunConfigurationInputProperty {..}
+    = RedshiftRunConfigurationInputProperty
+        {relationalFilterConfigurations = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftRunConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RedshiftRunConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftRunConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties RedshiftRunConfigurationInputProperty
+instance Prelude.Eq RedshiftRunConfigurationInputProperty
+instance Prelude.Show RedshiftRunConfigurationInputProperty
+instance JSON.ToJSON RedshiftRunConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs b/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.DataZone.DataSource.RedshiftServerlessStorageProperty (
+        RedshiftServerlessStorageProperty(..),
+        mkRedshiftServerlessStorageProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftServerlessStorageProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftserverlessstorage.html>
+    RedshiftServerlessStorageProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftserverlessstorage.html#cfn-datazone-datasource-redshiftserverlessstorage-workgroupname>
+                                       workgroupName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftServerlessStorageProperty ::
+  Value Prelude.Text -> RedshiftServerlessStorageProperty
+mkRedshiftServerlessStorageProperty workgroupName
+  = RedshiftServerlessStorageProperty
+      {haddock_workaround_ = (), workgroupName = workgroupName}
+instance ToResourceProperties RedshiftServerlessStorageProperty where
+  toResourceProperties RedshiftServerlessStorageProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RedshiftServerlessStorage",
+         supportsTags = Prelude.False,
+         properties = ["WorkgroupName" JSON..= workgroupName]}
+instance JSON.ToJSON RedshiftServerlessStorageProperty where
+  toJSON RedshiftServerlessStorageProperty {..}
+    = JSON.object ["WorkgroupName" JSON..= workgroupName]
+instance Property "WorkgroupName" RedshiftServerlessStorageProperty where
+  type PropertyType "WorkgroupName" RedshiftServerlessStorageProperty = Value Prelude.Text
+  set newValue RedshiftServerlessStorageProperty {..}
+    = RedshiftServerlessStorageProperty {workgroupName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftServerlessStorageProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RedshiftServerlessStorageProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftServerlessStorageProperty :: Prelude.Type
+instance ToResourceProperties RedshiftServerlessStorageProperty
+instance Prelude.Eq RedshiftServerlessStorageProperty
+instance Prelude.Show RedshiftServerlessStorageProperty
+instance JSON.ToJSON RedshiftServerlessStorageProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs b/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.DataZone.DataSource.RedshiftStorageProperty (
+        module Exports, RedshiftStorageProperty(..),
+        mkRedshiftStorageProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RedshiftClusterStorageProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.RedshiftServerlessStorageProperty as Exports
+import Stratosphere.ResourceProperties
+data RedshiftStorageProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftstorage.html>
+    RedshiftStorageProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftstorage.html#cfn-datazone-datasource-redshiftstorage-redshiftclustersource>
+                             redshiftClusterSource :: (Prelude.Maybe RedshiftClusterStorageProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-redshiftstorage.html#cfn-datazone-datasource-redshiftstorage-redshiftserverlesssource>
+                             redshiftServerlessSource :: (Prelude.Maybe RedshiftServerlessStorageProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftStorageProperty :: RedshiftStorageProperty
+mkRedshiftStorageProperty
+  = RedshiftStorageProperty
+      {haddock_workaround_ = (), redshiftClusterSource = Prelude.Nothing,
+       redshiftServerlessSource = Prelude.Nothing}
+instance ToResourceProperties RedshiftStorageProperty where
+  toResourceProperties RedshiftStorageProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RedshiftStorage",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "RedshiftClusterSource"
+                              Prelude.<$> redshiftClusterSource,
+                            (JSON..=) "RedshiftServerlessSource"
+                              Prelude.<$> redshiftServerlessSource])}
+instance JSON.ToJSON RedshiftStorageProperty where
+  toJSON RedshiftStorageProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "RedshiftClusterSource"
+                 Prelude.<$> redshiftClusterSource,
+               (JSON..=) "RedshiftServerlessSource"
+                 Prelude.<$> redshiftServerlessSource]))
+instance Property "RedshiftClusterSource" RedshiftStorageProperty where
+  type PropertyType "RedshiftClusterSource" RedshiftStorageProperty = RedshiftClusterStorageProperty
+  set newValue RedshiftStorageProperty {..}
+    = RedshiftStorageProperty
+        {redshiftClusterSource = Prelude.pure newValue, ..}
+instance Property "RedshiftServerlessSource" RedshiftStorageProperty where
+  type PropertyType "RedshiftServerlessSource" RedshiftStorageProperty = RedshiftServerlessStorageProperty
+  set newValue RedshiftStorageProperty {..}
+    = RedshiftStorageProperty
+        {redshiftServerlessSource = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RedshiftStorageProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RedshiftStorageProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftStorageProperty :: Prelude.Type
+instance ToResourceProperties RedshiftStorageProperty
+instance Prelude.Eq RedshiftStorageProperty
+instance Prelude.Show RedshiftStorageProperty
+instance JSON.ToJSON RedshiftStorageProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs b/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.DataZone.DataSource.RelationalFilterConfigurationProperty (
+        module Exports, RelationalFilterConfigurationProperty(..),
+        mkRelationalFilterConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.DataSource.FilterExpressionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RelationalFilterConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-relationalfilterconfiguration.html>
+    RelationalFilterConfigurationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-relationalfilterconfiguration.html#cfn-datazone-datasource-relationalfilterconfiguration-databasename>
+                                           databaseName :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-relationalfilterconfiguration.html#cfn-datazone-datasource-relationalfilterconfiguration-filterexpressions>
+                                           filterExpressions :: (Prelude.Maybe [FilterExpressionProperty]),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-relationalfilterconfiguration.html#cfn-datazone-datasource-relationalfilterconfiguration-schemaname>
+                                           schemaName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRelationalFilterConfigurationProperty ::
+  Value Prelude.Text -> RelationalFilterConfigurationProperty
+mkRelationalFilterConfigurationProperty databaseName
+  = RelationalFilterConfigurationProperty
+      {haddock_workaround_ = (), databaseName = databaseName,
+       filterExpressions = Prelude.Nothing, schemaName = Prelude.Nothing}
+instance ToResourceProperties RelationalFilterConfigurationProperty where
+  toResourceProperties RelationalFilterConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.RelationalFilterConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DatabaseName" JSON..= databaseName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "FilterExpressions" Prelude.<$> filterExpressions,
+                               (JSON..=) "SchemaName" Prelude.<$> schemaName]))}
+instance JSON.ToJSON RelationalFilterConfigurationProperty where
+  toJSON RelationalFilterConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DatabaseName" JSON..= databaseName]
+              (Prelude.catMaybes
+                 [(JSON..=) "FilterExpressions" Prelude.<$> filterExpressions,
+                  (JSON..=) "SchemaName" Prelude.<$> schemaName])))
+instance Property "DatabaseName" RelationalFilterConfigurationProperty where
+  type PropertyType "DatabaseName" RelationalFilterConfigurationProperty = Value Prelude.Text
+  set newValue RelationalFilterConfigurationProperty {..}
+    = RelationalFilterConfigurationProperty
+        {databaseName = newValue, ..}
+instance Property "FilterExpressions" RelationalFilterConfigurationProperty where
+  type PropertyType "FilterExpressions" RelationalFilterConfigurationProperty = [FilterExpressionProperty]
+  set newValue RelationalFilterConfigurationProperty {..}
+    = RelationalFilterConfigurationProperty
+        {filterExpressions = Prelude.pure newValue, ..}
+instance Property "SchemaName" RelationalFilterConfigurationProperty where
+  type PropertyType "SchemaName" RelationalFilterConfigurationProperty = Value Prelude.Text
+  set newValue RelationalFilterConfigurationProperty {..}
+    = RelationalFilterConfigurationProperty
+        {schemaName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/RelationalFilterConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.RelationalFilterConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RelationalFilterConfigurationProperty :: Prelude.Type
+instance ToResourceProperties RelationalFilterConfigurationProperty
+instance Prelude.Eq RelationalFilterConfigurationProperty
+instance Prelude.Show RelationalFilterConfigurationProperty
+instance JSON.ToJSON RelationalFilterConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs b/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.DataZone.DataSource.SageMakerRunConfigurationInputProperty (
+        SageMakerRunConfigurationInputProperty(..),
+        mkSageMakerRunConfigurationInputProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+data SageMakerRunConfigurationInputProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-sagemakerrunconfigurationinput.html>
+    SageMakerRunConfigurationInputProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-sagemakerrunconfigurationinput.html#cfn-datazone-datasource-sagemakerrunconfigurationinput-trackingassets>
+                                            trackingAssets :: JSON.Object}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSageMakerRunConfigurationInputProperty ::
+  JSON.Object -> SageMakerRunConfigurationInputProperty
+mkSageMakerRunConfigurationInputProperty trackingAssets
+  = SageMakerRunConfigurationInputProperty
+      {haddock_workaround_ = (), trackingAssets = trackingAssets}
+instance ToResourceProperties SageMakerRunConfigurationInputProperty where
+  toResourceProperties SageMakerRunConfigurationInputProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.SageMakerRunConfigurationInput",
+         supportsTags = Prelude.False,
+         properties = ["TrackingAssets" JSON..= trackingAssets]}
+instance JSON.ToJSON SageMakerRunConfigurationInputProperty where
+  toJSON SageMakerRunConfigurationInputProperty {..}
+    = JSON.object ["TrackingAssets" JSON..= trackingAssets]
+instance Property "TrackingAssets" SageMakerRunConfigurationInputProperty where
+  type PropertyType "TrackingAssets" SageMakerRunConfigurationInputProperty = JSON.Object
+  set newValue SageMakerRunConfigurationInputProperty {..}
+    = SageMakerRunConfigurationInputProperty
+        {trackingAssets = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/SageMakerRunConfigurationInputProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.SageMakerRunConfigurationInputProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SageMakerRunConfigurationInputProperty :: Prelude.Type
+instance ToResourceProperties SageMakerRunConfigurationInputProperty
+instance Prelude.Eq SageMakerRunConfigurationInputProperty
+instance Prelude.Show SageMakerRunConfigurationInputProperty
+instance JSON.ToJSON SageMakerRunConfigurationInputProperty
diff --git a/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs b/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.DataZone.DataSource.ScheduleConfigurationProperty (
+        ScheduleConfigurationProperty(..), mkScheduleConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScheduleConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-scheduleconfiguration.html>
+    ScheduleConfigurationProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-scheduleconfiguration.html#cfn-datazone-datasource-scheduleconfiguration-schedule>
+                                   schedule :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-datasource-scheduleconfiguration.html#cfn-datazone-datasource-scheduleconfiguration-timezone>
+                                   timezone :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScheduleConfigurationProperty :: ScheduleConfigurationProperty
+mkScheduleConfigurationProperty
+  = ScheduleConfigurationProperty
+      {haddock_workaround_ = (), schedule = Prelude.Nothing,
+       timezone = Prelude.Nothing}
+instance ToResourceProperties ScheduleConfigurationProperty where
+  toResourceProperties ScheduleConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DataSource.ScheduleConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Schedule" Prelude.<$> schedule,
+                            (JSON..=) "Timezone" Prelude.<$> timezone])}
+instance JSON.ToJSON ScheduleConfigurationProperty where
+  toJSON ScheduleConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Schedule" Prelude.<$> schedule,
+               (JSON..=) "Timezone" Prelude.<$> timezone]))
+instance Property "Schedule" ScheduleConfigurationProperty where
+  type PropertyType "Schedule" ScheduleConfigurationProperty = Value Prelude.Text
+  set newValue ScheduleConfigurationProperty {..}
+    = ScheduleConfigurationProperty
+        {schedule = Prelude.pure newValue, ..}
+instance Property "Timezone" ScheduleConfigurationProperty where
+  type PropertyType "Timezone" ScheduleConfigurationProperty = Value Prelude.Text
+  set newValue ScheduleConfigurationProperty {..}
+    = ScheduleConfigurationProperty
+        {timezone = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DataSource/ScheduleConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.DataSource.ScheduleConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScheduleConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ScheduleConfigurationProperty
+instance Prelude.Eq ScheduleConfigurationProperty
+instance Prelude.Show ScheduleConfigurationProperty
+instance JSON.ToJSON ScheduleConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/Domain.hs b/gen/Stratosphere/DataZone/Domain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Domain.hs
@@ -0,0 +1,98 @@
+module Stratosphere.DataZone.Domain (
+        module Exports, Domain(..), mkDomain
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Domain.SingleSignOnProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Domain
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html>
+    Domain {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-description>
+            description :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-domainexecutionrole>
+            domainExecutionRole :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-domainversion>
+            domainVersion :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-kmskeyidentifier>
+            kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-name>
+            name :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-servicerole>
+            serviceRole :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-singlesignon>
+            singleSignOn :: (Prelude.Maybe SingleSignOnProperty),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domain.html#cfn-datazone-domain-tags>
+            tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomain :: Value Prelude.Text -> Value Prelude.Text -> Domain
+mkDomain domainExecutionRole name
+  = Domain
+      {haddock_workaround_ = (),
+       domainExecutionRole = domainExecutionRole, name = name,
+       description = Prelude.Nothing, domainVersion = Prelude.Nothing,
+       kmsKeyIdentifier = Prelude.Nothing, serviceRole = Prelude.Nothing,
+       singleSignOn = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Domain where
+  toResourceProperties Domain {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Domain", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainExecutionRole" JSON..= domainExecutionRole,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DomainVersion" Prelude.<$> domainVersion,
+                               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                               (JSON..=) "ServiceRole" Prelude.<$> serviceRole,
+                               (JSON..=) "SingleSignOn" Prelude.<$> singleSignOn,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Domain where
+  toJSON Domain {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainExecutionRole" JSON..= domainExecutionRole,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DomainVersion" Prelude.<$> domainVersion,
+                  (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                  (JSON..=) "ServiceRole" Prelude.<$> serviceRole,
+                  (JSON..=) "SingleSignOn" Prelude.<$> singleSignOn,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" Domain where
+  type PropertyType "Description" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {description = Prelude.pure newValue, ..}
+instance Property "DomainExecutionRole" Domain where
+  type PropertyType "DomainExecutionRole" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {domainExecutionRole = newValue, ..}
+instance Property "DomainVersion" Domain where
+  type PropertyType "DomainVersion" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {domainVersion = Prelude.pure newValue, ..}
+instance Property "KmsKeyIdentifier" Domain where
+  type PropertyType "KmsKeyIdentifier" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "Name" Domain where
+  type PropertyType "Name" Domain = Value Prelude.Text
+  set newValue Domain {..} = Domain {name = newValue, ..}
+instance Property "ServiceRole" Domain where
+  type PropertyType "ServiceRole" Domain = Value Prelude.Text
+  set newValue Domain {..}
+    = Domain {serviceRole = Prelude.pure newValue, ..}
+instance Property "SingleSignOn" Domain where
+  type PropertyType "SingleSignOn" Domain = SingleSignOnProperty
+  set newValue Domain {..}
+    = Domain {singleSignOn = 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/DataZone/Domain/SingleSignOnProperty.hs b/gen/Stratosphere/DataZone/Domain/SingleSignOnProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Domain/SingleSignOnProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.DataZone.Domain.SingleSignOnProperty (
+        SingleSignOnProperty(..), mkSingleSignOnProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SingleSignOnProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-domain-singlesignon.html>
+    SingleSignOnProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-domain-singlesignon.html#cfn-datazone-domain-singlesignon-idcinstancearn>
+                          idcInstanceArn :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-domain-singlesignon.html#cfn-datazone-domain-singlesignon-type>
+                          type' :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-domain-singlesignon.html#cfn-datazone-domain-singlesignon-userassignment>
+                          userAssignment :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSingleSignOnProperty :: SingleSignOnProperty
+mkSingleSignOnProperty
+  = SingleSignOnProperty
+      {haddock_workaround_ = (), idcInstanceArn = Prelude.Nothing,
+       type' = Prelude.Nothing, userAssignment = Prelude.Nothing}
+instance ToResourceProperties SingleSignOnProperty where
+  toResourceProperties SingleSignOnProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Domain.SingleSignOn",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IdcInstanceArn" Prelude.<$> idcInstanceArn,
+                            (JSON..=) "Type" Prelude.<$> type',
+                            (JSON..=) "UserAssignment" Prelude.<$> userAssignment])}
+instance JSON.ToJSON SingleSignOnProperty where
+  toJSON SingleSignOnProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IdcInstanceArn" Prelude.<$> idcInstanceArn,
+               (JSON..=) "Type" Prelude.<$> type',
+               (JSON..=) "UserAssignment" Prelude.<$> userAssignment]))
+instance Property "IdcInstanceArn" SingleSignOnProperty where
+  type PropertyType "IdcInstanceArn" SingleSignOnProperty = Value Prelude.Text
+  set newValue SingleSignOnProperty {..}
+    = SingleSignOnProperty {idcInstanceArn = Prelude.pure newValue, ..}
+instance Property "Type" SingleSignOnProperty where
+  type PropertyType "Type" SingleSignOnProperty = Value Prelude.Text
+  set newValue SingleSignOnProperty {..}
+    = SingleSignOnProperty {type' = Prelude.pure newValue, ..}
+instance Property "UserAssignment" SingleSignOnProperty where
+  type PropertyType "UserAssignment" SingleSignOnProperty = Value Prelude.Text
+  set newValue SingleSignOnProperty {..}
+    = SingleSignOnProperty {userAssignment = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Domain/SingleSignOnProperty.hs-boot b/gen/Stratosphere/DataZone/Domain/SingleSignOnProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Domain/SingleSignOnProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Domain.SingleSignOnProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SingleSignOnProperty :: Prelude.Type
+instance ToResourceProperties SingleSignOnProperty
+instance Prelude.Eq SingleSignOnProperty
+instance Prelude.Show SingleSignOnProperty
+instance JSON.ToJSON SingleSignOnProperty
diff --git a/gen/Stratosphere/DataZone/DomainUnit.hs b/gen/Stratosphere/DataZone/DomainUnit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/DomainUnit.hs
@@ -0,0 +1,64 @@
+module Stratosphere.DataZone.DomainUnit (
+        DomainUnit(..), mkDomainUnit
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainUnit
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domainunit.html>
+    DomainUnit {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domainunit.html#cfn-datazone-domainunit-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domainunit.html#cfn-datazone-domainunit-domainidentifier>
+                domainIdentifier :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domainunit.html#cfn-datazone-domainunit-name>
+                name :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-domainunit.html#cfn-datazone-domainunit-parentdomainunitidentifier>
+                parentDomainUnitIdentifier :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainUnit ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> DomainUnit
+mkDomainUnit domainIdentifier name parentDomainUnitIdentifier
+  = DomainUnit
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       name = name,
+       parentDomainUnitIdentifier = parentDomainUnitIdentifier,
+       description = Prelude.Nothing}
+instance ToResourceProperties DomainUnit where
+  toResourceProperties DomainUnit {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::DomainUnit",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+                            "ParentDomainUnitIdentifier" JSON..= parentDomainUnitIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON DomainUnit where
+  toJSON DomainUnit {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+               "ParentDomainUnitIdentifier" JSON..= parentDomainUnitIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "Description" DomainUnit where
+  type PropertyType "Description" DomainUnit = Value Prelude.Text
+  set newValue DomainUnit {..}
+    = DomainUnit {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" DomainUnit where
+  type PropertyType "DomainIdentifier" DomainUnit = Value Prelude.Text
+  set newValue DomainUnit {..}
+    = DomainUnit {domainIdentifier = newValue, ..}
+instance Property "Name" DomainUnit where
+  type PropertyType "Name" DomainUnit = Value Prelude.Text
+  set newValue DomainUnit {..} = DomainUnit {name = newValue, ..}
+instance Property "ParentDomainUnitIdentifier" DomainUnit where
+  type PropertyType "ParentDomainUnitIdentifier" DomainUnit = Value Prelude.Text
+  set newValue DomainUnit {..}
+    = DomainUnit {parentDomainUnitIdentifier = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Environment.hs b/gen/Stratosphere/DataZone/Environment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Environment.hs
@@ -0,0 +1,126 @@
+module Stratosphere.DataZone.Environment (
+        module Exports, Environment(..), mkEnvironment
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Environment.EnvironmentParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Environment
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html>
+    Environment {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-domainidentifier>
+                 domainIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-environmentaccountidentifier>
+                 environmentAccountIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-environmentaccountregion>
+                 environmentAccountRegion :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-environmentprofileidentifier>
+                 environmentProfileIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-environmentrolearn>
+                 environmentRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-glossaryterms>
+                 glossaryTerms :: (Prelude.Maybe (ValueList Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-projectidentifier>
+                 projectIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environment.html#cfn-datazone-environment-userparameters>
+                 userParameters :: (Prelude.Maybe [EnvironmentParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironment ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> Environment
+mkEnvironment domainIdentifier name projectIdentifier
+  = Environment
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       name = name, projectIdentifier = projectIdentifier,
+       description = Prelude.Nothing,
+       environmentAccountIdentifier = Prelude.Nothing,
+       environmentAccountRegion = Prelude.Nothing,
+       environmentProfileIdentifier = Prelude.Nothing,
+       environmentRoleArn = Prelude.Nothing,
+       glossaryTerms = Prelude.Nothing, userParameters = Prelude.Nothing}
+instance ToResourceProperties Environment where
+  toResourceProperties Environment {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Environment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+                            "ProjectIdentifier" JSON..= projectIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnvironmentAccountIdentifier"
+                                 Prelude.<$> environmentAccountIdentifier,
+                               (JSON..=) "EnvironmentAccountRegion"
+                                 Prelude.<$> environmentAccountRegion,
+                               (JSON..=) "EnvironmentProfileIdentifier"
+                                 Prelude.<$> environmentProfileIdentifier,
+                               (JSON..=) "EnvironmentRoleArn" Prelude.<$> environmentRoleArn,
+                               (JSON..=) "GlossaryTerms" Prelude.<$> glossaryTerms,
+                               (JSON..=) "UserParameters" Prelude.<$> userParameters]))}
+instance JSON.ToJSON Environment where
+  toJSON Environment {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name,
+               "ProjectIdentifier" JSON..= projectIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnvironmentAccountIdentifier"
+                    Prelude.<$> environmentAccountIdentifier,
+                  (JSON..=) "EnvironmentAccountRegion"
+                    Prelude.<$> environmentAccountRegion,
+                  (JSON..=) "EnvironmentProfileIdentifier"
+                    Prelude.<$> environmentProfileIdentifier,
+                  (JSON..=) "EnvironmentRoleArn" Prelude.<$> environmentRoleArn,
+                  (JSON..=) "GlossaryTerms" Prelude.<$> glossaryTerms,
+                  (JSON..=) "UserParameters" Prelude.<$> userParameters])))
+instance Property "Description" Environment where
+  type PropertyType "Description" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" Environment where
+  type PropertyType "DomainIdentifier" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {domainIdentifier = newValue, ..}
+instance Property "EnvironmentAccountIdentifier" Environment where
+  type PropertyType "EnvironmentAccountIdentifier" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment
+        {environmentAccountIdentifier = Prelude.pure newValue, ..}
+instance Property "EnvironmentAccountRegion" Environment where
+  type PropertyType "EnvironmentAccountRegion" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment
+        {environmentAccountRegion = Prelude.pure newValue, ..}
+instance Property "EnvironmentProfileIdentifier" Environment where
+  type PropertyType "EnvironmentProfileIdentifier" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment
+        {environmentProfileIdentifier = Prelude.pure newValue, ..}
+instance Property "EnvironmentRoleArn" Environment where
+  type PropertyType "EnvironmentRoleArn" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {environmentRoleArn = Prelude.pure newValue, ..}
+instance Property "GlossaryTerms" Environment where
+  type PropertyType "GlossaryTerms" Environment = ValueList Prelude.Text
+  set newValue Environment {..}
+    = Environment {glossaryTerms = Prelude.pure newValue, ..}
+instance Property "Name" Environment where
+  type PropertyType "Name" Environment = Value Prelude.Text
+  set newValue Environment {..} = Environment {name = newValue, ..}
+instance Property "ProjectIdentifier" Environment where
+  type PropertyType "ProjectIdentifier" Environment = Value Prelude.Text
+  set newValue Environment {..}
+    = Environment {projectIdentifier = newValue, ..}
+instance Property "UserParameters" Environment where
+  type PropertyType "UserParameters" Environment = [EnvironmentParameterProperty]
+  set newValue Environment {..}
+    = Environment {userParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs b/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.DataZone.Environment.EnvironmentParameterProperty (
+        EnvironmentParameterProperty(..), mkEnvironmentParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environment-environmentparameter.html>
+    EnvironmentParameterProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environment-environmentparameter.html#cfn-datazone-environment-environmentparameter-name>
+                                  name :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environment-environmentparameter.html#cfn-datazone-environment-environmentparameter-value>
+                                  value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentParameterProperty :: EnvironmentParameterProperty
+mkEnvironmentParameterProperty
+  = EnvironmentParameterProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties EnvironmentParameterProperty where
+  toResourceProperties EnvironmentParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Environment.EnvironmentParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON EnvironmentParameterProperty where
+  toJSON EnvironmentParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" EnvironmentParameterProperty where
+  type PropertyType "Name" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {name = Prelude.pure newValue, ..}
+instance Property "Value" EnvironmentParameterProperty where
+  type PropertyType "Value" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs-boot b/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Environment/EnvironmentParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Environment.EnvironmentParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentParameterProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentParameterProperty
+instance Prelude.Eq EnvironmentParameterProperty
+instance Prelude.Show EnvironmentParameterProperty
+instance JSON.ToJSON EnvironmentParameterProperty
diff --git a/gen/Stratosphere/DataZone/EnvironmentActions.hs b/gen/Stratosphere/DataZone/EnvironmentActions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentActions.hs
@@ -0,0 +1,85 @@
+module Stratosphere.DataZone.EnvironmentActions (
+        module Exports, EnvironmentActions(..), mkEnvironmentActions
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.EnvironmentActions.AwsConsoleLinkParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentActions
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html>
+    EnvironmentActions {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-domainidentifier>
+                        domainIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-environmentidentifier>
+                        environmentIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-identifier>
+                        identifier :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentactions.html#cfn-datazone-environmentactions-parameters>
+                        parameters :: (Prelude.Maybe AwsConsoleLinkParametersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentActions :: Value Prelude.Text -> EnvironmentActions
+mkEnvironmentActions name
+  = EnvironmentActions
+      {haddock_workaround_ = (), name = name,
+       description = Prelude.Nothing, domainIdentifier = Prelude.Nothing,
+       environmentIdentifier = Prelude.Nothing,
+       identifier = Prelude.Nothing, parameters = Prelude.Nothing}
+instance ToResourceProperties EnvironmentActions where
+  toResourceProperties EnvironmentActions {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentActions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DomainIdentifier" Prelude.<$> domainIdentifier,
+                               (JSON..=) "EnvironmentIdentifier"
+                                 Prelude.<$> environmentIdentifier,
+                               (JSON..=) "Identifier" Prelude.<$> identifier,
+                               (JSON..=) "Parameters" Prelude.<$> parameters]))}
+instance JSON.ToJSON EnvironmentActions where
+  toJSON EnvironmentActions {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DomainIdentifier" Prelude.<$> domainIdentifier,
+                  (JSON..=) "EnvironmentIdentifier"
+                    Prelude.<$> environmentIdentifier,
+                  (JSON..=) "Identifier" Prelude.<$> identifier,
+                  (JSON..=) "Parameters" Prelude.<$> parameters])))
+instance Property "Description" EnvironmentActions where
+  type PropertyType "Description" EnvironmentActions = Value Prelude.Text
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" EnvironmentActions where
+  type PropertyType "DomainIdentifier" EnvironmentActions = Value Prelude.Text
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions {domainIdentifier = Prelude.pure newValue, ..}
+instance Property "EnvironmentIdentifier" EnvironmentActions where
+  type PropertyType "EnvironmentIdentifier" EnvironmentActions = Value Prelude.Text
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions
+        {environmentIdentifier = Prelude.pure newValue, ..}
+instance Property "Identifier" EnvironmentActions where
+  type PropertyType "Identifier" EnvironmentActions = Value Prelude.Text
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions {identifier = Prelude.pure newValue, ..}
+instance Property "Name" EnvironmentActions where
+  type PropertyType "Name" EnvironmentActions = Value Prelude.Text
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions {name = newValue, ..}
+instance Property "Parameters" EnvironmentActions where
+  type PropertyType "Parameters" EnvironmentActions = AwsConsoleLinkParametersProperty
+  set newValue EnvironmentActions {..}
+    = EnvironmentActions {parameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs b/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.DataZone.EnvironmentActions.AwsConsoleLinkParametersProperty (
+        AwsConsoleLinkParametersProperty(..),
+        mkAwsConsoleLinkParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AwsConsoleLinkParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentactions-awsconsolelinkparameters.html>
+    AwsConsoleLinkParametersProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentactions-awsconsolelinkparameters.html#cfn-datazone-environmentactions-awsconsolelinkparameters-uri>
+                                      uri :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAwsConsoleLinkParametersProperty ::
+  AwsConsoleLinkParametersProperty
+mkAwsConsoleLinkParametersProperty
+  = AwsConsoleLinkParametersProperty
+      {haddock_workaround_ = (), uri = Prelude.Nothing}
+instance ToResourceProperties AwsConsoleLinkParametersProperty where
+  toResourceProperties AwsConsoleLinkParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentActions.AwsConsoleLinkParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Uri" Prelude.<$> uri])}
+instance JSON.ToJSON AwsConsoleLinkParametersProperty where
+  toJSON AwsConsoleLinkParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Uri" Prelude.<$> uri]))
+instance Property "Uri" AwsConsoleLinkParametersProperty where
+  type PropertyType "Uri" AwsConsoleLinkParametersProperty = Value Prelude.Text
+  set newValue AwsConsoleLinkParametersProperty {..}
+    = AwsConsoleLinkParametersProperty
+        {uri = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs-boot b/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentActions/AwsConsoleLinkParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.EnvironmentActions.AwsConsoleLinkParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AwsConsoleLinkParametersProperty :: Prelude.Type
+instance ToResourceProperties AwsConsoleLinkParametersProperty
+instance Prelude.Eq AwsConsoleLinkParametersProperty
+instance Prelude.Show AwsConsoleLinkParametersProperty
+instance JSON.ToJSON AwsConsoleLinkParametersProperty
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration.hs b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration.hs
@@ -0,0 +1,123 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration (
+        module Exports, EnvironmentBlueprintConfiguration(..),
+        mkEnvironmentBlueprintConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.EnvironmentBlueprintConfiguration.ProvisioningConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.EnvironmentBlueprintConfiguration.RegionalParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentBlueprintConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html>
+    EnvironmentBlueprintConfiguration {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-domainidentifier>
+                                       domainIdentifier :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-enabledregions>
+                                       enabledRegions :: (ValueList Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-environmentblueprintidentifier>
+                                       environmentBlueprintIdentifier :: (Value Prelude.Text),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-environmentrolepermissionboundary>
+                                       environmentRolePermissionBoundary :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-manageaccessrolearn>
+                                       manageAccessRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-provisioningconfigurations>
+                                       provisioningConfigurations :: (Prelude.Maybe [ProvisioningConfigurationProperty]),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-provisioningrolearn>
+                                       provisioningRoleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentblueprintconfiguration.html#cfn-datazone-environmentblueprintconfiguration-regionalparameters>
+                                       regionalParameters :: (Prelude.Maybe [RegionalParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentBlueprintConfiguration ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text
+     -> Value Prelude.Text -> EnvironmentBlueprintConfiguration
+mkEnvironmentBlueprintConfiguration
+  domainIdentifier
+  enabledRegions
+  environmentBlueprintIdentifier
+  = EnvironmentBlueprintConfiguration
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       enabledRegions = enabledRegions,
+       environmentBlueprintIdentifier = environmentBlueprintIdentifier,
+       environmentRolePermissionBoundary = Prelude.Nothing,
+       manageAccessRoleArn = Prelude.Nothing,
+       provisioningConfigurations = Prelude.Nothing,
+       provisioningRoleArn = Prelude.Nothing,
+       regionalParameters = Prelude.Nothing}
+instance ToResourceProperties EnvironmentBlueprintConfiguration where
+  toResourceProperties EnvironmentBlueprintConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentBlueprintConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier,
+                            "EnabledRegions" JSON..= enabledRegions,
+                            "EnvironmentBlueprintIdentifier"
+                              JSON..= environmentBlueprintIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EnvironmentRolePermissionBoundary"
+                                 Prelude.<$> environmentRolePermissionBoundary,
+                               (JSON..=) "ManageAccessRoleArn" Prelude.<$> manageAccessRoleArn,
+                               (JSON..=) "ProvisioningConfigurations"
+                                 Prelude.<$> provisioningConfigurations,
+                               (JSON..=) "ProvisioningRoleArn" Prelude.<$> provisioningRoleArn,
+                               (JSON..=) "RegionalParameters" Prelude.<$> regionalParameters]))}
+instance JSON.ToJSON EnvironmentBlueprintConfiguration where
+  toJSON EnvironmentBlueprintConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier,
+               "EnabledRegions" JSON..= enabledRegions,
+               "EnvironmentBlueprintIdentifier"
+                 JSON..= environmentBlueprintIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "EnvironmentRolePermissionBoundary"
+                    Prelude.<$> environmentRolePermissionBoundary,
+                  (JSON..=) "ManageAccessRoleArn" Prelude.<$> manageAccessRoleArn,
+                  (JSON..=) "ProvisioningConfigurations"
+                    Prelude.<$> provisioningConfigurations,
+                  (JSON..=) "ProvisioningRoleArn" Prelude.<$> provisioningRoleArn,
+                  (JSON..=) "RegionalParameters" Prelude.<$> regionalParameters])))
+instance Property "DomainIdentifier" EnvironmentBlueprintConfiguration where
+  type PropertyType "DomainIdentifier" EnvironmentBlueprintConfiguration = Value Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {domainIdentifier = newValue, ..}
+instance Property "EnabledRegions" EnvironmentBlueprintConfiguration where
+  type PropertyType "EnabledRegions" EnvironmentBlueprintConfiguration = ValueList Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration {enabledRegions = newValue, ..}
+instance Property "EnvironmentBlueprintIdentifier" EnvironmentBlueprintConfiguration where
+  type PropertyType "EnvironmentBlueprintIdentifier" EnvironmentBlueprintConfiguration = Value Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {environmentBlueprintIdentifier = newValue, ..}
+instance Property "EnvironmentRolePermissionBoundary" EnvironmentBlueprintConfiguration where
+  type PropertyType "EnvironmentRolePermissionBoundary" EnvironmentBlueprintConfiguration = Value Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {environmentRolePermissionBoundary = Prelude.pure newValue, ..}
+instance Property "ManageAccessRoleArn" EnvironmentBlueprintConfiguration where
+  type PropertyType "ManageAccessRoleArn" EnvironmentBlueprintConfiguration = Value Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {manageAccessRoleArn = Prelude.pure newValue, ..}
+instance Property "ProvisioningConfigurations" EnvironmentBlueprintConfiguration where
+  type PropertyType "ProvisioningConfigurations" EnvironmentBlueprintConfiguration = [ProvisioningConfigurationProperty]
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {provisioningConfigurations = Prelude.pure newValue, ..}
+instance Property "ProvisioningRoleArn" EnvironmentBlueprintConfiguration where
+  type PropertyType "ProvisioningRoleArn" EnvironmentBlueprintConfiguration = Value Prelude.Text
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {provisioningRoleArn = Prelude.pure newValue, ..}
+instance Property "RegionalParameters" EnvironmentBlueprintConfiguration where
+  type PropertyType "RegionalParameters" EnvironmentBlueprintConfiguration = [RegionalParameterProperty]
+  set newValue EnvironmentBlueprintConfiguration {..}
+    = EnvironmentBlueprintConfiguration
+        {regionalParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.LakeFormationConfigurationProperty (
+        LakeFormationConfigurationProperty(..),
+        mkLakeFormationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LakeFormationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-lakeformationconfiguration.html>
+    LakeFormationConfigurationProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-lakeformationconfiguration.html#cfn-datazone-environmentblueprintconfiguration-lakeformationconfiguration-locationregistrationexcludes3locations>
+                                        locationRegistrationExcludeS3Locations :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-lakeformationconfiguration.html#cfn-datazone-environmentblueprintconfiguration-lakeformationconfiguration-locationregistrationrole>
+                                        locationRegistrationRole :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLakeFormationConfigurationProperty ::
+  LakeFormationConfigurationProperty
+mkLakeFormationConfigurationProperty
+  = LakeFormationConfigurationProperty
+      {haddock_workaround_ = (),
+       locationRegistrationExcludeS3Locations = Prelude.Nothing,
+       locationRegistrationRole = Prelude.Nothing}
+instance ToResourceProperties LakeFormationConfigurationProperty where
+  toResourceProperties LakeFormationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentBlueprintConfiguration.LakeFormationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "LocationRegistrationExcludeS3Locations"
+                              Prelude.<$> locationRegistrationExcludeS3Locations,
+                            (JSON..=) "LocationRegistrationRole"
+                              Prelude.<$> locationRegistrationRole])}
+instance JSON.ToJSON LakeFormationConfigurationProperty where
+  toJSON LakeFormationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "LocationRegistrationExcludeS3Locations"
+                 Prelude.<$> locationRegistrationExcludeS3Locations,
+               (JSON..=) "LocationRegistrationRole"
+                 Prelude.<$> locationRegistrationRole]))
+instance Property "LocationRegistrationExcludeS3Locations" LakeFormationConfigurationProperty where
+  type PropertyType "LocationRegistrationExcludeS3Locations" LakeFormationConfigurationProperty = ValueList Prelude.Text
+  set newValue LakeFormationConfigurationProperty {..}
+    = LakeFormationConfigurationProperty
+        {locationRegistrationExcludeS3Locations = Prelude.pure newValue,
+         ..}
+instance Property "LocationRegistrationRole" LakeFormationConfigurationProperty where
+  type PropertyType "LocationRegistrationRole" LakeFormationConfigurationProperty = Value Prelude.Text
+  set newValue LakeFormationConfigurationProperty {..}
+    = LakeFormationConfigurationProperty
+        {locationRegistrationRole = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/LakeFormationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.LakeFormationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LakeFormationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties LakeFormationConfigurationProperty
+instance Prelude.Eq LakeFormationConfigurationProperty
+instance Prelude.Show LakeFormationConfigurationProperty
+instance JSON.ToJSON LakeFormationConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.ProvisioningConfigurationProperty (
+        module Exports, ProvisioningConfigurationProperty(..),
+        mkProvisioningConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.EnvironmentBlueprintConfiguration.LakeFormationConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data ProvisioningConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-provisioningconfiguration.html>
+    ProvisioningConfigurationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-provisioningconfiguration.html#cfn-datazone-environmentblueprintconfiguration-provisioningconfiguration-lakeformationconfiguration>
+                                       lakeFormationConfiguration :: LakeFormationConfigurationProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProvisioningConfigurationProperty ::
+  LakeFormationConfigurationProperty
+  -> ProvisioningConfigurationProperty
+mkProvisioningConfigurationProperty lakeFormationConfiguration
+  = ProvisioningConfigurationProperty
+      {haddock_workaround_ = (),
+       lakeFormationConfiguration = lakeFormationConfiguration}
+instance ToResourceProperties ProvisioningConfigurationProperty where
+  toResourceProperties ProvisioningConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentBlueprintConfiguration.ProvisioningConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["LakeFormationConfiguration"
+                         JSON..= lakeFormationConfiguration]}
+instance JSON.ToJSON ProvisioningConfigurationProperty where
+  toJSON ProvisioningConfigurationProperty {..}
+    = JSON.object
+        ["LakeFormationConfiguration" JSON..= lakeFormationConfiguration]
+instance Property "LakeFormationConfiguration" ProvisioningConfigurationProperty where
+  type PropertyType "LakeFormationConfiguration" ProvisioningConfigurationProperty = LakeFormationConfigurationProperty
+  set newValue ProvisioningConfigurationProperty {..}
+    = ProvisioningConfigurationProperty
+        {lakeFormationConfiguration = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/ProvisioningConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.ProvisioningConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProvisioningConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ProvisioningConfigurationProperty
+instance Prelude.Eq ProvisioningConfigurationProperty
+instance Prelude.Show ProvisioningConfigurationProperty
+instance JSON.ToJSON ProvisioningConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.RegionalParameterProperty (
+        RegionalParameterProperty(..), mkRegionalParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RegionalParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-regionalparameter.html>
+    RegionalParameterProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-regionalparameter.html#cfn-datazone-environmentblueprintconfiguration-regionalparameter-parameters>
+                               parameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentblueprintconfiguration-regionalparameter.html#cfn-datazone-environmentblueprintconfiguration-regionalparameter-region>
+                               region :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegionalParameterProperty :: RegionalParameterProperty
+mkRegionalParameterProperty
+  = RegionalParameterProperty
+      {haddock_workaround_ = (), parameters = Prelude.Nothing,
+       region = Prelude.Nothing}
+instance ToResourceProperties RegionalParameterProperty where
+  toResourceProperties RegionalParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentBlueprintConfiguration.RegionalParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Parameters" Prelude.<$> parameters,
+                            (JSON..=) "Region" Prelude.<$> region])}
+instance JSON.ToJSON RegionalParameterProperty where
+  toJSON RegionalParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Parameters" Prelude.<$> parameters,
+               (JSON..=) "Region" Prelude.<$> region]))
+instance Property "Parameters" RegionalParameterProperty where
+  type PropertyType "Parameters" RegionalParameterProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue RegionalParameterProperty {..}
+    = RegionalParameterProperty
+        {parameters = Prelude.pure newValue, ..}
+instance Property "Region" RegionalParameterProperty where
+  type PropertyType "Region" RegionalParameterProperty = Value Prelude.Text
+  set newValue RegionalParameterProperty {..}
+    = RegionalParameterProperty {region = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs-boot b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentBlueprintConfiguration/RegionalParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.EnvironmentBlueprintConfiguration.RegionalParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RegionalParameterProperty :: Prelude.Type
+instance ToResourceProperties RegionalParameterProperty
+instance Prelude.Eq RegionalParameterProperty
+instance Prelude.Show RegionalParameterProperty
+instance JSON.ToJSON RegionalParameterProperty
diff --git a/gen/Stratosphere/DataZone/EnvironmentProfile.hs b/gen/Stratosphere/DataZone/EnvironmentProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentProfile.hs
@@ -0,0 +1,112 @@
+module Stratosphere.DataZone.EnvironmentProfile (
+        module Exports, EnvironmentProfile(..), mkEnvironmentProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.EnvironmentProfile.EnvironmentParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html>
+    EnvironmentProfile {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-awsaccountid>
+                        awsAccountId :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-awsaccountregion>
+                        awsAccountRegion :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-domainidentifier>
+                        domainIdentifier :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-environmentblueprintidentifier>
+                        environmentBlueprintIdentifier :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-projectidentifier>
+                        projectIdentifier :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-environmentprofile.html#cfn-datazone-environmentprofile-userparameters>
+                        userParameters :: (Prelude.Maybe [EnvironmentParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentProfile ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text
+           -> Value Prelude.Text -> Value Prelude.Text -> EnvironmentProfile
+mkEnvironmentProfile
+  awsAccountId
+  awsAccountRegion
+  domainIdentifier
+  environmentBlueprintIdentifier
+  name
+  projectIdentifier
+  = EnvironmentProfile
+      {haddock_workaround_ = (), awsAccountId = awsAccountId,
+       awsAccountRegion = awsAccountRegion,
+       domainIdentifier = domainIdentifier,
+       environmentBlueprintIdentifier = environmentBlueprintIdentifier,
+       name = name, projectIdentifier = projectIdentifier,
+       description = Prelude.Nothing, userParameters = Prelude.Nothing}
+instance ToResourceProperties EnvironmentProfile where
+  toResourceProperties EnvironmentProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentProfile",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AwsAccountId" JSON..= awsAccountId,
+                            "AwsAccountRegion" JSON..= awsAccountRegion,
+                            "DomainIdentifier" JSON..= domainIdentifier,
+                            "EnvironmentBlueprintIdentifier"
+                              JSON..= environmentBlueprintIdentifier,
+                            "Name" JSON..= name, "ProjectIdentifier" JSON..= projectIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "UserParameters" Prelude.<$> userParameters]))}
+instance JSON.ToJSON EnvironmentProfile where
+  toJSON EnvironmentProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AwsAccountId" JSON..= awsAccountId,
+               "AwsAccountRegion" JSON..= awsAccountRegion,
+               "DomainIdentifier" JSON..= domainIdentifier,
+               "EnvironmentBlueprintIdentifier"
+                 JSON..= environmentBlueprintIdentifier,
+               "Name" JSON..= name, "ProjectIdentifier" JSON..= projectIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "UserParameters" Prelude.<$> userParameters])))
+instance Property "AwsAccountId" EnvironmentProfile where
+  type PropertyType "AwsAccountId" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {awsAccountId = newValue, ..}
+instance Property "AwsAccountRegion" EnvironmentProfile where
+  type PropertyType "AwsAccountRegion" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {awsAccountRegion = newValue, ..}
+instance Property "Description" EnvironmentProfile where
+  type PropertyType "Description" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" EnvironmentProfile where
+  type PropertyType "DomainIdentifier" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {domainIdentifier = newValue, ..}
+instance Property "EnvironmentBlueprintIdentifier" EnvironmentProfile where
+  type PropertyType "EnvironmentBlueprintIdentifier" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile
+        {environmentBlueprintIdentifier = newValue, ..}
+instance Property "Name" EnvironmentProfile where
+  type PropertyType "Name" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {name = newValue, ..}
+instance Property "ProjectIdentifier" EnvironmentProfile where
+  type PropertyType "ProjectIdentifier" EnvironmentProfile = Value Prelude.Text
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {projectIdentifier = newValue, ..}
+instance Property "UserParameters" EnvironmentProfile where
+  type PropertyType "UserParameters" EnvironmentProfile = [EnvironmentParameterProperty]
+  set newValue EnvironmentProfile {..}
+    = EnvironmentProfile {userParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs b/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.DataZone.EnvironmentProfile.EnvironmentParameterProperty (
+        EnvironmentParameterProperty(..), mkEnvironmentParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentprofile-environmentparameter.html>
+    EnvironmentParameterProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentprofile-environmentparameter.html#cfn-datazone-environmentprofile-environmentparameter-name>
+                                  name :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-environmentprofile-environmentparameter.html#cfn-datazone-environmentprofile-environmentparameter-value>
+                                  value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentParameterProperty :: EnvironmentParameterProperty
+mkEnvironmentParameterProperty
+  = EnvironmentParameterProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties EnvironmentParameterProperty where
+  toResourceProperties EnvironmentParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::EnvironmentProfile.EnvironmentParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON EnvironmentParameterProperty where
+  toJSON EnvironmentParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" EnvironmentParameterProperty where
+  type PropertyType "Name" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {name = Prelude.pure newValue, ..}
+instance Property "Value" EnvironmentParameterProperty where
+  type PropertyType "Value" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs-boot b/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/EnvironmentProfile/EnvironmentParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.EnvironmentProfile.EnvironmentParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentParameterProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentParameterProperty
+instance Prelude.Eq EnvironmentParameterProperty
+instance Prelude.Show EnvironmentParameterProperty
+instance JSON.ToJSON EnvironmentParameterProperty
diff --git a/gen/Stratosphere/DataZone/FormType.hs b/gen/Stratosphere/DataZone/FormType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/FormType.hs
@@ -0,0 +1,80 @@
+module Stratosphere.DataZone.FormType (
+        module Exports, FormType(..), mkFormType
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.FormType.ModelProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormType
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html>
+    FormType {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-description>
+              description :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-domainidentifier>
+              domainIdentifier :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-model>
+              model :: ModelProperty,
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-name>
+              name :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-owningprojectidentifier>
+              owningProjectIdentifier :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-formtype.html#cfn-datazone-formtype-status>
+              status :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormType ::
+  Value Prelude.Text
+  -> ModelProperty
+     -> Value Prelude.Text -> Value Prelude.Text -> FormType
+mkFormType domainIdentifier model name owningProjectIdentifier
+  = FormType
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       model = model, name = name,
+       owningProjectIdentifier = owningProjectIdentifier,
+       description = Prelude.Nothing, status = Prelude.Nothing}
+instance ToResourceProperties FormType where
+  toResourceProperties FormType {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::FormType", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier,
+                            "Model" JSON..= model, "Name" JSON..= name,
+                            "OwningProjectIdentifier" JSON..= owningProjectIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Status" Prelude.<$> status]))}
+instance JSON.ToJSON FormType where
+  toJSON FormType {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier,
+               "Model" JSON..= model, "Name" JSON..= name,
+               "OwningProjectIdentifier" JSON..= owningProjectIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Status" Prelude.<$> status])))
+instance Property "Description" FormType where
+  type PropertyType "Description" FormType = Value Prelude.Text
+  set newValue FormType {..}
+    = FormType {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" FormType where
+  type PropertyType "DomainIdentifier" FormType = Value Prelude.Text
+  set newValue FormType {..}
+    = FormType {domainIdentifier = newValue, ..}
+instance Property "Model" FormType where
+  type PropertyType "Model" FormType = ModelProperty
+  set newValue FormType {..} = FormType {model = newValue, ..}
+instance Property "Name" FormType where
+  type PropertyType "Name" FormType = Value Prelude.Text
+  set newValue FormType {..} = FormType {name = newValue, ..}
+instance Property "OwningProjectIdentifier" FormType where
+  type PropertyType "OwningProjectIdentifier" FormType = Value Prelude.Text
+  set newValue FormType {..}
+    = FormType {owningProjectIdentifier = newValue, ..}
+instance Property "Status" FormType where
+  type PropertyType "Status" FormType = Value Prelude.Text
+  set newValue FormType {..}
+    = FormType {status = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/FormType/ModelProperty.hs b/gen/Stratosphere/DataZone/FormType/ModelProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/FormType/ModelProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.DataZone.FormType.ModelProperty (
+        ModelProperty(..), mkModelProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ModelProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-formtype-model.html>
+    ModelProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-formtype-model.html#cfn-datazone-formtype-model-smithy>
+                   smithy :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkModelProperty :: ModelProperty
+mkModelProperty
+  = ModelProperty
+      {haddock_workaround_ = (), smithy = Prelude.Nothing}
+instance ToResourceProperties ModelProperty where
+  toResourceProperties ModelProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::FormType.Model",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Smithy" Prelude.<$> smithy])}
+instance JSON.ToJSON ModelProperty where
+  toJSON ModelProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Smithy" Prelude.<$> smithy]))
+instance Property "Smithy" ModelProperty where
+  type PropertyType "Smithy" ModelProperty = Value Prelude.Text
+  set newValue ModelProperty {..}
+    = ModelProperty {smithy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/FormType/ModelProperty.hs-boot b/gen/Stratosphere/DataZone/FormType/ModelProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/FormType/ModelProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.FormType.ModelProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ModelProperty :: Prelude.Type
+instance ToResourceProperties ModelProperty
+instance Prelude.Eq ModelProperty
+instance Prelude.Show ModelProperty
+instance JSON.ToJSON ModelProperty
diff --git a/gen/Stratosphere/DataZone/GroupProfile.hs b/gen/Stratosphere/DataZone/GroupProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/GroupProfile.hs
@@ -0,0 +1,54 @@
+module Stratosphere.DataZone.GroupProfile (
+        GroupProfile(..), mkGroupProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GroupProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-groupprofile.html>
+    GroupProfile {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-groupprofile.html#cfn-datazone-groupprofile-domainidentifier>
+                  domainIdentifier :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-groupprofile.html#cfn-datazone-groupprofile-groupidentifier>
+                  groupIdentifier :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-groupprofile.html#cfn-datazone-groupprofile-status>
+                  status :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGroupProfile ::
+  Value Prelude.Text -> Value Prelude.Text -> GroupProfile
+mkGroupProfile domainIdentifier groupIdentifier
+  = GroupProfile
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       groupIdentifier = groupIdentifier, status = Prelude.Nothing}
+instance ToResourceProperties GroupProfile where
+  toResourceProperties GroupProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::GroupProfile",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier,
+                            "GroupIdentifier" JSON..= groupIdentifier]
+                           (Prelude.catMaybes [(JSON..=) "Status" Prelude.<$> status]))}
+instance JSON.ToJSON GroupProfile where
+  toJSON GroupProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier,
+               "GroupIdentifier" JSON..= groupIdentifier]
+              (Prelude.catMaybes [(JSON..=) "Status" Prelude.<$> status])))
+instance Property "DomainIdentifier" GroupProfile where
+  type PropertyType "DomainIdentifier" GroupProfile = Value Prelude.Text
+  set newValue GroupProfile {..}
+    = GroupProfile {domainIdentifier = newValue, ..}
+instance Property "GroupIdentifier" GroupProfile where
+  type PropertyType "GroupIdentifier" GroupProfile = Value Prelude.Text
+  set newValue GroupProfile {..}
+    = GroupProfile {groupIdentifier = newValue, ..}
+instance Property "Status" GroupProfile where
+  type PropertyType "Status" GroupProfile = Value Prelude.Text
+  set newValue GroupProfile {..}
+    = GroupProfile {status = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Owner.hs b/gen/Stratosphere/DataZone/Owner.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner.hs
@@ -0,0 +1,55 @@
+module Stratosphere.DataZone.Owner (
+        module Exports, Owner(..), mkOwner
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Owner.OwnerPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Owner
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-owner.html>
+    Owner {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-owner.html#cfn-datazone-owner-domainidentifier>
+           domainIdentifier :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-owner.html#cfn-datazone-owner-entityidentifier>
+           entityIdentifier :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-owner.html#cfn-datazone-owner-entitytype>
+           entityType :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-owner.html#cfn-datazone-owner-owner>
+           owner :: OwnerPropertiesProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOwner ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> OwnerPropertiesProperty -> Owner
+mkOwner domainIdentifier entityIdentifier entityType owner
+  = Owner
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       entityIdentifier = entityIdentifier, entityType = entityType,
+       owner = owner}
+instance ToResourceProperties Owner where
+  toResourceProperties Owner {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Owner", supportsTags = Prelude.False,
+         properties = ["DomainIdentifier" JSON..= domainIdentifier,
+                       "EntityIdentifier" JSON..= entityIdentifier,
+                       "EntityType" JSON..= entityType, "Owner" JSON..= owner]}
+instance JSON.ToJSON Owner where
+  toJSON Owner {..}
+    = JSON.object
+        ["DomainIdentifier" JSON..= domainIdentifier,
+         "EntityIdentifier" JSON..= entityIdentifier,
+         "EntityType" JSON..= entityType, "Owner" JSON..= owner]
+instance Property "DomainIdentifier" Owner where
+  type PropertyType "DomainIdentifier" Owner = Value Prelude.Text
+  set newValue Owner {..} = Owner {domainIdentifier = newValue, ..}
+instance Property "EntityIdentifier" Owner where
+  type PropertyType "EntityIdentifier" Owner = Value Prelude.Text
+  set newValue Owner {..} = Owner {entityIdentifier = newValue, ..}
+instance Property "EntityType" Owner where
+  type PropertyType "EntityType" Owner = Value Prelude.Text
+  set newValue Owner {..} = Owner {entityType = newValue, ..}
+instance Property "Owner" Owner where
+  type PropertyType "Owner" Owner = OwnerPropertiesProperty
+  set newValue Owner {..} = Owner {owner = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs b/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.DataZone.Owner.OwnerGroupPropertiesProperty (
+        OwnerGroupPropertiesProperty(..), mkOwnerGroupPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OwnerGroupPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownergroupproperties.html>
+    OwnerGroupPropertiesProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownergroupproperties.html#cfn-datazone-owner-ownergroupproperties-groupidentifier>
+                                  groupIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOwnerGroupPropertiesProperty :: OwnerGroupPropertiesProperty
+mkOwnerGroupPropertiesProperty
+  = OwnerGroupPropertiesProperty
+      {haddock_workaround_ = (), groupIdentifier = Prelude.Nothing}
+instance ToResourceProperties OwnerGroupPropertiesProperty where
+  toResourceProperties OwnerGroupPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Owner.OwnerGroupProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GroupIdentifier" Prelude.<$> groupIdentifier])}
+instance JSON.ToJSON OwnerGroupPropertiesProperty where
+  toJSON OwnerGroupPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GroupIdentifier" Prelude.<$> groupIdentifier]))
+instance Property "GroupIdentifier" OwnerGroupPropertiesProperty where
+  type PropertyType "GroupIdentifier" OwnerGroupPropertiesProperty = Value Prelude.Text
+  set newValue OwnerGroupPropertiesProperty {..}
+    = OwnerGroupPropertiesProperty
+        {groupIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerGroupPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Owner.OwnerGroupPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OwnerGroupPropertiesProperty :: Prelude.Type
+instance ToResourceProperties OwnerGroupPropertiesProperty
+instance Prelude.Eq OwnerGroupPropertiesProperty
+instance Prelude.Show OwnerGroupPropertiesProperty
+instance JSON.ToJSON OwnerGroupPropertiesProperty
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs b/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.DataZone.Owner.OwnerPropertiesProperty (
+        module Exports, OwnerPropertiesProperty(..),
+        mkOwnerPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Owner.OwnerGroupPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.Owner.OwnerUserPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+data OwnerPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html>
+    OwnerPropertiesProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html#cfn-datazone-owner-ownerproperties-group>
+                             group :: (Prelude.Maybe OwnerGroupPropertiesProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html#cfn-datazone-owner-ownerproperties-user>
+                             user :: (Prelude.Maybe OwnerUserPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOwnerPropertiesProperty :: OwnerPropertiesProperty
+mkOwnerPropertiesProperty
+  = OwnerPropertiesProperty
+      {haddock_workaround_ = (), group = Prelude.Nothing,
+       user = Prelude.Nothing}
+instance ToResourceProperties OwnerPropertiesProperty where
+  toResourceProperties OwnerPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Owner.OwnerProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Group" Prelude.<$> group,
+                            (JSON..=) "User" Prelude.<$> user])}
+instance JSON.ToJSON OwnerPropertiesProperty where
+  toJSON OwnerPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Group" Prelude.<$> group,
+               (JSON..=) "User" Prelude.<$> user]))
+instance Property "Group" OwnerPropertiesProperty where
+  type PropertyType "Group" OwnerPropertiesProperty = OwnerGroupPropertiesProperty
+  set newValue OwnerPropertiesProperty {..}
+    = OwnerPropertiesProperty {group = Prelude.pure newValue, ..}
+instance Property "User" OwnerPropertiesProperty where
+  type PropertyType "User" OwnerPropertiesProperty = OwnerUserPropertiesProperty
+  set newValue OwnerPropertiesProperty {..}
+    = OwnerPropertiesProperty {user = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Owner.OwnerPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OwnerPropertiesProperty :: Prelude.Type
+instance ToResourceProperties OwnerPropertiesProperty
+instance Prelude.Eq OwnerPropertiesProperty
+instance Prelude.Show OwnerPropertiesProperty
+instance JSON.ToJSON OwnerPropertiesProperty
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs b/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.DataZone.Owner.OwnerUserPropertiesProperty (
+        OwnerUserPropertiesProperty(..), mkOwnerUserPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OwnerUserPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-owneruserproperties.html>
+    OwnerUserPropertiesProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-owneruserproperties.html#cfn-datazone-owner-owneruserproperties-useridentifier>
+                                 userIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOwnerUserPropertiesProperty :: OwnerUserPropertiesProperty
+mkOwnerUserPropertiesProperty
+  = OwnerUserPropertiesProperty
+      {haddock_workaround_ = (), userIdentifier = Prelude.Nothing}
+instance ToResourceProperties OwnerUserPropertiesProperty where
+  toResourceProperties OwnerUserPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Owner.OwnerUserProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "UserIdentifier" Prelude.<$> userIdentifier])}
+instance JSON.ToJSON OwnerUserPropertiesProperty where
+  toJSON OwnerUserPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "UserIdentifier" Prelude.<$> userIdentifier]))
+instance Property "UserIdentifier" OwnerUserPropertiesProperty where
+  type PropertyType "UserIdentifier" OwnerUserPropertiesProperty = Value Prelude.Text
+  set newValue OwnerUserPropertiesProperty {..}
+    = OwnerUserPropertiesProperty
+        {userIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs-boot b/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Owner/OwnerUserPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Owner.OwnerUserPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OwnerUserPropertiesProperty :: Prelude.Type
+instance ToResourceProperties OwnerUserPropertiesProperty
+instance Prelude.Eq OwnerUserPropertiesProperty
+instance Prelude.Show OwnerUserPropertiesProperty
+instance JSON.ToJSON OwnerUserPropertiesProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant.hs b/gen/Stratosphere/DataZone/PolicyGrant.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant.hs
@@ -0,0 +1,88 @@
+module Stratosphere.DataZone.PolicyGrant (
+        module Exports, PolicyGrant(..), mkPolicyGrant
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.PolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.PolicyGrantPrincipalProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PolicyGrant
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html>
+    PolicyGrant {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-detail>
+                 detail :: (Prelude.Maybe PolicyGrantDetailProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-domainidentifier>
+                 domainIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-entityidentifier>
+                 entityIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-entitytype>
+                 entityType :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-policytype>
+                 policyType :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-policygrant.html#cfn-datazone-policygrant-principal>
+                 principal :: (Prelude.Maybe PolicyGrantPrincipalProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPolicyGrant ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> PolicyGrant
+mkPolicyGrant
+  domainIdentifier
+  entityIdentifier
+  entityType
+  policyType
+  = PolicyGrant
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       entityIdentifier = entityIdentifier, entityType = entityType,
+       policyType = policyType, detail = Prelude.Nothing,
+       principal = Prelude.Nothing}
+instance ToResourceProperties PolicyGrant where
+  toResourceProperties PolicyGrant {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier,
+                            "EntityIdentifier" JSON..= entityIdentifier,
+                            "EntityType" JSON..= entityType, "PolicyType" JSON..= policyType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Detail" Prelude.<$> detail,
+                               (JSON..=) "Principal" Prelude.<$> principal]))}
+instance JSON.ToJSON PolicyGrant where
+  toJSON PolicyGrant {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier,
+               "EntityIdentifier" JSON..= entityIdentifier,
+               "EntityType" JSON..= entityType, "PolicyType" JSON..= policyType]
+              (Prelude.catMaybes
+                 [(JSON..=) "Detail" Prelude.<$> detail,
+                  (JSON..=) "Principal" Prelude.<$> principal])))
+instance Property "Detail" PolicyGrant where
+  type PropertyType "Detail" PolicyGrant = PolicyGrantDetailProperty
+  set newValue PolicyGrant {..}
+    = PolicyGrant {detail = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" PolicyGrant where
+  type PropertyType "DomainIdentifier" PolicyGrant = Value Prelude.Text
+  set newValue PolicyGrant {..}
+    = PolicyGrant {domainIdentifier = newValue, ..}
+instance Property "EntityIdentifier" PolicyGrant where
+  type PropertyType "EntityIdentifier" PolicyGrant = Value Prelude.Text
+  set newValue PolicyGrant {..}
+    = PolicyGrant {entityIdentifier = newValue, ..}
+instance Property "EntityType" PolicyGrant where
+  type PropertyType "EntityType" PolicyGrant = Value Prelude.Text
+  set newValue PolicyGrant {..}
+    = PolicyGrant {entityType = newValue, ..}
+instance Property "PolicyType" PolicyGrant where
+  type PropertyType "PolicyType" PolicyGrant = Value Prelude.Text
+  set newValue PolicyGrant {..}
+    = PolicyGrant {policyType = newValue, ..}
+instance Property "Principal" PolicyGrant where
+  type PropertyType "Principal" PolicyGrant = PolicyGrantPrincipalProperty
+  set newValue PolicyGrant {..}
+    = PolicyGrant {principal = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.DataZone.PolicyGrant.AddToProjectMemberPoolPolicyGrantDetailProperty (
+        AddToProjectMemberPoolPolicyGrantDetailProperty(..),
+        mkAddToProjectMemberPoolPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AddToProjectMemberPoolPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-addtoprojectmemberpoolpolicygrantdetail.html>
+    AddToProjectMemberPoolPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-addtoprojectmemberpoolpolicygrantdetail.html#cfn-datazone-policygrant-addtoprojectmemberpoolpolicygrantdetail-includechilddomainunits>
+                                                     includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAddToProjectMemberPoolPolicyGrantDetailProperty ::
+  AddToProjectMemberPoolPolicyGrantDetailProperty
+mkAddToProjectMemberPoolPolicyGrantDetailProperty
+  = AddToProjectMemberPoolPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties AddToProjectMemberPoolPolicyGrantDetailProperty where
+  toResourceProperties
+    AddToProjectMemberPoolPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.AddToProjectMemberPoolPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON AddToProjectMemberPoolPolicyGrantDetailProperty where
+  toJSON AddToProjectMemberPoolPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" AddToProjectMemberPoolPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" AddToProjectMemberPoolPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue AddToProjectMemberPoolPolicyGrantDetailProperty {..}
+    = AddToProjectMemberPoolPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/AddToProjectMemberPoolPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.AddToProjectMemberPoolPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AddToProjectMemberPoolPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties AddToProjectMemberPoolPolicyGrantDetailProperty
+instance Prelude.Eq AddToProjectMemberPoolPolicyGrantDetailProperty
+instance Prelude.Show AddToProjectMemberPoolPolicyGrantDetailProperty
+instance JSON.ToJSON AddToProjectMemberPoolPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.PolicyGrant.CreateAssetTypePolicyGrantDetailProperty (
+        CreateAssetTypePolicyGrantDetailProperty(..),
+        mkCreateAssetTypePolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateAssetTypePolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createassettypepolicygrantdetail.html>
+    CreateAssetTypePolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createassettypepolicygrantdetail.html#cfn-datazone-policygrant-createassettypepolicygrantdetail-includechilddomainunits>
+                                              includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateAssetTypePolicyGrantDetailProperty ::
+  CreateAssetTypePolicyGrantDetailProperty
+mkCreateAssetTypePolicyGrantDetailProperty
+  = CreateAssetTypePolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties CreateAssetTypePolicyGrantDetailProperty where
+  toResourceProperties CreateAssetTypePolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateAssetTypePolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON CreateAssetTypePolicyGrantDetailProperty where
+  toJSON CreateAssetTypePolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" CreateAssetTypePolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateAssetTypePolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue CreateAssetTypePolicyGrantDetailProperty {..}
+    = CreateAssetTypePolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateAssetTypePolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateAssetTypePolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateAssetTypePolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateAssetTypePolicyGrantDetailProperty
+instance Prelude.Eq CreateAssetTypePolicyGrantDetailProperty
+instance Prelude.Show CreateAssetTypePolicyGrantDetailProperty
+instance JSON.ToJSON CreateAssetTypePolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.PolicyGrant.CreateDomainUnitPolicyGrantDetailProperty (
+        CreateDomainUnitPolicyGrantDetailProperty(..),
+        mkCreateDomainUnitPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateDomainUnitPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createdomainunitpolicygrantdetail.html>
+    CreateDomainUnitPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createdomainunitpolicygrantdetail.html#cfn-datazone-policygrant-createdomainunitpolicygrantdetail-includechilddomainunits>
+                                               includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateDomainUnitPolicyGrantDetailProperty ::
+  CreateDomainUnitPolicyGrantDetailProperty
+mkCreateDomainUnitPolicyGrantDetailProperty
+  = CreateDomainUnitPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties CreateDomainUnitPolicyGrantDetailProperty where
+  toResourceProperties CreateDomainUnitPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateDomainUnitPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON CreateDomainUnitPolicyGrantDetailProperty where
+  toJSON CreateDomainUnitPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" CreateDomainUnitPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateDomainUnitPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue CreateDomainUnitPolicyGrantDetailProperty {..}
+    = CreateDomainUnitPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateDomainUnitPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateDomainUnitPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateDomainUnitPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateDomainUnitPolicyGrantDetailProperty
+instance Prelude.Eq CreateDomainUnitPolicyGrantDetailProperty
+instance Prelude.Show CreateDomainUnitPolicyGrantDetailProperty
+instance JSON.ToJSON CreateDomainUnitPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.DataZone.PolicyGrant.CreateEnvironmentProfilePolicyGrantDetailProperty (
+        CreateEnvironmentProfilePolicyGrantDetailProperty(..),
+        mkCreateEnvironmentProfilePolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateEnvironmentProfilePolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createenvironmentprofilepolicygrantdetail.html>
+    CreateEnvironmentProfilePolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createenvironmentprofilepolicygrantdetail.html#cfn-datazone-policygrant-createenvironmentprofilepolicygrantdetail-domainunitid>
+                                                       domainUnitId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateEnvironmentProfilePolicyGrantDetailProperty ::
+  CreateEnvironmentProfilePolicyGrantDetailProperty
+mkCreateEnvironmentProfilePolicyGrantDetailProperty
+  = CreateEnvironmentProfilePolicyGrantDetailProperty
+      {haddock_workaround_ = (), domainUnitId = Prelude.Nothing}
+instance ToResourceProperties CreateEnvironmentProfilePolicyGrantDetailProperty where
+  toResourceProperties
+    CreateEnvironmentProfilePolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateEnvironmentProfilePolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DomainUnitId" Prelude.<$> domainUnitId])}
+instance JSON.ToJSON CreateEnvironmentProfilePolicyGrantDetailProperty where
+  toJSON CreateEnvironmentProfilePolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DomainUnitId" Prelude.<$> domainUnitId]))
+instance Property "DomainUnitId" CreateEnvironmentProfilePolicyGrantDetailProperty where
+  type PropertyType "DomainUnitId" CreateEnvironmentProfilePolicyGrantDetailProperty = Value Prelude.Text
+  set newValue CreateEnvironmentProfilePolicyGrantDetailProperty {..}
+    = CreateEnvironmentProfilePolicyGrantDetailProperty
+        {domainUnitId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateEnvironmentProfilePolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateEnvironmentProfilePolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateEnvironmentProfilePolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateEnvironmentProfilePolicyGrantDetailProperty
+instance Prelude.Eq CreateEnvironmentProfilePolicyGrantDetailProperty
+instance Prelude.Show CreateEnvironmentProfilePolicyGrantDetailProperty
+instance JSON.ToJSON CreateEnvironmentProfilePolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.PolicyGrant.CreateFormTypePolicyGrantDetailProperty (
+        CreateFormTypePolicyGrantDetailProperty(..),
+        mkCreateFormTypePolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateFormTypePolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createformtypepolicygrantdetail.html>
+    CreateFormTypePolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createformtypepolicygrantdetail.html#cfn-datazone-policygrant-createformtypepolicygrantdetail-includechilddomainunits>
+                                             includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateFormTypePolicyGrantDetailProperty ::
+  CreateFormTypePolicyGrantDetailProperty
+mkCreateFormTypePolicyGrantDetailProperty
+  = CreateFormTypePolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties CreateFormTypePolicyGrantDetailProperty where
+  toResourceProperties CreateFormTypePolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateFormTypePolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON CreateFormTypePolicyGrantDetailProperty where
+  toJSON CreateFormTypePolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" CreateFormTypePolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateFormTypePolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue CreateFormTypePolicyGrantDetailProperty {..}
+    = CreateFormTypePolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateFormTypePolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateFormTypePolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateFormTypePolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateFormTypePolicyGrantDetailProperty
+instance Prelude.Eq CreateFormTypePolicyGrantDetailProperty
+instance Prelude.Show CreateFormTypePolicyGrantDetailProperty
+instance JSON.ToJSON CreateFormTypePolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.PolicyGrant.CreateGlossaryPolicyGrantDetailProperty (
+        CreateGlossaryPolicyGrantDetailProperty(..),
+        mkCreateGlossaryPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateGlossaryPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createglossarypolicygrantdetail.html>
+    CreateGlossaryPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createglossarypolicygrantdetail.html#cfn-datazone-policygrant-createglossarypolicygrantdetail-includechilddomainunits>
+                                             includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateGlossaryPolicyGrantDetailProperty ::
+  CreateGlossaryPolicyGrantDetailProperty
+mkCreateGlossaryPolicyGrantDetailProperty
+  = CreateGlossaryPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties CreateGlossaryPolicyGrantDetailProperty where
+  toResourceProperties CreateGlossaryPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateGlossaryPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON CreateGlossaryPolicyGrantDetailProperty where
+  toJSON CreateGlossaryPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" CreateGlossaryPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateGlossaryPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue CreateGlossaryPolicyGrantDetailProperty {..}
+    = CreateGlossaryPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateGlossaryPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateGlossaryPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateGlossaryPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateGlossaryPolicyGrantDetailProperty
+instance Prelude.Eq CreateGlossaryPolicyGrantDetailProperty
+instance Prelude.Show CreateGlossaryPolicyGrantDetailProperty
+instance JSON.ToJSON CreateGlossaryPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.DataZone.PolicyGrant.CreateProjectFromProjectProfilePolicyGrantDetailProperty (
+        CreateProjectFromProjectProfilePolicyGrantDetailProperty(..),
+        mkCreateProjectFromProjectProfilePolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateProjectFromProjectProfilePolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createprojectfromprojectprofilepolicygrantdetail.html>
+    CreateProjectFromProjectProfilePolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createprojectfromprojectprofilepolicygrantdetail.html#cfn-datazone-policygrant-createprojectfromprojectprofilepolicygrantdetail-includechilddomainunits>
+                                                              includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool)),
+                                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createprojectfromprojectprofilepolicygrantdetail.html#cfn-datazone-policygrant-createprojectfromprojectprofilepolicygrantdetail-projectprofiles>
+                                                              projectProfiles :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateProjectFromProjectProfilePolicyGrantDetailProperty ::
+  CreateProjectFromProjectProfilePolicyGrantDetailProperty
+mkCreateProjectFromProjectProfilePolicyGrantDetailProperty
+  = CreateProjectFromProjectProfilePolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing,
+       projectProfiles = Prelude.Nothing}
+instance ToResourceProperties CreateProjectFromProjectProfilePolicyGrantDetailProperty where
+  toResourceProperties
+    CreateProjectFromProjectProfilePolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateProjectFromProjectProfilePolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits,
+                            (JSON..=) "ProjectProfiles" Prelude.<$> projectProfiles])}
+instance JSON.ToJSON CreateProjectFromProjectProfilePolicyGrantDetailProperty where
+  toJSON
+    CreateProjectFromProjectProfilePolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits,
+               (JSON..=) "ProjectProfiles" Prelude.<$> projectProfiles]))
+instance Property "IncludeChildDomainUnits" CreateProjectFromProjectProfilePolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateProjectFromProjectProfilePolicyGrantDetailProperty = Value Prelude.Bool
+  set
+    newValue
+    CreateProjectFromProjectProfilePolicyGrantDetailProperty {..}
+    = CreateProjectFromProjectProfilePolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
+instance Property "ProjectProfiles" CreateProjectFromProjectProfilePolicyGrantDetailProperty where
+  type PropertyType "ProjectProfiles" CreateProjectFromProjectProfilePolicyGrantDetailProperty = ValueList Prelude.Text
+  set
+    newValue
+    CreateProjectFromProjectProfilePolicyGrantDetailProperty {..}
+    = CreateProjectFromProjectProfilePolicyGrantDetailProperty
+        {projectProfiles = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectFromProjectProfilePolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateProjectFromProjectProfilePolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateProjectFromProjectProfilePolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateProjectFromProjectProfilePolicyGrantDetailProperty
+instance Prelude.Eq CreateProjectFromProjectProfilePolicyGrantDetailProperty
+instance Prelude.Show CreateProjectFromProjectProfilePolicyGrantDetailProperty
+instance JSON.ToJSON CreateProjectFromProjectProfilePolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.PolicyGrant.CreateProjectPolicyGrantDetailProperty (
+        CreateProjectPolicyGrantDetailProperty(..),
+        mkCreateProjectPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateProjectPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createprojectpolicygrantdetail.html>
+    CreateProjectPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-createprojectpolicygrantdetail.html#cfn-datazone-policygrant-createprojectpolicygrantdetail-includechilddomainunits>
+                                            includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateProjectPolicyGrantDetailProperty ::
+  CreateProjectPolicyGrantDetailProperty
+mkCreateProjectPolicyGrantDetailProperty
+  = CreateProjectPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties CreateProjectPolicyGrantDetailProperty where
+  toResourceProperties CreateProjectPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.CreateProjectPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON CreateProjectPolicyGrantDetailProperty where
+  toJSON CreateProjectPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" CreateProjectPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" CreateProjectPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue CreateProjectPolicyGrantDetailProperty {..}
+    = CreateProjectPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/CreateProjectPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.CreateProjectPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateProjectPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties CreateProjectPolicyGrantDetailProperty
+instance Prelude.Eq CreateProjectPolicyGrantDetailProperty
+instance Prelude.Show CreateProjectPolicyGrantDetailProperty
+instance JSON.ToJSON CreateProjectPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitFilterForProjectProperty (
+        DomainUnitFilterForProjectProperty(..),
+        mkDomainUnitFilterForProjectProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainUnitFilterForProjectProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitfilterforproject.html>
+    DomainUnitFilterForProjectProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitfilterforproject.html#cfn-datazone-policygrant-domainunitfilterforproject-domainunit>
+                                        domainUnit :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitfilterforproject.html#cfn-datazone-policygrant-domainunitfilterforproject-includechilddomainunits>
+                                        includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainUnitFilterForProjectProperty ::
+  Value Prelude.Text -> DomainUnitFilterForProjectProperty
+mkDomainUnitFilterForProjectProperty domainUnit
+  = DomainUnitFilterForProjectProperty
+      {haddock_workaround_ = (), domainUnit = domainUnit,
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties DomainUnitFilterForProjectProperty where
+  toResourceProperties DomainUnitFilterForProjectProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.DomainUnitFilterForProject",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainUnit" JSON..= domainUnit]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IncludeChildDomainUnits"
+                                 Prelude.<$> includeChildDomainUnits]))}
+instance JSON.ToJSON DomainUnitFilterForProjectProperty where
+  toJSON DomainUnitFilterForProjectProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainUnit" JSON..= domainUnit]
+              (Prelude.catMaybes
+                 [(JSON..=) "IncludeChildDomainUnits"
+                    Prelude.<$> includeChildDomainUnits])))
+instance Property "DomainUnit" DomainUnitFilterForProjectProperty where
+  type PropertyType "DomainUnit" DomainUnitFilterForProjectProperty = Value Prelude.Text
+  set newValue DomainUnitFilterForProjectProperty {..}
+    = DomainUnitFilterForProjectProperty {domainUnit = newValue, ..}
+instance Property "IncludeChildDomainUnits" DomainUnitFilterForProjectProperty where
+  type PropertyType "IncludeChildDomainUnits" DomainUnitFilterForProjectProperty = Value Prelude.Bool
+  set newValue DomainUnitFilterForProjectProperty {..}
+    = DomainUnitFilterForProjectProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitFilterForProjectProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitFilterForProjectProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainUnitFilterForProjectProperty :: Prelude.Type
+instance ToResourceProperties DomainUnitFilterForProjectProperty
+instance Prelude.Eq DomainUnitFilterForProjectProperty
+instance Prelude.Show DomainUnitFilterForProjectProperty
+instance JSON.ToJSON DomainUnitFilterForProjectProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitGrantFilterProperty (
+        DomainUnitGrantFilterProperty(..), mkDomainUnitGrantFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+data DomainUnitGrantFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitgrantfilter.html>
+    DomainUnitGrantFilterProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitgrantfilter.html#cfn-datazone-policygrant-domainunitgrantfilter-alldomainunitsgrantfilter>
+                                   allDomainUnitsGrantFilter :: JSON.Object}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainUnitGrantFilterProperty ::
+  JSON.Object -> DomainUnitGrantFilterProperty
+mkDomainUnitGrantFilterProperty allDomainUnitsGrantFilter
+  = DomainUnitGrantFilterProperty
+      {haddock_workaround_ = (),
+       allDomainUnitsGrantFilter = allDomainUnitsGrantFilter}
+instance ToResourceProperties DomainUnitGrantFilterProperty where
+  toResourceProperties DomainUnitGrantFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.DomainUnitGrantFilter",
+         supportsTags = Prelude.False,
+         properties = ["AllDomainUnitsGrantFilter"
+                         JSON..= allDomainUnitsGrantFilter]}
+instance JSON.ToJSON DomainUnitGrantFilterProperty where
+  toJSON DomainUnitGrantFilterProperty {..}
+    = JSON.object
+        ["AllDomainUnitsGrantFilter" JSON..= allDomainUnitsGrantFilter]
+instance Property "AllDomainUnitsGrantFilter" DomainUnitGrantFilterProperty where
+  type PropertyType "AllDomainUnitsGrantFilter" DomainUnitGrantFilterProperty = JSON.Object
+  set newValue DomainUnitGrantFilterProperty {..}
+    = DomainUnitGrantFilterProperty
+        {allDomainUnitsGrantFilter = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitGrantFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitGrantFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainUnitGrantFilterProperty :: Prelude.Type
+instance ToResourceProperties DomainUnitGrantFilterProperty
+instance Prelude.Eq DomainUnitGrantFilterProperty
+instance Prelude.Show DomainUnitGrantFilterProperty
+instance JSON.ToJSON DomainUnitGrantFilterProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitPolicyGrantPrincipalProperty (
+        module Exports, DomainUnitPolicyGrantPrincipalProperty(..),
+        mkDomainUnitPolicyGrantPrincipalProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.DomainUnitGrantFilterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainUnitPolicyGrantPrincipalProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitpolicygrantprincipal.html>
+    DomainUnitPolicyGrantPrincipalProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitpolicygrantprincipal.html#cfn-datazone-policygrant-domainunitpolicygrantprincipal-domainunitdesignation>
+                                            domainUnitDesignation :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitpolicygrantprincipal.html#cfn-datazone-policygrant-domainunitpolicygrantprincipal-domainunitgrantfilter>
+                                            domainUnitGrantFilter :: (Prelude.Maybe DomainUnitGrantFilterProperty),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-domainunitpolicygrantprincipal.html#cfn-datazone-policygrant-domainunitpolicygrantprincipal-domainunitidentifier>
+                                            domainUnitIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainUnitPolicyGrantPrincipalProperty ::
+  DomainUnitPolicyGrantPrincipalProperty
+mkDomainUnitPolicyGrantPrincipalProperty
+  = DomainUnitPolicyGrantPrincipalProperty
+      {haddock_workaround_ = (), domainUnitDesignation = Prelude.Nothing,
+       domainUnitGrantFilter = Prelude.Nothing,
+       domainUnitIdentifier = Prelude.Nothing}
+instance ToResourceProperties DomainUnitPolicyGrantPrincipalProperty where
+  toResourceProperties DomainUnitPolicyGrantPrincipalProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.DomainUnitPolicyGrantPrincipal",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DomainUnitDesignation"
+                              Prelude.<$> domainUnitDesignation,
+                            (JSON..=) "DomainUnitGrantFilter"
+                              Prelude.<$> domainUnitGrantFilter,
+                            (JSON..=) "DomainUnitIdentifier"
+                              Prelude.<$> domainUnitIdentifier])}
+instance JSON.ToJSON DomainUnitPolicyGrantPrincipalProperty where
+  toJSON DomainUnitPolicyGrantPrincipalProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DomainUnitDesignation"
+                 Prelude.<$> domainUnitDesignation,
+               (JSON..=) "DomainUnitGrantFilter"
+                 Prelude.<$> domainUnitGrantFilter,
+               (JSON..=) "DomainUnitIdentifier"
+                 Prelude.<$> domainUnitIdentifier]))
+instance Property "DomainUnitDesignation" DomainUnitPolicyGrantPrincipalProperty where
+  type PropertyType "DomainUnitDesignation" DomainUnitPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue DomainUnitPolicyGrantPrincipalProperty {..}
+    = DomainUnitPolicyGrantPrincipalProperty
+        {domainUnitDesignation = Prelude.pure newValue, ..}
+instance Property "DomainUnitGrantFilter" DomainUnitPolicyGrantPrincipalProperty where
+  type PropertyType "DomainUnitGrantFilter" DomainUnitPolicyGrantPrincipalProperty = DomainUnitGrantFilterProperty
+  set newValue DomainUnitPolicyGrantPrincipalProperty {..}
+    = DomainUnitPolicyGrantPrincipalProperty
+        {domainUnitGrantFilter = Prelude.pure newValue, ..}
+instance Property "DomainUnitIdentifier" DomainUnitPolicyGrantPrincipalProperty where
+  type PropertyType "DomainUnitIdentifier" DomainUnitPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue DomainUnitPolicyGrantPrincipalProperty {..}
+    = DomainUnitPolicyGrantPrincipalProperty
+        {domainUnitIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/DomainUnitPolicyGrantPrincipalProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.DomainUnitPolicyGrantPrincipalProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainUnitPolicyGrantPrincipalProperty :: Prelude.Type
+instance ToResourceProperties DomainUnitPolicyGrantPrincipalProperty
+instance Prelude.Eq DomainUnitPolicyGrantPrincipalProperty
+instance Prelude.Show DomainUnitPolicyGrantPrincipalProperty
+instance JSON.ToJSON DomainUnitPolicyGrantPrincipalProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.DataZone.PolicyGrant.GroupPolicyGrantPrincipalProperty (
+        GroupPolicyGrantPrincipalProperty(..),
+        mkGroupPolicyGrantPrincipalProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GroupPolicyGrantPrincipalProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-grouppolicygrantprincipal.html>
+    GroupPolicyGrantPrincipalProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-grouppolicygrantprincipal.html#cfn-datazone-policygrant-grouppolicygrantprincipal-groupidentifier>
+                                       groupIdentifier :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGroupPolicyGrantPrincipalProperty ::
+  Value Prelude.Text -> GroupPolicyGrantPrincipalProperty
+mkGroupPolicyGrantPrincipalProperty groupIdentifier
+  = GroupPolicyGrantPrincipalProperty
+      {haddock_workaround_ = (), groupIdentifier = groupIdentifier}
+instance ToResourceProperties GroupPolicyGrantPrincipalProperty where
+  toResourceProperties GroupPolicyGrantPrincipalProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.GroupPolicyGrantPrincipal",
+         supportsTags = Prelude.False,
+         properties = ["GroupIdentifier" JSON..= groupIdentifier]}
+instance JSON.ToJSON GroupPolicyGrantPrincipalProperty where
+  toJSON GroupPolicyGrantPrincipalProperty {..}
+    = JSON.object ["GroupIdentifier" JSON..= groupIdentifier]
+instance Property "GroupIdentifier" GroupPolicyGrantPrincipalProperty where
+  type PropertyType "GroupIdentifier" GroupPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue GroupPolicyGrantPrincipalProperty {..}
+    = GroupPolicyGrantPrincipalProperty
+        {groupIdentifier = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/GroupPolicyGrantPrincipalProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.GroupPolicyGrantPrincipalProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GroupPolicyGrantPrincipalProperty :: Prelude.Type
+instance ToResourceProperties GroupPolicyGrantPrincipalProperty
+instance Prelude.Eq GroupPolicyGrantPrincipalProperty
+instance Prelude.Show GroupPolicyGrantPrincipalProperty
+instance JSON.ToJSON GroupPolicyGrantPrincipalProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.DataZone.PolicyGrant.OverrideDomainUnitOwnersPolicyGrantDetailProperty (
+        OverrideDomainUnitOwnersPolicyGrantDetailProperty(..),
+        mkOverrideDomainUnitOwnersPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OverrideDomainUnitOwnersPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-overridedomainunitownerspolicygrantdetail.html>
+    OverrideDomainUnitOwnersPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-overridedomainunitownerspolicygrantdetail.html#cfn-datazone-policygrant-overridedomainunitownerspolicygrantdetail-includechilddomainunits>
+                                                       includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOverrideDomainUnitOwnersPolicyGrantDetailProperty ::
+  OverrideDomainUnitOwnersPolicyGrantDetailProperty
+mkOverrideDomainUnitOwnersPolicyGrantDetailProperty
+  = OverrideDomainUnitOwnersPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties OverrideDomainUnitOwnersPolicyGrantDetailProperty where
+  toResourceProperties
+    OverrideDomainUnitOwnersPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.OverrideDomainUnitOwnersPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON OverrideDomainUnitOwnersPolicyGrantDetailProperty where
+  toJSON OverrideDomainUnitOwnersPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" OverrideDomainUnitOwnersPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" OverrideDomainUnitOwnersPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue OverrideDomainUnitOwnersPolicyGrantDetailProperty {..}
+    = OverrideDomainUnitOwnersPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/OverrideDomainUnitOwnersPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.OverrideDomainUnitOwnersPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OverrideDomainUnitOwnersPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties OverrideDomainUnitOwnersPolicyGrantDetailProperty
+instance Prelude.Eq OverrideDomainUnitOwnersPolicyGrantDetailProperty
+instance Prelude.Show OverrideDomainUnitOwnersPolicyGrantDetailProperty
+instance JSON.ToJSON OverrideDomainUnitOwnersPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.DataZone.PolicyGrant.OverrideProjectOwnersPolicyGrantDetailProperty (
+        OverrideProjectOwnersPolicyGrantDetailProperty(..),
+        mkOverrideProjectOwnersPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OverrideProjectOwnersPolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-overrideprojectownerspolicygrantdetail.html>
+    OverrideProjectOwnersPolicyGrantDetailProperty {haddock_workaround_ :: (),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-overrideprojectownerspolicygrantdetail.html#cfn-datazone-policygrant-overrideprojectownerspolicygrantdetail-includechilddomainunits>
+                                                    includeChildDomainUnits :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOverrideProjectOwnersPolicyGrantDetailProperty ::
+  OverrideProjectOwnersPolicyGrantDetailProperty
+mkOverrideProjectOwnersPolicyGrantDetailProperty
+  = OverrideProjectOwnersPolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       includeChildDomainUnits = Prelude.Nothing}
+instance ToResourceProperties OverrideProjectOwnersPolicyGrantDetailProperty where
+  toResourceProperties
+    OverrideProjectOwnersPolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.OverrideProjectOwnersPolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeChildDomainUnits"
+                              Prelude.<$> includeChildDomainUnits])}
+instance JSON.ToJSON OverrideProjectOwnersPolicyGrantDetailProperty where
+  toJSON OverrideProjectOwnersPolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeChildDomainUnits"
+                 Prelude.<$> includeChildDomainUnits]))
+instance Property "IncludeChildDomainUnits" OverrideProjectOwnersPolicyGrantDetailProperty where
+  type PropertyType "IncludeChildDomainUnits" OverrideProjectOwnersPolicyGrantDetailProperty = Value Prelude.Bool
+  set newValue OverrideProjectOwnersPolicyGrantDetailProperty {..}
+    = OverrideProjectOwnersPolicyGrantDetailProperty
+        {includeChildDomainUnits = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/OverrideProjectOwnersPolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.OverrideProjectOwnersPolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OverrideProjectOwnersPolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties OverrideProjectOwnersPolicyGrantDetailProperty
+instance Prelude.Eq OverrideProjectOwnersPolicyGrantDetailProperty
+instance Prelude.Show OverrideProjectOwnersPolicyGrantDetailProperty
+instance JSON.ToJSON OverrideProjectOwnersPolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs
@@ -0,0 +1,181 @@
+module Stratosphere.DataZone.PolicyGrant.PolicyGrantDetailProperty (
+        module Exports, PolicyGrantDetailProperty(..),
+        mkPolicyGrantDetailProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.AddToProjectMemberPoolPolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateAssetTypePolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateDomainUnitPolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateEnvironmentProfilePolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateFormTypePolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateGlossaryPolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateProjectFromProjectProfilePolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.CreateProjectPolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.OverrideDomainUnitOwnersPolicyGrantDetailProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.OverrideProjectOwnersPolicyGrantDetailProperty as Exports
+import Stratosphere.ResourceProperties
+data PolicyGrantDetailProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html>
+    PolicyGrantDetailProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-addtoprojectmemberpool>
+                               addToProjectMemberPool :: (Prelude.Maybe AddToProjectMemberPoolPolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createassettype>
+                               createAssetType :: (Prelude.Maybe CreateAssetTypePolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createdomainunit>
+                               createDomainUnit :: (Prelude.Maybe CreateDomainUnitPolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createenvironment>
+                               createEnvironment :: (Prelude.Maybe JSON.Object),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createenvironmentfromblueprint>
+                               createEnvironmentFromBlueprint :: (Prelude.Maybe JSON.Object),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createenvironmentprofile>
+                               createEnvironmentProfile :: (Prelude.Maybe CreateEnvironmentProfilePolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createformtype>
+                               createFormType :: (Prelude.Maybe CreateFormTypePolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createglossary>
+                               createGlossary :: (Prelude.Maybe CreateGlossaryPolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createproject>
+                               createProject :: (Prelude.Maybe CreateProjectPolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-createprojectfromprojectprofile>
+                               createProjectFromProjectProfile :: (Prelude.Maybe CreateProjectFromProjectProfilePolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-delegatecreateenvironmentprofile>
+                               delegateCreateEnvironmentProfile :: (Prelude.Maybe JSON.Object),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-overridedomainunitowners>
+                               overrideDomainUnitOwners :: (Prelude.Maybe OverrideDomainUnitOwnersPolicyGrantDetailProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantdetail.html#cfn-datazone-policygrant-policygrantdetail-overrideprojectowners>
+                               overrideProjectOwners :: (Prelude.Maybe OverrideProjectOwnersPolicyGrantDetailProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPolicyGrantDetailProperty :: PolicyGrantDetailProperty
+mkPolicyGrantDetailProperty
+  = PolicyGrantDetailProperty
+      {haddock_workaround_ = (),
+       addToProjectMemberPool = Prelude.Nothing,
+       createAssetType = Prelude.Nothing,
+       createDomainUnit = Prelude.Nothing,
+       createEnvironment = Prelude.Nothing,
+       createEnvironmentFromBlueprint = Prelude.Nothing,
+       createEnvironmentProfile = Prelude.Nothing,
+       createFormType = Prelude.Nothing, createGlossary = Prelude.Nothing,
+       createProject = Prelude.Nothing,
+       createProjectFromProjectProfile = Prelude.Nothing,
+       delegateCreateEnvironmentProfile = Prelude.Nothing,
+       overrideDomainUnitOwners = Prelude.Nothing,
+       overrideProjectOwners = Prelude.Nothing}
+instance ToResourceProperties PolicyGrantDetailProperty where
+  toResourceProperties PolicyGrantDetailProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.PolicyGrantDetail",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AddToProjectMemberPool"
+                              Prelude.<$> addToProjectMemberPool,
+                            (JSON..=) "CreateAssetType" Prelude.<$> createAssetType,
+                            (JSON..=) "CreateDomainUnit" Prelude.<$> createDomainUnit,
+                            (JSON..=) "CreateEnvironment" Prelude.<$> createEnvironment,
+                            (JSON..=) "CreateEnvironmentFromBlueprint"
+                              Prelude.<$> createEnvironmentFromBlueprint,
+                            (JSON..=) "CreateEnvironmentProfile"
+                              Prelude.<$> createEnvironmentProfile,
+                            (JSON..=) "CreateFormType" Prelude.<$> createFormType,
+                            (JSON..=) "CreateGlossary" Prelude.<$> createGlossary,
+                            (JSON..=) "CreateProject" Prelude.<$> createProject,
+                            (JSON..=) "CreateProjectFromProjectProfile"
+                              Prelude.<$> createProjectFromProjectProfile,
+                            (JSON..=) "DelegateCreateEnvironmentProfile"
+                              Prelude.<$> delegateCreateEnvironmentProfile,
+                            (JSON..=) "OverrideDomainUnitOwners"
+                              Prelude.<$> overrideDomainUnitOwners,
+                            (JSON..=) "OverrideProjectOwners"
+                              Prelude.<$> overrideProjectOwners])}
+instance JSON.ToJSON PolicyGrantDetailProperty where
+  toJSON PolicyGrantDetailProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AddToProjectMemberPool"
+                 Prelude.<$> addToProjectMemberPool,
+               (JSON..=) "CreateAssetType" Prelude.<$> createAssetType,
+               (JSON..=) "CreateDomainUnit" Prelude.<$> createDomainUnit,
+               (JSON..=) "CreateEnvironment" Prelude.<$> createEnvironment,
+               (JSON..=) "CreateEnvironmentFromBlueprint"
+                 Prelude.<$> createEnvironmentFromBlueprint,
+               (JSON..=) "CreateEnvironmentProfile"
+                 Prelude.<$> createEnvironmentProfile,
+               (JSON..=) "CreateFormType" Prelude.<$> createFormType,
+               (JSON..=) "CreateGlossary" Prelude.<$> createGlossary,
+               (JSON..=) "CreateProject" Prelude.<$> createProject,
+               (JSON..=) "CreateProjectFromProjectProfile"
+                 Prelude.<$> createProjectFromProjectProfile,
+               (JSON..=) "DelegateCreateEnvironmentProfile"
+                 Prelude.<$> delegateCreateEnvironmentProfile,
+               (JSON..=) "OverrideDomainUnitOwners"
+                 Prelude.<$> overrideDomainUnitOwners,
+               (JSON..=) "OverrideProjectOwners"
+                 Prelude.<$> overrideProjectOwners]))
+instance Property "AddToProjectMemberPool" PolicyGrantDetailProperty where
+  type PropertyType "AddToProjectMemberPool" PolicyGrantDetailProperty = AddToProjectMemberPoolPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {addToProjectMemberPool = Prelude.pure newValue, ..}
+instance Property "CreateAssetType" PolicyGrantDetailProperty where
+  type PropertyType "CreateAssetType" PolicyGrantDetailProperty = CreateAssetTypePolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createAssetType = Prelude.pure newValue, ..}
+instance Property "CreateDomainUnit" PolicyGrantDetailProperty where
+  type PropertyType "CreateDomainUnit" PolicyGrantDetailProperty = CreateDomainUnitPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createDomainUnit = Prelude.pure newValue, ..}
+instance Property "CreateEnvironment" PolicyGrantDetailProperty where
+  type PropertyType "CreateEnvironment" PolicyGrantDetailProperty = JSON.Object
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createEnvironment = Prelude.pure newValue, ..}
+instance Property "CreateEnvironmentFromBlueprint" PolicyGrantDetailProperty where
+  type PropertyType "CreateEnvironmentFromBlueprint" PolicyGrantDetailProperty = JSON.Object
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createEnvironmentFromBlueprint = Prelude.pure newValue, ..}
+instance Property "CreateEnvironmentProfile" PolicyGrantDetailProperty where
+  type PropertyType "CreateEnvironmentProfile" PolicyGrantDetailProperty = CreateEnvironmentProfilePolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createEnvironmentProfile = Prelude.pure newValue, ..}
+instance Property "CreateFormType" PolicyGrantDetailProperty where
+  type PropertyType "CreateFormType" PolicyGrantDetailProperty = CreateFormTypePolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createFormType = Prelude.pure newValue, ..}
+instance Property "CreateGlossary" PolicyGrantDetailProperty where
+  type PropertyType "CreateGlossary" PolicyGrantDetailProperty = CreateGlossaryPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createGlossary = Prelude.pure newValue, ..}
+instance Property "CreateProject" PolicyGrantDetailProperty where
+  type PropertyType "CreateProject" PolicyGrantDetailProperty = CreateProjectPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createProject = Prelude.pure newValue, ..}
+instance Property "CreateProjectFromProjectProfile" PolicyGrantDetailProperty where
+  type PropertyType "CreateProjectFromProjectProfile" PolicyGrantDetailProperty = CreateProjectFromProjectProfilePolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {createProjectFromProjectProfile = Prelude.pure newValue, ..}
+instance Property "DelegateCreateEnvironmentProfile" PolicyGrantDetailProperty where
+  type PropertyType "DelegateCreateEnvironmentProfile" PolicyGrantDetailProperty = JSON.Object
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {delegateCreateEnvironmentProfile = Prelude.pure newValue, ..}
+instance Property "OverrideDomainUnitOwners" PolicyGrantDetailProperty where
+  type PropertyType "OverrideDomainUnitOwners" PolicyGrantDetailProperty = OverrideDomainUnitOwnersPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {overrideDomainUnitOwners = Prelude.pure newValue, ..}
+instance Property "OverrideProjectOwners" PolicyGrantDetailProperty where
+  type PropertyType "OverrideProjectOwners" PolicyGrantDetailProperty = OverrideProjectOwnersPolicyGrantDetailProperty
+  set newValue PolicyGrantDetailProperty {..}
+    = PolicyGrantDetailProperty
+        {overrideProjectOwners = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantDetailProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.PolicyGrantDetailProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PolicyGrantDetailProperty :: Prelude.Type
+instance ToResourceProperties PolicyGrantDetailProperty
+instance Prelude.Eq PolicyGrantDetailProperty
+instance Prelude.Show PolicyGrantDetailProperty
+instance JSON.ToJSON PolicyGrantDetailProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.DataZone.PolicyGrant.PolicyGrantPrincipalProperty (
+        module Exports, PolicyGrantPrincipalProperty(..),
+        mkPolicyGrantPrincipalProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.DomainUnitPolicyGrantPrincipalProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.GroupPolicyGrantPrincipalProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.ProjectPolicyGrantPrincipalProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.UserPolicyGrantPrincipalProperty as Exports
+import Stratosphere.ResourceProperties
+data PolicyGrantPrincipalProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html>
+    PolicyGrantPrincipalProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-domainunit>
+                                  domainUnit :: (Prelude.Maybe DomainUnitPolicyGrantPrincipalProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-group>
+                                  group :: (Prelude.Maybe GroupPolicyGrantPrincipalProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-project>
+                                  project :: (Prelude.Maybe ProjectPolicyGrantPrincipalProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-policygrantprincipal.html#cfn-datazone-policygrant-policygrantprincipal-user>
+                                  user :: (Prelude.Maybe UserPolicyGrantPrincipalProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPolicyGrantPrincipalProperty :: PolicyGrantPrincipalProperty
+mkPolicyGrantPrincipalProperty
+  = PolicyGrantPrincipalProperty
+      {haddock_workaround_ = (), domainUnit = Prelude.Nothing,
+       group = Prelude.Nothing, project = Prelude.Nothing,
+       user = Prelude.Nothing}
+instance ToResourceProperties PolicyGrantPrincipalProperty where
+  toResourceProperties PolicyGrantPrincipalProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.PolicyGrantPrincipal",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DomainUnit" Prelude.<$> domainUnit,
+                            (JSON..=) "Group" Prelude.<$> group,
+                            (JSON..=) "Project" Prelude.<$> project,
+                            (JSON..=) "User" Prelude.<$> user])}
+instance JSON.ToJSON PolicyGrantPrincipalProperty where
+  toJSON PolicyGrantPrincipalProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DomainUnit" Prelude.<$> domainUnit,
+               (JSON..=) "Group" Prelude.<$> group,
+               (JSON..=) "Project" Prelude.<$> project,
+               (JSON..=) "User" Prelude.<$> user]))
+instance Property "DomainUnit" PolicyGrantPrincipalProperty where
+  type PropertyType "DomainUnit" PolicyGrantPrincipalProperty = DomainUnitPolicyGrantPrincipalProperty
+  set newValue PolicyGrantPrincipalProperty {..}
+    = PolicyGrantPrincipalProperty
+        {domainUnit = Prelude.pure newValue, ..}
+instance Property "Group" PolicyGrantPrincipalProperty where
+  type PropertyType "Group" PolicyGrantPrincipalProperty = GroupPolicyGrantPrincipalProperty
+  set newValue PolicyGrantPrincipalProperty {..}
+    = PolicyGrantPrincipalProperty {group = Prelude.pure newValue, ..}
+instance Property "Project" PolicyGrantPrincipalProperty where
+  type PropertyType "Project" PolicyGrantPrincipalProperty = ProjectPolicyGrantPrincipalProperty
+  set newValue PolicyGrantPrincipalProperty {..}
+    = PolicyGrantPrincipalProperty
+        {project = Prelude.pure newValue, ..}
+instance Property "User" PolicyGrantPrincipalProperty where
+  type PropertyType "User" PolicyGrantPrincipalProperty = UserPolicyGrantPrincipalProperty
+  set newValue PolicyGrantPrincipalProperty {..}
+    = PolicyGrantPrincipalProperty {user = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/PolicyGrantPrincipalProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.PolicyGrantPrincipalProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PolicyGrantPrincipalProperty :: Prelude.Type
+instance ToResourceProperties PolicyGrantPrincipalProperty
+instance Prelude.Eq PolicyGrantPrincipalProperty
+instance Prelude.Show PolicyGrantPrincipalProperty
+instance JSON.ToJSON PolicyGrantPrincipalProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.DataZone.PolicyGrant.ProjectGrantFilterProperty (
+        module Exports, ProjectGrantFilterProperty(..),
+        mkProjectGrantFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.DomainUnitFilterForProjectProperty as Exports
+import Stratosphere.ResourceProperties
+data ProjectGrantFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectgrantfilter.html>
+    ProjectGrantFilterProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectgrantfilter.html#cfn-datazone-policygrant-projectgrantfilter-domainunitfilter>
+                                domainUnitFilter :: DomainUnitFilterForProjectProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectGrantFilterProperty ::
+  DomainUnitFilterForProjectProperty -> ProjectGrantFilterProperty
+mkProjectGrantFilterProperty domainUnitFilter
+  = ProjectGrantFilterProperty
+      {haddock_workaround_ = (), domainUnitFilter = domainUnitFilter}
+instance ToResourceProperties ProjectGrantFilterProperty where
+  toResourceProperties ProjectGrantFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.ProjectGrantFilter",
+         supportsTags = Prelude.False,
+         properties = ["DomainUnitFilter" JSON..= domainUnitFilter]}
+instance JSON.ToJSON ProjectGrantFilterProperty where
+  toJSON ProjectGrantFilterProperty {..}
+    = JSON.object ["DomainUnitFilter" JSON..= domainUnitFilter]
+instance Property "DomainUnitFilter" ProjectGrantFilterProperty where
+  type PropertyType "DomainUnitFilter" ProjectGrantFilterProperty = DomainUnitFilterForProjectProperty
+  set newValue ProjectGrantFilterProperty {..}
+    = ProjectGrantFilterProperty {domainUnitFilter = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/ProjectGrantFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.ProjectGrantFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectGrantFilterProperty :: Prelude.Type
+instance ToResourceProperties ProjectGrantFilterProperty
+instance Prelude.Eq ProjectGrantFilterProperty
+instance Prelude.Show ProjectGrantFilterProperty
+instance JSON.ToJSON ProjectGrantFilterProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.DataZone.PolicyGrant.ProjectPolicyGrantPrincipalProperty (
+        module Exports, ProjectPolicyGrantPrincipalProperty(..),
+        mkProjectPolicyGrantPrincipalProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.PolicyGrant.ProjectGrantFilterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectPolicyGrantPrincipalProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectpolicygrantprincipal.html>
+    ProjectPolicyGrantPrincipalProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectpolicygrantprincipal.html#cfn-datazone-policygrant-projectpolicygrantprincipal-projectdesignation>
+                                         projectDesignation :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectpolicygrantprincipal.html#cfn-datazone-policygrant-projectpolicygrantprincipal-projectgrantfilter>
+                                         projectGrantFilter :: (Prelude.Maybe ProjectGrantFilterProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-projectpolicygrantprincipal.html#cfn-datazone-policygrant-projectpolicygrantprincipal-projectidentifier>
+                                         projectIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectPolicyGrantPrincipalProperty ::
+  ProjectPolicyGrantPrincipalProperty
+mkProjectPolicyGrantPrincipalProperty
+  = ProjectPolicyGrantPrincipalProperty
+      {haddock_workaround_ = (), projectDesignation = Prelude.Nothing,
+       projectGrantFilter = Prelude.Nothing,
+       projectIdentifier = Prelude.Nothing}
+instance ToResourceProperties ProjectPolicyGrantPrincipalProperty where
+  toResourceProperties ProjectPolicyGrantPrincipalProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.ProjectPolicyGrantPrincipal",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ProjectDesignation" Prelude.<$> projectDesignation,
+                            (JSON..=) "ProjectGrantFilter" Prelude.<$> projectGrantFilter,
+                            (JSON..=) "ProjectIdentifier" Prelude.<$> projectIdentifier])}
+instance JSON.ToJSON ProjectPolicyGrantPrincipalProperty where
+  toJSON ProjectPolicyGrantPrincipalProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ProjectDesignation" Prelude.<$> projectDesignation,
+               (JSON..=) "ProjectGrantFilter" Prelude.<$> projectGrantFilter,
+               (JSON..=) "ProjectIdentifier" Prelude.<$> projectIdentifier]))
+instance Property "ProjectDesignation" ProjectPolicyGrantPrincipalProperty where
+  type PropertyType "ProjectDesignation" ProjectPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue ProjectPolicyGrantPrincipalProperty {..}
+    = ProjectPolicyGrantPrincipalProperty
+        {projectDesignation = Prelude.pure newValue, ..}
+instance Property "ProjectGrantFilter" ProjectPolicyGrantPrincipalProperty where
+  type PropertyType "ProjectGrantFilter" ProjectPolicyGrantPrincipalProperty = ProjectGrantFilterProperty
+  set newValue ProjectPolicyGrantPrincipalProperty {..}
+    = ProjectPolicyGrantPrincipalProperty
+        {projectGrantFilter = Prelude.pure newValue, ..}
+instance Property "ProjectIdentifier" ProjectPolicyGrantPrincipalProperty where
+  type PropertyType "ProjectIdentifier" ProjectPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue ProjectPolicyGrantPrincipalProperty {..}
+    = ProjectPolicyGrantPrincipalProperty
+        {projectIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/ProjectPolicyGrantPrincipalProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.ProjectPolicyGrantPrincipalProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ProjectPolicyGrantPrincipalProperty :: Prelude.Type
+instance ToResourceProperties ProjectPolicyGrantPrincipalProperty
+instance Prelude.Eq ProjectPolicyGrantPrincipalProperty
+instance Prelude.Show ProjectPolicyGrantPrincipalProperty
+instance JSON.ToJSON ProjectPolicyGrantPrincipalProperty
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs b/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.DataZone.PolicyGrant.UserPolicyGrantPrincipalProperty (
+        UserPolicyGrantPrincipalProperty(..),
+        mkUserPolicyGrantPrincipalProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserPolicyGrantPrincipalProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-userpolicygrantprincipal.html>
+    UserPolicyGrantPrincipalProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-userpolicygrantprincipal.html#cfn-datazone-policygrant-userpolicygrantprincipal-allusersgrantfilter>
+                                      allUsersGrantFilter :: (Prelude.Maybe JSON.Object),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-policygrant-userpolicygrantprincipal.html#cfn-datazone-policygrant-userpolicygrantprincipal-useridentifier>
+                                      userIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserPolicyGrantPrincipalProperty ::
+  UserPolicyGrantPrincipalProperty
+mkUserPolicyGrantPrincipalProperty
+  = UserPolicyGrantPrincipalProperty
+      {haddock_workaround_ = (), allUsersGrantFilter = Prelude.Nothing,
+       userIdentifier = Prelude.Nothing}
+instance ToResourceProperties UserPolicyGrantPrincipalProperty where
+  toResourceProperties UserPolicyGrantPrincipalProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::PolicyGrant.UserPolicyGrantPrincipal",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AllUsersGrantFilter" Prelude.<$> allUsersGrantFilter,
+                            (JSON..=) "UserIdentifier" Prelude.<$> userIdentifier])}
+instance JSON.ToJSON UserPolicyGrantPrincipalProperty where
+  toJSON UserPolicyGrantPrincipalProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AllUsersGrantFilter" Prelude.<$> allUsersGrantFilter,
+               (JSON..=) "UserIdentifier" Prelude.<$> userIdentifier]))
+instance Property "AllUsersGrantFilter" UserPolicyGrantPrincipalProperty where
+  type PropertyType "AllUsersGrantFilter" UserPolicyGrantPrincipalProperty = JSON.Object
+  set newValue UserPolicyGrantPrincipalProperty {..}
+    = UserPolicyGrantPrincipalProperty
+        {allUsersGrantFilter = Prelude.pure newValue, ..}
+instance Property "UserIdentifier" UserPolicyGrantPrincipalProperty where
+  type PropertyType "UserIdentifier" UserPolicyGrantPrincipalProperty = Value Prelude.Text
+  set newValue UserPolicyGrantPrincipalProperty {..}
+    = UserPolicyGrantPrincipalProperty
+        {userIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs-boot b/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/PolicyGrant/UserPolicyGrantPrincipalProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.PolicyGrant.UserPolicyGrantPrincipalProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserPolicyGrantPrincipalProperty :: Prelude.Type
+instance ToResourceProperties UserPolicyGrantPrincipalProperty
+instance Prelude.Eq UserPolicyGrantPrincipalProperty
+instance Prelude.Show UserPolicyGrantPrincipalProperty
+instance JSON.ToJSON UserPolicyGrantPrincipalProperty
diff --git a/gen/Stratosphere/DataZone/Project.hs b/gen/Stratosphere/DataZone/Project.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Project.hs
@@ -0,0 +1,98 @@
+module Stratosphere.DataZone.Project (
+        module Exports, Project(..), mkProject
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Project.EnvironmentConfigurationUserParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Project
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html>
+    Project {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-description>
+             description :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-domainidentifier>
+             domainIdentifier :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-domainunitid>
+             domainUnitId :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-glossaryterms>
+             glossaryTerms :: (Prelude.Maybe (ValueList Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-name>
+             name :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-projectprofileid>
+             projectProfileId :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-projectprofileversion>
+             projectProfileVersion :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-project.html#cfn-datazone-project-userparameters>
+             userParameters :: (Prelude.Maybe [EnvironmentConfigurationUserParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProject :: Value Prelude.Text -> Value Prelude.Text -> Project
+mkProject domainIdentifier name
+  = Project
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       name = name, description = Prelude.Nothing,
+       domainUnitId = Prelude.Nothing, glossaryTerms = Prelude.Nothing,
+       projectProfileId = Prelude.Nothing,
+       projectProfileVersion = Prelude.Nothing,
+       userParameters = Prelude.Nothing}
+instance ToResourceProperties Project where
+  toResourceProperties Project {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Project", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DomainUnitId" Prelude.<$> domainUnitId,
+                               (JSON..=) "GlossaryTerms" Prelude.<$> glossaryTerms,
+                               (JSON..=) "ProjectProfileId" Prelude.<$> projectProfileId,
+                               (JSON..=) "ProjectProfileVersion"
+                                 Prelude.<$> projectProfileVersion,
+                               (JSON..=) "UserParameters" Prelude.<$> userParameters]))}
+instance JSON.ToJSON Project where
+  toJSON Project {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DomainUnitId" Prelude.<$> domainUnitId,
+                  (JSON..=) "GlossaryTerms" Prelude.<$> glossaryTerms,
+                  (JSON..=) "ProjectProfileId" Prelude.<$> projectProfileId,
+                  (JSON..=) "ProjectProfileVersion"
+                    Prelude.<$> projectProfileVersion,
+                  (JSON..=) "UserParameters" Prelude.<$> userParameters])))
+instance Property "Description" Project where
+  type PropertyType "Description" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" Project where
+  type PropertyType "DomainIdentifier" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {domainIdentifier = newValue, ..}
+instance Property "DomainUnitId" Project where
+  type PropertyType "DomainUnitId" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {domainUnitId = Prelude.pure newValue, ..}
+instance Property "GlossaryTerms" Project where
+  type PropertyType "GlossaryTerms" Project = ValueList Prelude.Text
+  set newValue Project {..}
+    = Project {glossaryTerms = Prelude.pure newValue, ..}
+instance Property "Name" Project where
+  type PropertyType "Name" Project = Value Prelude.Text
+  set newValue Project {..} = Project {name = newValue, ..}
+instance Property "ProjectProfileId" Project where
+  type PropertyType "ProjectProfileId" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {projectProfileId = Prelude.pure newValue, ..}
+instance Property "ProjectProfileVersion" Project where
+  type PropertyType "ProjectProfileVersion" Project = Value Prelude.Text
+  set newValue Project {..}
+    = Project {projectProfileVersion = Prelude.pure newValue, ..}
+instance Property "UserParameters" Project where
+  type PropertyType "UserParameters" Project = [EnvironmentConfigurationUserParameterProperty]
+  set newValue Project {..}
+    = Project {userParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs b/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.DataZone.Project.EnvironmentConfigurationUserParameterProperty (
+        module Exports, EnvironmentConfigurationUserParameterProperty(..),
+        mkEnvironmentConfigurationUserParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.Project.EnvironmentParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentConfigurationUserParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentconfigurationuserparameter.html>
+    EnvironmentConfigurationUserParameterProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentconfigurationuserparameter.html#cfn-datazone-project-environmentconfigurationuserparameter-environmentconfigurationname>
+                                                   environmentConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentconfigurationuserparameter.html#cfn-datazone-project-environmentconfigurationuserparameter-environmentid>
+                                                   environmentId :: (Prelude.Maybe (Value Prelude.Text)),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentconfigurationuserparameter.html#cfn-datazone-project-environmentconfigurationuserparameter-environmentparameters>
+                                                   environmentParameters :: (Prelude.Maybe [EnvironmentParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentConfigurationUserParameterProperty ::
+  EnvironmentConfigurationUserParameterProperty
+mkEnvironmentConfigurationUserParameterProperty
+  = EnvironmentConfigurationUserParameterProperty
+      {haddock_workaround_ = (),
+       environmentConfigurationName = Prelude.Nothing,
+       environmentId = Prelude.Nothing,
+       environmentParameters = Prelude.Nothing}
+instance ToResourceProperties EnvironmentConfigurationUserParameterProperty where
+  toResourceProperties
+    EnvironmentConfigurationUserParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Project.EnvironmentConfigurationUserParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EnvironmentConfigurationName"
+                              Prelude.<$> environmentConfigurationName,
+                            (JSON..=) "EnvironmentId" Prelude.<$> environmentId,
+                            (JSON..=) "EnvironmentParameters"
+                              Prelude.<$> environmentParameters])}
+instance JSON.ToJSON EnvironmentConfigurationUserParameterProperty where
+  toJSON EnvironmentConfigurationUserParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EnvironmentConfigurationName"
+                 Prelude.<$> environmentConfigurationName,
+               (JSON..=) "EnvironmentId" Prelude.<$> environmentId,
+               (JSON..=) "EnvironmentParameters"
+                 Prelude.<$> environmentParameters]))
+instance Property "EnvironmentConfigurationName" EnvironmentConfigurationUserParameterProperty where
+  type PropertyType "EnvironmentConfigurationName" EnvironmentConfigurationUserParameterProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationUserParameterProperty {..}
+    = EnvironmentConfigurationUserParameterProperty
+        {environmentConfigurationName = Prelude.pure newValue, ..}
+instance Property "EnvironmentId" EnvironmentConfigurationUserParameterProperty where
+  type PropertyType "EnvironmentId" EnvironmentConfigurationUserParameterProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationUserParameterProperty {..}
+    = EnvironmentConfigurationUserParameterProperty
+        {environmentId = Prelude.pure newValue, ..}
+instance Property "EnvironmentParameters" EnvironmentConfigurationUserParameterProperty where
+  type PropertyType "EnvironmentParameters" EnvironmentConfigurationUserParameterProperty = [EnvironmentParameterProperty]
+  set newValue EnvironmentConfigurationUserParameterProperty {..}
+    = EnvironmentConfigurationUserParameterProperty
+        {environmentParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs-boot b/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Project/EnvironmentConfigurationUserParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Project.EnvironmentConfigurationUserParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentConfigurationUserParameterProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentConfigurationUserParameterProperty
+instance Prelude.Eq EnvironmentConfigurationUserParameterProperty
+instance Prelude.Show EnvironmentConfigurationUserParameterProperty
+instance JSON.ToJSON EnvironmentConfigurationUserParameterProperty
diff --git a/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs b/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.DataZone.Project.EnvironmentParameterProperty (
+        EnvironmentParameterProperty(..), mkEnvironmentParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentparameter.html>
+    EnvironmentParameterProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentparameter.html#cfn-datazone-project-environmentparameter-name>
+                                  name :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-project-environmentparameter.html#cfn-datazone-project-environmentparameter-value>
+                                  value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentParameterProperty :: EnvironmentParameterProperty
+mkEnvironmentParameterProperty
+  = EnvironmentParameterProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties EnvironmentParameterProperty where
+  toResourceProperties EnvironmentParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::Project.EnvironmentParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON EnvironmentParameterProperty where
+  toJSON EnvironmentParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Name" EnvironmentParameterProperty where
+  type PropertyType "Name" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {name = Prelude.pure newValue, ..}
+instance Property "Value" EnvironmentParameterProperty where
+  type PropertyType "Value" EnvironmentParameterProperty = Value Prelude.Text
+  set newValue EnvironmentParameterProperty {..}
+    = EnvironmentParameterProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs-boot b/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/Project/EnvironmentParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.Project.EnvironmentParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentParameterProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentParameterProperty
+instance Prelude.Eq EnvironmentParameterProperty
+instance Prelude.Show EnvironmentParameterProperty
+instance JSON.ToJSON EnvironmentParameterProperty
diff --git a/gen/Stratosphere/DataZone/ProjectMembership.hs b/gen/Stratosphere/DataZone/ProjectMembership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectMembership.hs
@@ -0,0 +1,66 @@
+module Stratosphere.DataZone.ProjectMembership (
+        module Exports, ProjectMembership(..), mkProjectMembership
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectMembership.MemberProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectMembership
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectmembership.html>
+    ProjectMembership {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectmembership.html#cfn-datazone-projectmembership-designation>
+                       designation :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectmembership.html#cfn-datazone-projectmembership-domainidentifier>
+                       domainIdentifier :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectmembership.html#cfn-datazone-projectmembership-member>
+                       member :: MemberProperty,
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectmembership.html#cfn-datazone-projectmembership-projectidentifier>
+                       projectIdentifier :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectMembership ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> MemberProperty -> Value Prelude.Text -> ProjectMembership
+mkProjectMembership
+  designation
+  domainIdentifier
+  member
+  projectIdentifier
+  = ProjectMembership
+      {haddock_workaround_ = (), designation = designation,
+       domainIdentifier = domainIdentifier, member = member,
+       projectIdentifier = projectIdentifier}
+instance ToResourceProperties ProjectMembership where
+  toResourceProperties ProjectMembership {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectMembership",
+         supportsTags = Prelude.False,
+         properties = ["Designation" JSON..= designation,
+                       "DomainIdentifier" JSON..= domainIdentifier,
+                       "Member" JSON..= member,
+                       "ProjectIdentifier" JSON..= projectIdentifier]}
+instance JSON.ToJSON ProjectMembership where
+  toJSON ProjectMembership {..}
+    = JSON.object
+        ["Designation" JSON..= designation,
+         "DomainIdentifier" JSON..= domainIdentifier,
+         "Member" JSON..= member,
+         "ProjectIdentifier" JSON..= projectIdentifier]
+instance Property "Designation" ProjectMembership where
+  type PropertyType "Designation" ProjectMembership = Value Prelude.Text
+  set newValue ProjectMembership {..}
+    = ProjectMembership {designation = newValue, ..}
+instance Property "DomainIdentifier" ProjectMembership where
+  type PropertyType "DomainIdentifier" ProjectMembership = Value Prelude.Text
+  set newValue ProjectMembership {..}
+    = ProjectMembership {domainIdentifier = newValue, ..}
+instance Property "Member" ProjectMembership where
+  type PropertyType "Member" ProjectMembership = MemberProperty
+  set newValue ProjectMembership {..}
+    = ProjectMembership {member = newValue, ..}
+instance Property "ProjectIdentifier" ProjectMembership where
+  type PropertyType "ProjectIdentifier" ProjectMembership = Value Prelude.Text
+  set newValue ProjectMembership {..}
+    = ProjectMembership {projectIdentifier = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs b/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.DataZone.ProjectMembership.MemberProperty (
+        MemberProperty(..), mkMemberProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MemberProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectmembership-member.html>
+    MemberProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectmembership-member.html#cfn-datazone-projectmembership-member-groupidentifier>
+                    groupIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectmembership-member.html#cfn-datazone-projectmembership-member-useridentifier>
+                    userIdentifier :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMemberProperty :: MemberProperty
+mkMemberProperty
+  = MemberProperty
+      {haddock_workaround_ = (), groupIdentifier = Prelude.Nothing,
+       userIdentifier = Prelude.Nothing}
+instance ToResourceProperties MemberProperty where
+  toResourceProperties MemberProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectMembership.Member",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GroupIdentifier" Prelude.<$> groupIdentifier,
+                            (JSON..=) "UserIdentifier" Prelude.<$> userIdentifier])}
+instance JSON.ToJSON MemberProperty where
+  toJSON MemberProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GroupIdentifier" Prelude.<$> groupIdentifier,
+               (JSON..=) "UserIdentifier" Prelude.<$> userIdentifier]))
+instance Property "GroupIdentifier" MemberProperty where
+  type PropertyType "GroupIdentifier" MemberProperty = Value Prelude.Text
+  set newValue MemberProperty {..}
+    = MemberProperty {groupIdentifier = Prelude.pure newValue, ..}
+instance Property "UserIdentifier" MemberProperty where
+  type PropertyType "UserIdentifier" MemberProperty = Value Prelude.Text
+  set newValue MemberProperty {..}
+    = MemberProperty {userIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectMembership/MemberProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectMembership.MemberProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MemberProperty :: Prelude.Type
+instance ToResourceProperties MemberProperty
+instance Prelude.Eq MemberProperty
+instance Prelude.Show MemberProperty
+instance JSON.ToJSON MemberProperty
diff --git a/gen/Stratosphere/DataZone/ProjectProfile.hs b/gen/Stratosphere/DataZone/ProjectProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile.hs
@@ -0,0 +1,86 @@
+module Stratosphere.DataZone.ProjectProfile (
+        module Exports, ProjectProfile(..), mkProjectProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ProjectProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html>
+    ProjectProfile {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-description>
+                    description :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-domainidentifier>
+                    domainIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-domainunitidentifier>
+                    domainUnitIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-environmentconfigurations>
+                    environmentConfigurations :: (Prelude.Maybe [EnvironmentConfigurationProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-name>
+                    name :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-projectprofile.html#cfn-datazone-projectprofile-status>
+                    status :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProjectProfile :: Value Prelude.Text -> ProjectProfile
+mkProjectProfile name
+  = ProjectProfile
+      {haddock_workaround_ = (), name = name,
+       description = Prelude.Nothing, domainIdentifier = Prelude.Nothing,
+       domainUnitIdentifier = Prelude.Nothing,
+       environmentConfigurations = Prelude.Nothing,
+       status = Prelude.Nothing}
+instance ToResourceProperties ProjectProfile where
+  toResourceProperties ProjectProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DomainIdentifier" Prelude.<$> domainIdentifier,
+                               (JSON..=) "DomainUnitIdentifier" Prelude.<$> domainUnitIdentifier,
+                               (JSON..=) "EnvironmentConfigurations"
+                                 Prelude.<$> environmentConfigurations,
+                               (JSON..=) "Status" Prelude.<$> status]))}
+instance JSON.ToJSON ProjectProfile where
+  toJSON ProjectProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DomainIdentifier" Prelude.<$> domainIdentifier,
+                  (JSON..=) "DomainUnitIdentifier" Prelude.<$> domainUnitIdentifier,
+                  (JSON..=) "EnvironmentConfigurations"
+                    Prelude.<$> environmentConfigurations,
+                  (JSON..=) "Status" Prelude.<$> status])))
+instance Property "Description" ProjectProfile where
+  type PropertyType "Description" ProjectProfile = Value Prelude.Text
+  set newValue ProjectProfile {..}
+    = ProjectProfile {description = Prelude.pure newValue, ..}
+instance Property "DomainIdentifier" ProjectProfile where
+  type PropertyType "DomainIdentifier" ProjectProfile = Value Prelude.Text
+  set newValue ProjectProfile {..}
+    = ProjectProfile {domainIdentifier = Prelude.pure newValue, ..}
+instance Property "DomainUnitIdentifier" ProjectProfile where
+  type PropertyType "DomainUnitIdentifier" ProjectProfile = Value Prelude.Text
+  set newValue ProjectProfile {..}
+    = ProjectProfile {domainUnitIdentifier = Prelude.pure newValue, ..}
+instance Property "EnvironmentConfigurations" ProjectProfile where
+  type PropertyType "EnvironmentConfigurations" ProjectProfile = [EnvironmentConfigurationProperty]
+  set newValue ProjectProfile {..}
+    = ProjectProfile
+        {environmentConfigurations = Prelude.pure newValue, ..}
+instance Property "Name" ProjectProfile where
+  type PropertyType "Name" ProjectProfile = Value Prelude.Text
+  set newValue ProjectProfile {..}
+    = ProjectProfile {name = newValue, ..}
+instance Property "Status" ProjectProfile where
+  type PropertyType "Status" ProjectProfile = Value Prelude.Text
+  set newValue ProjectProfile {..}
+    = ProjectProfile {status = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs b/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.DataZone.ProjectProfile.AwsAccountProperty (
+        AwsAccountProperty(..), mkAwsAccountProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AwsAccountProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-awsaccount.html>
+    AwsAccountProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-awsaccount.html#cfn-datazone-projectprofile-awsaccount-awsaccountid>
+                        awsAccountId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAwsAccountProperty :: Value Prelude.Text -> AwsAccountProperty
+mkAwsAccountProperty awsAccountId
+  = AwsAccountProperty
+      {haddock_workaround_ = (), awsAccountId = awsAccountId}
+instance ToResourceProperties AwsAccountProperty where
+  toResourceProperties AwsAccountProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile.AwsAccount",
+         supportsTags = Prelude.False,
+         properties = ["AwsAccountId" JSON..= awsAccountId]}
+instance JSON.ToJSON AwsAccountProperty where
+  toJSON AwsAccountProperty {..}
+    = JSON.object ["AwsAccountId" JSON..= awsAccountId]
+instance Property "AwsAccountId" AwsAccountProperty where
+  type PropertyType "AwsAccountId" AwsAccountProperty = Value Prelude.Text
+  set newValue AwsAccountProperty {..}
+    = AwsAccountProperty {awsAccountId = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/AwsAccountProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectProfile.AwsAccountProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AwsAccountProperty :: Prelude.Type
+instance ToResourceProperties AwsAccountProperty
+instance Prelude.Eq AwsAccountProperty
+instance Prelude.Show AwsAccountProperty
+instance JSON.ToJSON AwsAccountProperty
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParameterProperty (
+        EnvironmentConfigurationParameterProperty(..),
+        mkEnvironmentConfigurationParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentConfigurationParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparameter.html>
+    EnvironmentConfigurationParameterProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparameter.html#cfn-datazone-projectprofile-environmentconfigurationparameter-iseditable>
+                                               isEditable :: (Prelude.Maybe (Value Prelude.Bool)),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparameter.html#cfn-datazone-projectprofile-environmentconfigurationparameter-name>
+                                               name :: (Prelude.Maybe (Value Prelude.Text)),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparameter.html#cfn-datazone-projectprofile-environmentconfigurationparameter-value>
+                                               value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentConfigurationParameterProperty ::
+  EnvironmentConfigurationParameterProperty
+mkEnvironmentConfigurationParameterProperty
+  = EnvironmentConfigurationParameterProperty
+      {haddock_workaround_ = (), isEditable = Prelude.Nothing,
+       name = Prelude.Nothing, value = Prelude.Nothing}
+instance ToResourceProperties EnvironmentConfigurationParameterProperty where
+  toResourceProperties EnvironmentConfigurationParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile.EnvironmentConfigurationParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IsEditable" Prelude.<$> isEditable,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON EnvironmentConfigurationParameterProperty where
+  toJSON EnvironmentConfigurationParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IsEditable" Prelude.<$> isEditable,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "IsEditable" EnvironmentConfigurationParameterProperty where
+  type PropertyType "IsEditable" EnvironmentConfigurationParameterProperty = Value Prelude.Bool
+  set newValue EnvironmentConfigurationParameterProperty {..}
+    = EnvironmentConfigurationParameterProperty
+        {isEditable = Prelude.pure newValue, ..}
+instance Property "Name" EnvironmentConfigurationParameterProperty where
+  type PropertyType "Name" EnvironmentConfigurationParameterProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationParameterProperty {..}
+    = EnvironmentConfigurationParameterProperty
+        {name = Prelude.pure newValue, ..}
+instance Property "Value" EnvironmentConfigurationParameterProperty where
+  type PropertyType "Value" EnvironmentConfigurationParameterProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationParameterProperty {..}
+    = EnvironmentConfigurationParameterProperty
+        {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentConfigurationParameterProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentConfigurationParameterProperty
+instance Prelude.Eq EnvironmentConfigurationParameterProperty
+instance Prelude.Show EnvironmentConfigurationParameterProperty
+instance JSON.ToJSON EnvironmentConfigurationParameterProperty
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParametersDetailsProperty (
+        module Exports,
+        EnvironmentConfigurationParametersDetailsProperty(..),
+        mkEnvironmentConfigurationParametersDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentConfigurationParametersDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparametersdetails.html>
+    EnvironmentConfigurationParametersDetailsProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparametersdetails.html#cfn-datazone-projectprofile-environmentconfigurationparametersdetails-parameteroverrides>
+                                                       parameterOverrides :: (Prelude.Maybe [EnvironmentConfigurationParameterProperty]),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparametersdetails.html#cfn-datazone-projectprofile-environmentconfigurationparametersdetails-resolvedparameters>
+                                                       resolvedParameters :: (Prelude.Maybe [EnvironmentConfigurationParameterProperty]),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfigurationparametersdetails.html#cfn-datazone-projectprofile-environmentconfigurationparametersdetails-ssmpath>
+                                                       ssmPath :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentConfigurationParametersDetailsProperty ::
+  EnvironmentConfigurationParametersDetailsProperty
+mkEnvironmentConfigurationParametersDetailsProperty
+  = EnvironmentConfigurationParametersDetailsProperty
+      {haddock_workaround_ = (), parameterOverrides = Prelude.Nothing,
+       resolvedParameters = Prelude.Nothing, ssmPath = Prelude.Nothing}
+instance ToResourceProperties EnvironmentConfigurationParametersDetailsProperty where
+  toResourceProperties
+    EnvironmentConfigurationParametersDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile.EnvironmentConfigurationParametersDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ParameterOverrides" Prelude.<$> parameterOverrides,
+                            (JSON..=) "ResolvedParameters" Prelude.<$> resolvedParameters,
+                            (JSON..=) "SsmPath" Prelude.<$> ssmPath])}
+instance JSON.ToJSON EnvironmentConfigurationParametersDetailsProperty where
+  toJSON EnvironmentConfigurationParametersDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ParameterOverrides" Prelude.<$> parameterOverrides,
+               (JSON..=) "ResolvedParameters" Prelude.<$> resolvedParameters,
+               (JSON..=) "SsmPath" Prelude.<$> ssmPath]))
+instance Property "ParameterOverrides" EnvironmentConfigurationParametersDetailsProperty where
+  type PropertyType "ParameterOverrides" EnvironmentConfigurationParametersDetailsProperty = [EnvironmentConfigurationParameterProperty]
+  set newValue EnvironmentConfigurationParametersDetailsProperty {..}
+    = EnvironmentConfigurationParametersDetailsProperty
+        {parameterOverrides = Prelude.pure newValue, ..}
+instance Property "ResolvedParameters" EnvironmentConfigurationParametersDetailsProperty where
+  type PropertyType "ResolvedParameters" EnvironmentConfigurationParametersDetailsProperty = [EnvironmentConfigurationParameterProperty]
+  set newValue EnvironmentConfigurationParametersDetailsProperty {..}
+    = EnvironmentConfigurationParametersDetailsProperty
+        {resolvedParameters = Prelude.pure newValue, ..}
+instance Property "SsmPath" EnvironmentConfigurationParametersDetailsProperty where
+  type PropertyType "SsmPath" EnvironmentConfigurationParametersDetailsProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationParametersDetailsProperty {..}
+    = EnvironmentConfigurationParametersDetailsProperty
+        {ssmPath = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationParametersDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParametersDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentConfigurationParametersDetailsProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentConfigurationParametersDetailsProperty
+instance Prelude.Eq EnvironmentConfigurationParametersDetailsProperty
+instance Prelude.Show EnvironmentConfigurationParametersDetailsProperty
+instance JSON.ToJSON EnvironmentConfigurationParametersDetailsProperty
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs
@@ -0,0 +1,129 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationProperty (
+        module Exports, EnvironmentConfigurationProperty(..),
+        mkEnvironmentConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectProfile.AwsAccountProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParametersDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.ProjectProfile.RegionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EnvironmentConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html>
+    EnvironmentConfigurationProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-awsaccount>
+                                      awsAccount :: (Prelude.Maybe AwsAccountProperty),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-awsregion>
+                                      awsRegion :: RegionProperty,
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-configurationparameters>
+                                      configurationParameters :: (Prelude.Maybe EnvironmentConfigurationParametersDetailsProperty),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-deploymentmode>
+                                      deploymentMode :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-deploymentorder>
+                                      deploymentOrder :: (Prelude.Maybe (Value Prelude.Double)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-description>
+                                      description :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-environmentblueprintid>
+                                      environmentBlueprintId :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-environmentconfigurationid>
+                                      environmentConfigurationId :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-environmentconfiguration.html#cfn-datazone-projectprofile-environmentconfiguration-name>
+                                      name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEnvironmentConfigurationProperty ::
+  RegionProperty
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> EnvironmentConfigurationProperty
+mkEnvironmentConfigurationProperty
+  awsRegion
+  environmentBlueprintId
+  name
+  = EnvironmentConfigurationProperty
+      {haddock_workaround_ = (), awsRegion = awsRegion,
+       environmentBlueprintId = environmentBlueprintId, name = name,
+       awsAccount = Prelude.Nothing,
+       configurationParameters = Prelude.Nothing,
+       deploymentMode = Prelude.Nothing,
+       deploymentOrder = Prelude.Nothing, description = Prelude.Nothing,
+       environmentConfigurationId = Prelude.Nothing}
+instance ToResourceProperties EnvironmentConfigurationProperty where
+  toResourceProperties EnvironmentConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile.EnvironmentConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AwsRegion" JSON..= awsRegion,
+                            "EnvironmentBlueprintId" JSON..= environmentBlueprintId,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AwsAccount" Prelude.<$> awsAccount,
+                               (JSON..=) "ConfigurationParameters"
+                                 Prelude.<$> configurationParameters,
+                               (JSON..=) "DeploymentMode" Prelude.<$> deploymentMode,
+                               (JSON..=) "DeploymentOrder" Prelude.<$> deploymentOrder,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EnvironmentConfigurationId"
+                                 Prelude.<$> environmentConfigurationId]))}
+instance JSON.ToJSON EnvironmentConfigurationProperty where
+  toJSON EnvironmentConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AwsRegion" JSON..= awsRegion,
+               "EnvironmentBlueprintId" JSON..= environmentBlueprintId,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AwsAccount" Prelude.<$> awsAccount,
+                  (JSON..=) "ConfigurationParameters"
+                    Prelude.<$> configurationParameters,
+                  (JSON..=) "DeploymentMode" Prelude.<$> deploymentMode,
+                  (JSON..=) "DeploymentOrder" Prelude.<$> deploymentOrder,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EnvironmentConfigurationId"
+                    Prelude.<$> environmentConfigurationId])))
+instance Property "AwsAccount" EnvironmentConfigurationProperty where
+  type PropertyType "AwsAccount" EnvironmentConfigurationProperty = AwsAccountProperty
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {awsAccount = Prelude.pure newValue, ..}
+instance Property "AwsRegion" EnvironmentConfigurationProperty where
+  type PropertyType "AwsRegion" EnvironmentConfigurationProperty = RegionProperty
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty {awsRegion = newValue, ..}
+instance Property "ConfigurationParameters" EnvironmentConfigurationProperty where
+  type PropertyType "ConfigurationParameters" EnvironmentConfigurationProperty = EnvironmentConfigurationParametersDetailsProperty
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {configurationParameters = Prelude.pure newValue, ..}
+instance Property "DeploymentMode" EnvironmentConfigurationProperty where
+  type PropertyType "DeploymentMode" EnvironmentConfigurationProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {deploymentMode = Prelude.pure newValue, ..}
+instance Property "DeploymentOrder" EnvironmentConfigurationProperty where
+  type PropertyType "DeploymentOrder" EnvironmentConfigurationProperty = Value Prelude.Double
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {deploymentOrder = Prelude.pure newValue, ..}
+instance Property "Description" EnvironmentConfigurationProperty where
+  type PropertyType "Description" EnvironmentConfigurationProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "EnvironmentBlueprintId" EnvironmentConfigurationProperty where
+  type PropertyType "EnvironmentBlueprintId" EnvironmentConfigurationProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {environmentBlueprintId = newValue, ..}
+instance Property "EnvironmentConfigurationId" EnvironmentConfigurationProperty where
+  type PropertyType "EnvironmentConfigurationId" EnvironmentConfigurationProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty
+        {environmentConfigurationId = Prelude.pure newValue, ..}
+instance Property "Name" EnvironmentConfigurationProperty where
+  type PropertyType "Name" EnvironmentConfigurationProperty = Value Prelude.Text
+  set newValue EnvironmentConfigurationProperty {..}
+    = EnvironmentConfigurationProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/EnvironmentConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EnvironmentConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EnvironmentConfigurationProperty
+instance Prelude.Eq EnvironmentConfigurationProperty
+instance Prelude.Show EnvironmentConfigurationProperty
+instance JSON.ToJSON EnvironmentConfigurationProperty
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs b/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.DataZone.ProjectProfile.RegionProperty (
+        RegionProperty(..), mkRegionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RegionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-region.html>
+    RegionProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-projectprofile-region.html#cfn-datazone-projectprofile-region-regionname>
+                    regionName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegionProperty :: Value Prelude.Text -> RegionProperty
+mkRegionProperty regionName
+  = RegionProperty
+      {haddock_workaround_ = (), regionName = regionName}
+instance ToResourceProperties RegionProperty where
+  toResourceProperties RegionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::ProjectProfile.Region",
+         supportsTags = Prelude.False,
+         properties = ["RegionName" JSON..= regionName]}
+instance JSON.ToJSON RegionProperty where
+  toJSON RegionProperty {..}
+    = JSON.object ["RegionName" JSON..= regionName]
+instance Property "RegionName" RegionProperty where
+  type PropertyType "RegionName" RegionProperty = Value Prelude.Text
+  set newValue RegionProperty {..}
+    = RegionProperty {regionName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs-boot b/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/ProjectProfile/RegionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.ProjectProfile.RegionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RegionProperty :: Prelude.Type
+instance ToResourceProperties RegionProperty
+instance Prelude.Eq RegionProperty
+instance Prelude.Show RegionProperty
+instance JSON.ToJSON RegionProperty
diff --git a/gen/Stratosphere/DataZone/SubscriptionTarget.hs b/gen/Stratosphere/DataZone/SubscriptionTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/SubscriptionTarget.hs
@@ -0,0 +1,123 @@
+module Stratosphere.DataZone.SubscriptionTarget (
+        module Exports, SubscriptionTarget(..), mkSubscriptionTarget
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.SubscriptionTarget.SubscriptionTargetFormProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SubscriptionTarget
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html>
+    SubscriptionTarget {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-applicableassettypes>
+                        applicableAssetTypes :: (ValueList Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-authorizedprincipals>
+                        authorizedPrincipals :: (ValueList Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-domainidentifier>
+                        domainIdentifier :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-environmentidentifier>
+                        environmentIdentifier :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-manageaccessrole>
+                        manageAccessRole :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-provider>
+                        provider :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-subscriptiontargetconfig>
+                        subscriptionTargetConfig :: [SubscriptionTargetFormProperty],
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-subscriptiontarget.html#cfn-datazone-subscriptiontarget-type>
+                        type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubscriptionTarget ::
+  ValueList Prelude.Text
+  -> ValueList Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text
+           -> Value Prelude.Text
+              -> [SubscriptionTargetFormProperty]
+                 -> Value Prelude.Text -> SubscriptionTarget
+mkSubscriptionTarget
+  applicableAssetTypes
+  authorizedPrincipals
+  domainIdentifier
+  environmentIdentifier
+  name
+  subscriptionTargetConfig
+  type'
+  = SubscriptionTarget
+      {haddock_workaround_ = (),
+       applicableAssetTypes = applicableAssetTypes,
+       authorizedPrincipals = authorizedPrincipals,
+       domainIdentifier = domainIdentifier,
+       environmentIdentifier = environmentIdentifier, name = name,
+       subscriptionTargetConfig = subscriptionTargetConfig, type' = type',
+       manageAccessRole = Prelude.Nothing, provider = Prelude.Nothing}
+instance ToResourceProperties SubscriptionTarget where
+  toResourceProperties SubscriptionTarget {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::SubscriptionTarget",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicableAssetTypes" JSON..= applicableAssetTypes,
+                            "AuthorizedPrincipals" JSON..= authorizedPrincipals,
+                            "DomainIdentifier" JSON..= domainIdentifier,
+                            "EnvironmentIdentifier" JSON..= environmentIdentifier,
+                            "Name" JSON..= name,
+                            "SubscriptionTargetConfig" JSON..= subscriptionTargetConfig,
+                            "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "ManageAccessRole" Prelude.<$> manageAccessRole,
+                               (JSON..=) "Provider" Prelude.<$> provider]))}
+instance JSON.ToJSON SubscriptionTarget where
+  toJSON SubscriptionTarget {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicableAssetTypes" JSON..= applicableAssetTypes,
+               "AuthorizedPrincipals" JSON..= authorizedPrincipals,
+               "DomainIdentifier" JSON..= domainIdentifier,
+               "EnvironmentIdentifier" JSON..= environmentIdentifier,
+               "Name" JSON..= name,
+               "SubscriptionTargetConfig" JSON..= subscriptionTargetConfig,
+               "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "ManageAccessRole" Prelude.<$> manageAccessRole,
+                  (JSON..=) "Provider" Prelude.<$> provider])))
+instance Property "ApplicableAssetTypes" SubscriptionTarget where
+  type PropertyType "ApplicableAssetTypes" SubscriptionTarget = ValueList Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {applicableAssetTypes = newValue, ..}
+instance Property "AuthorizedPrincipals" SubscriptionTarget where
+  type PropertyType "AuthorizedPrincipals" SubscriptionTarget = ValueList Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {authorizedPrincipals = newValue, ..}
+instance Property "DomainIdentifier" SubscriptionTarget where
+  type PropertyType "DomainIdentifier" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {domainIdentifier = newValue, ..}
+instance Property "EnvironmentIdentifier" SubscriptionTarget where
+  type PropertyType "EnvironmentIdentifier" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {environmentIdentifier = newValue, ..}
+instance Property "ManageAccessRole" SubscriptionTarget where
+  type PropertyType "ManageAccessRole" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {manageAccessRole = Prelude.pure newValue, ..}
+instance Property "Name" SubscriptionTarget where
+  type PropertyType "Name" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {name = newValue, ..}
+instance Property "Provider" SubscriptionTarget where
+  type PropertyType "Provider" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {provider = Prelude.pure newValue, ..}
+instance Property "SubscriptionTargetConfig" SubscriptionTarget where
+  type PropertyType "SubscriptionTargetConfig" SubscriptionTarget = [SubscriptionTargetFormProperty]
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {subscriptionTargetConfig = newValue, ..}
+instance Property "Type" SubscriptionTarget where
+  type PropertyType "Type" SubscriptionTarget = Value Prelude.Text
+  set newValue SubscriptionTarget {..}
+    = SubscriptionTarget {type' = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs b/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.DataZone.SubscriptionTarget.SubscriptionTargetFormProperty (
+        SubscriptionTargetFormProperty(..),
+        mkSubscriptionTargetFormProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SubscriptionTargetFormProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-subscriptiontarget-subscriptiontargetform.html>
+    SubscriptionTargetFormProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-subscriptiontarget-subscriptiontargetform.html#cfn-datazone-subscriptiontarget-subscriptiontargetform-content>
+                                    content :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-subscriptiontarget-subscriptiontargetform.html#cfn-datazone-subscriptiontarget-subscriptiontargetform-formname>
+                                    formName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubscriptionTargetFormProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SubscriptionTargetFormProperty
+mkSubscriptionTargetFormProperty content formName
+  = SubscriptionTargetFormProperty
+      {haddock_workaround_ = (), content = content, formName = formName}
+instance ToResourceProperties SubscriptionTargetFormProperty where
+  toResourceProperties SubscriptionTargetFormProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::SubscriptionTarget.SubscriptionTargetForm",
+         supportsTags = Prelude.False,
+         properties = ["Content" JSON..= content,
+                       "FormName" JSON..= formName]}
+instance JSON.ToJSON SubscriptionTargetFormProperty where
+  toJSON SubscriptionTargetFormProperty {..}
+    = JSON.object
+        ["Content" JSON..= content, "FormName" JSON..= formName]
+instance Property "Content" SubscriptionTargetFormProperty where
+  type PropertyType "Content" SubscriptionTargetFormProperty = Value Prelude.Text
+  set newValue SubscriptionTargetFormProperty {..}
+    = SubscriptionTargetFormProperty {content = newValue, ..}
+instance Property "FormName" SubscriptionTargetFormProperty where
+  type PropertyType "FormName" SubscriptionTargetFormProperty = Value Prelude.Text
+  set newValue SubscriptionTargetFormProperty {..}
+    = SubscriptionTargetFormProperty {formName = newValue, ..}
diff --git a/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs-boot b/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/SubscriptionTarget/SubscriptionTargetFormProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.SubscriptionTarget.SubscriptionTargetFormProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SubscriptionTargetFormProperty :: Prelude.Type
+instance ToResourceProperties SubscriptionTargetFormProperty
+instance Prelude.Eq SubscriptionTargetFormProperty
+instance Prelude.Show SubscriptionTargetFormProperty
+instance JSON.ToJSON SubscriptionTargetFormProperty
diff --git a/gen/Stratosphere/DataZone/UserProfile.hs b/gen/Stratosphere/DataZone/UserProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile.hs
@@ -0,0 +1,65 @@
+module Stratosphere.DataZone.UserProfile (
+        UserProfile(..), mkUserProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-userprofile.html>
+    UserProfile {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-userprofile.html#cfn-datazone-userprofile-domainidentifier>
+                 domainIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-userprofile.html#cfn-datazone-userprofile-status>
+                 status :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-userprofile.html#cfn-datazone-userprofile-useridentifier>
+                 userIdentifier :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datazone-userprofile.html#cfn-datazone-userprofile-usertype>
+                 userType :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserProfile ::
+  Value Prelude.Text -> Value Prelude.Text -> UserProfile
+mkUserProfile domainIdentifier userIdentifier
+  = UserProfile
+      {haddock_workaround_ = (), domainIdentifier = domainIdentifier,
+       userIdentifier = userIdentifier, status = Prelude.Nothing,
+       userType = Prelude.Nothing}
+instance ToResourceProperties UserProfile where
+  toResourceProperties UserProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::UserProfile",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainIdentifier" JSON..= domainIdentifier,
+                            "UserIdentifier" JSON..= userIdentifier]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Status" Prelude.<$> status,
+                               (JSON..=) "UserType" Prelude.<$> userType]))}
+instance JSON.ToJSON UserProfile where
+  toJSON UserProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainIdentifier" JSON..= domainIdentifier,
+               "UserIdentifier" JSON..= userIdentifier]
+              (Prelude.catMaybes
+                 [(JSON..=) "Status" Prelude.<$> status,
+                  (JSON..=) "UserType" Prelude.<$> userType])))
+instance Property "DomainIdentifier" UserProfile where
+  type PropertyType "DomainIdentifier" UserProfile = Value Prelude.Text
+  set newValue UserProfile {..}
+    = UserProfile {domainIdentifier = newValue, ..}
+instance Property "Status" UserProfile where
+  type PropertyType "Status" UserProfile = Value Prelude.Text
+  set newValue UserProfile {..}
+    = UserProfile {status = Prelude.pure newValue, ..}
+instance Property "UserIdentifier" UserProfile where
+  type PropertyType "UserIdentifier" UserProfile = Value Prelude.Text
+  set newValue UserProfile {..}
+    = UserProfile {userIdentifier = newValue, ..}
+instance Property "UserType" UserProfile where
+  type PropertyType "UserType" UserProfile = Value Prelude.Text
+  set newValue UserProfile {..}
+    = UserProfile {userType = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs b/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.DataZone.UserProfile.IamUserProfileDetailsProperty (
+        IamUserProfileDetailsProperty(..), mkIamUserProfileDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IamUserProfileDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-iamuserprofiledetails.html>
+    IamUserProfileDetailsProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-iamuserprofiledetails.html#cfn-datazone-userprofile-iamuserprofiledetails-arn>
+                                   arn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIamUserProfileDetailsProperty :: IamUserProfileDetailsProperty
+mkIamUserProfileDetailsProperty
+  = IamUserProfileDetailsProperty
+      {haddock_workaround_ = (), arn = Prelude.Nothing}
+instance ToResourceProperties IamUserProfileDetailsProperty where
+  toResourceProperties IamUserProfileDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::UserProfile.IamUserProfileDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn])}
+instance JSON.ToJSON IamUserProfileDetailsProperty where
+  toJSON IamUserProfileDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn]))
+instance Property "Arn" IamUserProfileDetailsProperty where
+  type PropertyType "Arn" IamUserProfileDetailsProperty = Value Prelude.Text
+  set newValue IamUserProfileDetailsProperty {..}
+    = IamUserProfileDetailsProperty {arn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs-boot b/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/IamUserProfileDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.UserProfile.IamUserProfileDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IamUserProfileDetailsProperty :: Prelude.Type
+instance ToResourceProperties IamUserProfileDetailsProperty
+instance Prelude.Eq IamUserProfileDetailsProperty
+instance Prelude.Show IamUserProfileDetailsProperty
+instance JSON.ToJSON IamUserProfileDetailsProperty
diff --git a/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs b/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.DataZone.UserProfile.SsoUserProfileDetailsProperty (
+        SsoUserProfileDetailsProperty(..), mkSsoUserProfileDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SsoUserProfileDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-ssouserprofiledetails.html>
+    SsoUserProfileDetailsProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-ssouserprofiledetails.html#cfn-datazone-userprofile-ssouserprofiledetails-firstname>
+                                   firstName :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-ssouserprofiledetails.html#cfn-datazone-userprofile-ssouserprofiledetails-lastname>
+                                   lastName :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-ssouserprofiledetails.html#cfn-datazone-userprofile-ssouserprofiledetails-username>
+                                   username :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSsoUserProfileDetailsProperty :: SsoUserProfileDetailsProperty
+mkSsoUserProfileDetailsProperty
+  = SsoUserProfileDetailsProperty
+      {haddock_workaround_ = (), firstName = Prelude.Nothing,
+       lastName = Prelude.Nothing, username = Prelude.Nothing}
+instance ToResourceProperties SsoUserProfileDetailsProperty where
+  toResourceProperties SsoUserProfileDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::UserProfile.SsoUserProfileDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "FirstName" Prelude.<$> firstName,
+                            (JSON..=) "LastName" Prelude.<$> lastName,
+                            (JSON..=) "Username" Prelude.<$> username])}
+instance JSON.ToJSON SsoUserProfileDetailsProperty where
+  toJSON SsoUserProfileDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "FirstName" Prelude.<$> firstName,
+               (JSON..=) "LastName" Prelude.<$> lastName,
+               (JSON..=) "Username" Prelude.<$> username]))
+instance Property "FirstName" SsoUserProfileDetailsProperty where
+  type PropertyType "FirstName" SsoUserProfileDetailsProperty = Value Prelude.Text
+  set newValue SsoUserProfileDetailsProperty {..}
+    = SsoUserProfileDetailsProperty
+        {firstName = Prelude.pure newValue, ..}
+instance Property "LastName" SsoUserProfileDetailsProperty where
+  type PropertyType "LastName" SsoUserProfileDetailsProperty = Value Prelude.Text
+  set newValue SsoUserProfileDetailsProperty {..}
+    = SsoUserProfileDetailsProperty
+        {lastName = Prelude.pure newValue, ..}
+instance Property "Username" SsoUserProfileDetailsProperty where
+  type PropertyType "Username" SsoUserProfileDetailsProperty = Value Prelude.Text
+  set newValue SsoUserProfileDetailsProperty {..}
+    = SsoUserProfileDetailsProperty
+        {username = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs-boot b/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/SsoUserProfileDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.UserProfile.SsoUserProfileDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SsoUserProfileDetailsProperty :: Prelude.Type
+instance ToResourceProperties SsoUserProfileDetailsProperty
+instance Prelude.Eq SsoUserProfileDetailsProperty
+instance Prelude.Show SsoUserProfileDetailsProperty
+instance JSON.ToJSON SsoUserProfileDetailsProperty
diff --git a/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs b/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.DataZone.UserProfile.UserProfileDetailsProperty (
+        module Exports, UserProfileDetailsProperty(..),
+        mkUserProfileDetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.DataZone.UserProfile.IamUserProfileDetailsProperty as Exports
+import {-# SOURCE #-} Stratosphere.DataZone.UserProfile.SsoUserProfileDetailsProperty as Exports
+import Stratosphere.ResourceProperties
+data UserProfileDetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-userprofiledetails.html>
+    UserProfileDetailsProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-userprofiledetails.html#cfn-datazone-userprofile-userprofiledetails-iam>
+                                iam :: (Prelude.Maybe IamUserProfileDetailsProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-userprofile-userprofiledetails.html#cfn-datazone-userprofile-userprofiledetails-sso>
+                                sso :: (Prelude.Maybe SsoUserProfileDetailsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserProfileDetailsProperty :: UserProfileDetailsProperty
+mkUserProfileDetailsProperty
+  = UserProfileDetailsProperty
+      {haddock_workaround_ = (), iam = Prelude.Nothing,
+       sso = Prelude.Nothing}
+instance ToResourceProperties UserProfileDetailsProperty where
+  toResourceProperties UserProfileDetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::DataZone::UserProfile.UserProfileDetails",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Iam" Prelude.<$> iam,
+                            (JSON..=) "Sso" Prelude.<$> sso])}
+instance JSON.ToJSON UserProfileDetailsProperty where
+  toJSON UserProfileDetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Iam" Prelude.<$> iam,
+               (JSON..=) "Sso" Prelude.<$> sso]))
+instance Property "Iam" UserProfileDetailsProperty where
+  type PropertyType "Iam" UserProfileDetailsProperty = IamUserProfileDetailsProperty
+  set newValue UserProfileDetailsProperty {..}
+    = UserProfileDetailsProperty {iam = Prelude.pure newValue, ..}
+instance Property "Sso" UserProfileDetailsProperty where
+  type PropertyType "Sso" UserProfileDetailsProperty = SsoUserProfileDetailsProperty
+  set newValue UserProfileDetailsProperty {..}
+    = UserProfileDetailsProperty {sso = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs-boot b/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/DataZone/UserProfile/UserProfileDetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.DataZone.UserProfile.UserProfileDetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserProfileDetailsProperty :: Prelude.Type
+instance ToResourceProperties UserProfileDetailsProperty
+instance Prelude.Eq UserProfileDetailsProperty
+instance Prelude.Show UserProfileDetailsProperty
+instance JSON.ToJSON UserProfileDetailsProperty
diff --git a/stratosphere-datazone.cabal b/stratosphere-datazone.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-datazone.cabal
@@ -0,0 +1,168 @@
+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-datazone
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS DataZone.
+description:    Integration into stratosphere to generate resources and properties for AWS DataZone
+category:       AWS, Cloud, DataZone
+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.DataZone.Connection
+      Stratosphere.DataZone.Connection.AthenaPropertiesInputProperty
+      Stratosphere.DataZone.Connection.AuthenticationConfigurationInputProperty
+      Stratosphere.DataZone.Connection.AuthorizationCodePropertiesProperty
+      Stratosphere.DataZone.Connection.AwsLocationProperty
+      Stratosphere.DataZone.Connection.BasicAuthenticationCredentialsProperty
+      Stratosphere.DataZone.Connection.ConnectionPropertiesInputProperty
+      Stratosphere.DataZone.Connection.GlueConnectionInputProperty
+      Stratosphere.DataZone.Connection.GlueOAuth2CredentialsProperty
+      Stratosphere.DataZone.Connection.GluePropertiesInputProperty
+      Stratosphere.DataZone.Connection.HyperPodPropertiesInputProperty
+      Stratosphere.DataZone.Connection.IamPropertiesInputProperty
+      Stratosphere.DataZone.Connection.LineageSyncScheduleProperty
+      Stratosphere.DataZone.Connection.OAuth2ClientApplicationProperty
+      Stratosphere.DataZone.Connection.OAuth2PropertiesProperty
+      Stratosphere.DataZone.Connection.PhysicalConnectionRequirementsProperty
+      Stratosphere.DataZone.Connection.RedshiftCredentialsProperty
+      Stratosphere.DataZone.Connection.RedshiftLineageSyncConfigurationInputProperty
+      Stratosphere.DataZone.Connection.RedshiftPropertiesInputProperty
+      Stratosphere.DataZone.Connection.RedshiftStoragePropertiesProperty
+      Stratosphere.DataZone.Connection.S3PropertiesInputProperty
+      Stratosphere.DataZone.Connection.SparkEmrPropertiesInputProperty
+      Stratosphere.DataZone.Connection.SparkGlueArgsProperty
+      Stratosphere.DataZone.Connection.SparkGluePropertiesInputProperty
+      Stratosphere.DataZone.Connection.UsernamePasswordProperty
+      Stratosphere.DataZone.DataSource
+      Stratosphere.DataZone.DataSource.DataSourceConfigurationInputProperty
+      Stratosphere.DataZone.DataSource.FilterExpressionProperty
+      Stratosphere.DataZone.DataSource.FormInputProperty
+      Stratosphere.DataZone.DataSource.GlueRunConfigurationInputProperty
+      Stratosphere.DataZone.DataSource.RecommendationConfigurationProperty
+      Stratosphere.DataZone.DataSource.RedshiftClusterStorageProperty
+      Stratosphere.DataZone.DataSource.RedshiftCredentialConfigurationProperty
+      Stratosphere.DataZone.DataSource.RedshiftRunConfigurationInputProperty
+      Stratosphere.DataZone.DataSource.RedshiftServerlessStorageProperty
+      Stratosphere.DataZone.DataSource.RedshiftStorageProperty
+      Stratosphere.DataZone.DataSource.RelationalFilterConfigurationProperty
+      Stratosphere.DataZone.DataSource.SageMakerRunConfigurationInputProperty
+      Stratosphere.DataZone.DataSource.ScheduleConfigurationProperty
+      Stratosphere.DataZone.Domain
+      Stratosphere.DataZone.Domain.SingleSignOnProperty
+      Stratosphere.DataZone.DomainUnit
+      Stratosphere.DataZone.Environment
+      Stratosphere.DataZone.Environment.EnvironmentParameterProperty
+      Stratosphere.DataZone.EnvironmentActions
+      Stratosphere.DataZone.EnvironmentActions.AwsConsoleLinkParametersProperty
+      Stratosphere.DataZone.EnvironmentBlueprintConfiguration
+      Stratosphere.DataZone.EnvironmentBlueprintConfiguration.LakeFormationConfigurationProperty
+      Stratosphere.DataZone.EnvironmentBlueprintConfiguration.ProvisioningConfigurationProperty
+      Stratosphere.DataZone.EnvironmentBlueprintConfiguration.RegionalParameterProperty
+      Stratosphere.DataZone.EnvironmentProfile
+      Stratosphere.DataZone.EnvironmentProfile.EnvironmentParameterProperty
+      Stratosphere.DataZone.FormType
+      Stratosphere.DataZone.FormType.ModelProperty
+      Stratosphere.DataZone.GroupProfile
+      Stratosphere.DataZone.Owner
+      Stratosphere.DataZone.Owner.OwnerGroupPropertiesProperty
+      Stratosphere.DataZone.Owner.OwnerPropertiesProperty
+      Stratosphere.DataZone.Owner.OwnerUserPropertiesProperty
+      Stratosphere.DataZone.PolicyGrant
+      Stratosphere.DataZone.PolicyGrant.AddToProjectMemberPoolPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateAssetTypePolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateDomainUnitPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateEnvironmentProfilePolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateFormTypePolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateGlossaryPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateProjectFromProjectProfilePolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.CreateProjectPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.DomainUnitFilterForProjectProperty
+      Stratosphere.DataZone.PolicyGrant.DomainUnitGrantFilterProperty
+      Stratosphere.DataZone.PolicyGrant.DomainUnitPolicyGrantPrincipalProperty
+      Stratosphere.DataZone.PolicyGrant.GroupPolicyGrantPrincipalProperty
+      Stratosphere.DataZone.PolicyGrant.OverrideDomainUnitOwnersPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.OverrideProjectOwnersPolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.PolicyGrantDetailProperty
+      Stratosphere.DataZone.PolicyGrant.PolicyGrantPrincipalProperty
+      Stratosphere.DataZone.PolicyGrant.ProjectGrantFilterProperty
+      Stratosphere.DataZone.PolicyGrant.ProjectPolicyGrantPrincipalProperty
+      Stratosphere.DataZone.PolicyGrant.UserPolicyGrantPrincipalProperty
+      Stratosphere.DataZone.Project
+      Stratosphere.DataZone.Project.EnvironmentConfigurationUserParameterProperty
+      Stratosphere.DataZone.Project.EnvironmentParameterProperty
+      Stratosphere.DataZone.ProjectMembership
+      Stratosphere.DataZone.ProjectMembership.MemberProperty
+      Stratosphere.DataZone.ProjectProfile
+      Stratosphere.DataZone.ProjectProfile.AwsAccountProperty
+      Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParameterProperty
+      Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationParametersDetailsProperty
+      Stratosphere.DataZone.ProjectProfile.EnvironmentConfigurationProperty
+      Stratosphere.DataZone.ProjectProfile.RegionProperty
+      Stratosphere.DataZone.SubscriptionTarget
+      Stratosphere.DataZone.SubscriptionTarget.SubscriptionTargetFormProperty
+      Stratosphere.DataZone.UserProfile
+      Stratosphere.DataZone.UserProfile.IamUserProfileDetailsProperty
+      Stratosphere.DataZone.UserProfile.SsoUserProfileDetailsProperty
+      Stratosphere.DataZone.UserProfile.UserProfileDetailsProperty
+  other-modules:
+      Paths_stratosphere_datazone
+  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
