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/Connect/AgentStatus.hs b/gen/Stratosphere/Connect/AgentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/AgentStatus.hs
@@ -0,0 +1,96 @@
+module Stratosphere.Connect.AgentStatus (
+        AgentStatus(..), mkAgentStatus
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data AgentStatus
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html>
+    AgentStatus {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-displayorder>
+                 displayOrder :: (Prelude.Maybe (Value Prelude.Integer)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-instancearn>
+                 instanceArn :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-resetordernumber>
+                 resetOrderNumber :: (Prelude.Maybe (Value Prelude.Bool)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-state>
+                 state :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html#cfn-connect-agentstatus-type>
+                 type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAgentStatus ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> AgentStatus
+mkAgentStatus instanceArn name state
+  = AgentStatus
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       state = state, description = Prelude.Nothing,
+       displayOrder = Prelude.Nothing, resetOrderNumber = Prelude.Nothing,
+       tags = Prelude.Nothing, type' = Prelude.Nothing}
+instance ToResourceProperties AgentStatus where
+  toResourceProperties AgentStatus {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::AgentStatus",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+                            "State" JSON..= state]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DisplayOrder" Prelude.<$> displayOrder,
+                               (JSON..=) "ResetOrderNumber" Prelude.<$> resetOrderNumber,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Type" Prelude.<$> type']))}
+instance JSON.ToJSON AgentStatus where
+  toJSON AgentStatus {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+               "State" JSON..= state]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DisplayOrder" Prelude.<$> displayOrder,
+                  (JSON..=) "ResetOrderNumber" Prelude.<$> resetOrderNumber,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Type" Prelude.<$> type'])))
+instance Property "Description" AgentStatus where
+  type PropertyType "Description" AgentStatus = Value Prelude.Text
+  set newValue AgentStatus {..}
+    = AgentStatus {description = Prelude.pure newValue, ..}
+instance Property "DisplayOrder" AgentStatus where
+  type PropertyType "DisplayOrder" AgentStatus = Value Prelude.Integer
+  set newValue AgentStatus {..}
+    = AgentStatus {displayOrder = Prelude.pure newValue, ..}
+instance Property "InstanceArn" AgentStatus where
+  type PropertyType "InstanceArn" AgentStatus = Value Prelude.Text
+  set newValue AgentStatus {..}
+    = AgentStatus {instanceArn = newValue, ..}
+instance Property "Name" AgentStatus where
+  type PropertyType "Name" AgentStatus = Value Prelude.Text
+  set newValue AgentStatus {..} = AgentStatus {name = newValue, ..}
+instance Property "ResetOrderNumber" AgentStatus where
+  type PropertyType "ResetOrderNumber" AgentStatus = Value Prelude.Bool
+  set newValue AgentStatus {..}
+    = AgentStatus {resetOrderNumber = Prelude.pure newValue, ..}
+instance Property "State" AgentStatus where
+  type PropertyType "State" AgentStatus = Value Prelude.Text
+  set newValue AgentStatus {..} = AgentStatus {state = newValue, ..}
+instance Property "Tags" AgentStatus where
+  type PropertyType "Tags" AgentStatus = [Tag]
+  set newValue AgentStatus {..}
+    = AgentStatus {tags = Prelude.pure newValue, ..}
+instance Property "Type" AgentStatus where
+  type PropertyType "Type" AgentStatus = Value Prelude.Text
+  set newValue AgentStatus {..}
+    = AgentStatus {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/ApprovedOrigin.hs b/gen/Stratosphere/Connect/ApprovedOrigin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/ApprovedOrigin.hs
@@ -0,0 +1,41 @@
+module Stratosphere.Connect.ApprovedOrigin (
+        ApprovedOrigin(..), mkApprovedOrigin
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApprovedOrigin
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-approvedorigin.html>
+    ApprovedOrigin {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-approvedorigin.html#cfn-connect-approvedorigin-instanceid>
+                    instanceId :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-approvedorigin.html#cfn-connect-approvedorigin-origin>
+                    origin :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApprovedOrigin ::
+  Value Prelude.Text -> Value Prelude.Text -> ApprovedOrigin
+mkApprovedOrigin instanceId origin
+  = ApprovedOrigin
+      {haddock_workaround_ = (), instanceId = instanceId,
+       origin = origin}
+instance ToResourceProperties ApprovedOrigin where
+  toResourceProperties ApprovedOrigin {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::ApprovedOrigin",
+         supportsTags = Prelude.False,
+         properties = ["InstanceId" JSON..= instanceId,
+                       "Origin" JSON..= origin]}
+instance JSON.ToJSON ApprovedOrigin where
+  toJSON ApprovedOrigin {..}
+    = JSON.object
+        ["InstanceId" JSON..= instanceId, "Origin" JSON..= origin]
+instance Property "InstanceId" ApprovedOrigin where
+  type PropertyType "InstanceId" ApprovedOrigin = Value Prelude.Text
+  set newValue ApprovedOrigin {..}
+    = ApprovedOrigin {instanceId = newValue, ..}
+instance Property "Origin" ApprovedOrigin where
+  type PropertyType "Origin" ApprovedOrigin = Value Prelude.Text
+  set newValue ApprovedOrigin {..}
+    = ApprovedOrigin {origin = newValue, ..}
diff --git a/gen/Stratosphere/Connect/ContactFlow.hs b/gen/Stratosphere/Connect/ContactFlow.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/ContactFlow.hs
@@ -0,0 +1,87 @@
+module Stratosphere.Connect.ContactFlow (
+        ContactFlow(..), mkContactFlow
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ContactFlow
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html>
+    ContactFlow {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-content>
+                 content :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-instancearn>
+                 instanceArn :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-state>
+                 state :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html#cfn-connect-contactflow-type>
+                 type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkContactFlow ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> ContactFlow
+mkContactFlow content instanceArn name type'
+  = ContactFlow
+      {haddock_workaround_ = (), content = content,
+       instanceArn = instanceArn, name = name, type' = type',
+       description = Prelude.Nothing, state = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties ContactFlow where
+  toResourceProperties ContactFlow {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::ContactFlow",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Content" JSON..= content, "InstanceArn" JSON..= instanceArn,
+                            "Name" JSON..= name, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "State" Prelude.<$> state,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON ContactFlow where
+  toJSON ContactFlow {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Content" JSON..= content, "InstanceArn" JSON..= instanceArn,
+               "Name" JSON..= name, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "State" Prelude.<$> state,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Content" ContactFlow where
+  type PropertyType "Content" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..}
+    = ContactFlow {content = newValue, ..}
+instance Property "Description" ContactFlow where
+  type PropertyType "Description" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..}
+    = ContactFlow {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" ContactFlow where
+  type PropertyType "InstanceArn" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..}
+    = ContactFlow {instanceArn = newValue, ..}
+instance Property "Name" ContactFlow where
+  type PropertyType "Name" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..} = ContactFlow {name = newValue, ..}
+instance Property "State" ContactFlow where
+  type PropertyType "State" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..}
+    = ContactFlow {state = Prelude.pure newValue, ..}
+instance Property "Tags" ContactFlow where
+  type PropertyType "Tags" ContactFlow = [Tag]
+  set newValue ContactFlow {..}
+    = ContactFlow {tags = Prelude.pure newValue, ..}
+instance Property "Type" ContactFlow where
+  type PropertyType "Type" ContactFlow = Value Prelude.Text
+  set newValue ContactFlow {..} = ContactFlow {type' = newValue, ..}
diff --git a/gen/Stratosphere/Connect/ContactFlowModule.hs b/gen/Stratosphere/Connect/ContactFlowModule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/ContactFlowModule.hs
@@ -0,0 +1,82 @@
+module Stratosphere.Connect.ContactFlowModule (
+        ContactFlowModule(..), mkContactFlowModule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data ContactFlowModule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html>
+    ContactFlowModule {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-content>
+                       content :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-description>
+                       description :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-instancearn>
+                       instanceArn :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-name>
+                       name :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-state>
+                       state :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html#cfn-connect-contactflowmodule-tags>
+                       tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkContactFlowModule ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> ContactFlowModule
+mkContactFlowModule content instanceArn name
+  = ContactFlowModule
+      {haddock_workaround_ = (), content = content,
+       instanceArn = instanceArn, name = name,
+       description = Prelude.Nothing, state = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties ContactFlowModule where
+  toResourceProperties ContactFlowModule {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::ContactFlowModule",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Content" JSON..= content, "InstanceArn" JSON..= instanceArn,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "State" Prelude.<$> state,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON ContactFlowModule where
+  toJSON ContactFlowModule {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Content" JSON..= content, "InstanceArn" JSON..= instanceArn,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "State" Prelude.<$> state,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Content" ContactFlowModule where
+  type PropertyType "Content" ContactFlowModule = Value Prelude.Text
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {content = newValue, ..}
+instance Property "Description" ContactFlowModule where
+  type PropertyType "Description" ContactFlowModule = Value Prelude.Text
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" ContactFlowModule where
+  type PropertyType "InstanceArn" ContactFlowModule = Value Prelude.Text
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {instanceArn = newValue, ..}
+instance Property "Name" ContactFlowModule where
+  type PropertyType "Name" ContactFlowModule = Value Prelude.Text
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {name = newValue, ..}
+instance Property "State" ContactFlowModule where
+  type PropertyType "State" ContactFlowModule = Value Prelude.Text
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {state = Prelude.pure newValue, ..}
+instance Property "Tags" ContactFlowModule where
+  type PropertyType "Tags" ContactFlowModule = [Tag]
+  set newValue ContactFlowModule {..}
+    = ContactFlowModule {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/ContactFlowVersion.hs b/gen/Stratosphere/Connect/ContactFlowVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/ContactFlowVersion.hs
@@ -0,0 +1,47 @@
+module Stratosphere.Connect.ContactFlowVersion (
+        ContactFlowVersion(..), mkContactFlowVersion
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ContactFlowVersion
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowversion.html>
+    ContactFlowVersion {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowversion.html#cfn-connect-contactflowversion-contactflowid>
+                        contactFlowId :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowversion.html#cfn-connect-contactflowversion-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkContactFlowVersion :: Value Prelude.Text -> ContactFlowVersion
+mkContactFlowVersion contactFlowId
+  = ContactFlowVersion
+      {haddock_workaround_ = (), contactFlowId = contactFlowId,
+       description = Prelude.Nothing}
+instance ToResourceProperties ContactFlowVersion where
+  toResourceProperties ContactFlowVersion {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::ContactFlowVersion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ContactFlowId" JSON..= contactFlowId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON ContactFlowVersion where
+  toJSON ContactFlowVersion {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ContactFlowId" JSON..= contactFlowId]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description])))
+instance Property "ContactFlowId" ContactFlowVersion where
+  type PropertyType "ContactFlowId" ContactFlowVersion = Value Prelude.Text
+  set newValue ContactFlowVersion {..}
+    = ContactFlowVersion {contactFlowId = newValue, ..}
+instance Property "Description" ContactFlowVersion where
+  type PropertyType "Description" ContactFlowVersion = Value Prelude.Text
+  set newValue ContactFlowVersion {..}
+    = ContactFlowVersion {description = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EmailAddress.hs b/gen/Stratosphere/Connect/EmailAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EmailAddress.hs
@@ -0,0 +1,84 @@
+module Stratosphere.Connect.EmailAddress (
+        module Exports, EmailAddress(..), mkEmailAddress
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EmailAddress.AliasConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EmailAddress
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html>
+    EmailAddress {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-aliasconfigurations>
+                  aliasConfigurations :: (Prelude.Maybe [AliasConfigurationProperty]),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-description>
+                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-displayname>
+                  displayName :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-emailaddress>
+                  emailAddress :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-instancearn>
+                  instanceArn :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html#cfn-connect-emailaddress-tags>
+                  tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEmailAddress ::
+  Value Prelude.Text -> Value Prelude.Text -> EmailAddress
+mkEmailAddress emailAddress instanceArn
+  = EmailAddress
+      {haddock_workaround_ = (), emailAddress = emailAddress,
+       instanceArn = instanceArn, aliasConfigurations = Prelude.Nothing,
+       description = Prelude.Nothing, displayName = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties EmailAddress where
+  toResourceProperties EmailAddress {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EmailAddress",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EmailAddress" JSON..= emailAddress,
+                            "InstanceArn" JSON..= instanceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AliasConfigurations" Prelude.<$> aliasConfigurations,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "DisplayName" Prelude.<$> displayName,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EmailAddress where
+  toJSON EmailAddress {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EmailAddress" JSON..= emailAddress,
+               "InstanceArn" JSON..= instanceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "AliasConfigurations" Prelude.<$> aliasConfigurations,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "DisplayName" Prelude.<$> displayName,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AliasConfigurations" EmailAddress where
+  type PropertyType "AliasConfigurations" EmailAddress = [AliasConfigurationProperty]
+  set newValue EmailAddress {..}
+    = EmailAddress {aliasConfigurations = Prelude.pure newValue, ..}
+instance Property "Description" EmailAddress where
+  type PropertyType "Description" EmailAddress = Value Prelude.Text
+  set newValue EmailAddress {..}
+    = EmailAddress {description = Prelude.pure newValue, ..}
+instance Property "DisplayName" EmailAddress where
+  type PropertyType "DisplayName" EmailAddress = Value Prelude.Text
+  set newValue EmailAddress {..}
+    = EmailAddress {displayName = Prelude.pure newValue, ..}
+instance Property "EmailAddress" EmailAddress where
+  type PropertyType "EmailAddress" EmailAddress = Value Prelude.Text
+  set newValue EmailAddress {..}
+    = EmailAddress {emailAddress = newValue, ..}
+instance Property "InstanceArn" EmailAddress where
+  type PropertyType "InstanceArn" EmailAddress = Value Prelude.Text
+  set newValue EmailAddress {..}
+    = EmailAddress {instanceArn = newValue, ..}
+instance Property "Tags" EmailAddress where
+  type PropertyType "Tags" EmailAddress = [Tag]
+  set newValue EmailAddress {..}
+    = EmailAddress {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs b/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Connect.EmailAddress.AliasConfigurationProperty (
+        AliasConfigurationProperty(..), mkAliasConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AliasConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-emailaddress-aliasconfiguration.html>
+    AliasConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-emailaddress-aliasconfiguration.html#cfn-connect-emailaddress-aliasconfiguration-emailaddressarn>
+                                emailAddressArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAliasConfigurationProperty ::
+  Value Prelude.Text -> AliasConfigurationProperty
+mkAliasConfigurationProperty emailAddressArn
+  = AliasConfigurationProperty
+      {haddock_workaround_ = (), emailAddressArn = emailAddressArn}
+instance ToResourceProperties AliasConfigurationProperty where
+  toResourceProperties AliasConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EmailAddress.AliasConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["EmailAddressArn" JSON..= emailAddressArn]}
+instance JSON.ToJSON AliasConfigurationProperty where
+  toJSON AliasConfigurationProperty {..}
+    = JSON.object ["EmailAddressArn" JSON..= emailAddressArn]
+instance Property "EmailAddressArn" AliasConfigurationProperty where
+  type PropertyType "EmailAddressArn" AliasConfigurationProperty = Value Prelude.Text
+  set newValue AliasConfigurationProperty {..}
+    = AliasConfigurationProperty {emailAddressArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs-boot b/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EmailAddress/AliasConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EmailAddress.AliasConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AliasConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AliasConfigurationProperty
+instance Prelude.Eq AliasConfigurationProperty
+instance Prelude.Show AliasConfigurationProperty
+instance JSON.ToJSON AliasConfigurationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm.hs b/gen/Stratosphere/Connect/EvaluationForm.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm.hs
@@ -0,0 +1,104 @@
+module Stratosphere.Connect.EvaluationForm (
+        module Exports, EvaluationForm(..), mkEvaluationForm
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.AutoEvaluationConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormBaseItemProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.ScoringStrategyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EvaluationForm
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html>
+    EvaluationForm {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-autoevaluationconfiguration>
+                    autoEvaluationConfiguration :: (Prelude.Maybe AutoEvaluationConfigurationProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-description>
+                    description :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-instancearn>
+                    instanceArn :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-items>
+                    items :: [EvaluationFormBaseItemProperty],
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-scoringstrategy>
+                    scoringStrategy :: (Prelude.Maybe ScoringStrategyProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-status>
+                    status :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-tags>
+                    tags :: (Prelude.Maybe [Tag]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html#cfn-connect-evaluationform-title>
+                    title :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationForm ::
+  Value Prelude.Text
+  -> [EvaluationFormBaseItemProperty]
+     -> Value Prelude.Text -> Value Prelude.Text -> EvaluationForm
+mkEvaluationForm instanceArn items status title
+  = EvaluationForm
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       items = items, status = status, title = title,
+       autoEvaluationConfiguration = Prelude.Nothing,
+       description = Prelude.Nothing, scoringStrategy = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties EvaluationForm where
+  toResourceProperties EvaluationForm {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Items" JSON..= items,
+                            "Status" JSON..= status, "Title" JSON..= title]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoEvaluationConfiguration"
+                                 Prelude.<$> autoEvaluationConfiguration,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "ScoringStrategy" Prelude.<$> scoringStrategy,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EvaluationForm where
+  toJSON EvaluationForm {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Items" JSON..= items,
+               "Status" JSON..= status, "Title" JSON..= title]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoEvaluationConfiguration"
+                    Prelude.<$> autoEvaluationConfiguration,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "ScoringStrategy" Prelude.<$> scoringStrategy,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AutoEvaluationConfiguration" EvaluationForm where
+  type PropertyType "AutoEvaluationConfiguration" EvaluationForm = AutoEvaluationConfigurationProperty
+  set newValue EvaluationForm {..}
+    = EvaluationForm
+        {autoEvaluationConfiguration = Prelude.pure newValue, ..}
+instance Property "Description" EvaluationForm where
+  type PropertyType "Description" EvaluationForm = Value Prelude.Text
+  set newValue EvaluationForm {..}
+    = EvaluationForm {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" EvaluationForm where
+  type PropertyType "InstanceArn" EvaluationForm = Value Prelude.Text
+  set newValue EvaluationForm {..}
+    = EvaluationForm {instanceArn = newValue, ..}
+instance Property "Items" EvaluationForm where
+  type PropertyType "Items" EvaluationForm = [EvaluationFormBaseItemProperty]
+  set newValue EvaluationForm {..}
+    = EvaluationForm {items = newValue, ..}
+instance Property "ScoringStrategy" EvaluationForm where
+  type PropertyType "ScoringStrategy" EvaluationForm = ScoringStrategyProperty
+  set newValue EvaluationForm {..}
+    = EvaluationForm {scoringStrategy = Prelude.pure newValue, ..}
+instance Property "Status" EvaluationForm where
+  type PropertyType "Status" EvaluationForm = Value Prelude.Text
+  set newValue EvaluationForm {..}
+    = EvaluationForm {status = newValue, ..}
+instance Property "Tags" EvaluationForm where
+  type PropertyType "Tags" EvaluationForm = [Tag]
+  set newValue EvaluationForm {..}
+    = EvaluationForm {tags = Prelude.pure newValue, ..}
+instance Property "Title" EvaluationForm where
+  type PropertyType "Title" EvaluationForm = Value Prelude.Text
+  set newValue EvaluationForm {..}
+    = EvaluationForm {title = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.Connect.EvaluationForm.AutoEvaluationConfigurationProperty (
+        AutoEvaluationConfigurationProperty(..),
+        mkAutoEvaluationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoEvaluationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-autoevaluationconfiguration.html>
+    AutoEvaluationConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-autoevaluationconfiguration.html#cfn-connect-evaluationform-autoevaluationconfiguration-enabled>
+                                         enabled :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoEvaluationConfigurationProperty ::
+  AutoEvaluationConfigurationProperty
+mkAutoEvaluationConfigurationProperty
+  = AutoEvaluationConfigurationProperty
+      {haddock_workaround_ = (), enabled = Prelude.Nothing}
+instance ToResourceProperties AutoEvaluationConfigurationProperty where
+  toResourceProperties AutoEvaluationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.AutoEvaluationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Enabled" Prelude.<$> enabled])}
+instance JSON.ToJSON AutoEvaluationConfigurationProperty where
+  toJSON AutoEvaluationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Enabled" Prelude.<$> enabled]))
+instance Property "Enabled" AutoEvaluationConfigurationProperty where
+  type PropertyType "Enabled" AutoEvaluationConfigurationProperty = Value Prelude.Bool
+  set newValue AutoEvaluationConfigurationProperty {..}
+    = AutoEvaluationConfigurationProperty
+        {enabled = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/AutoEvaluationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.AutoEvaluationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AutoEvaluationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AutoEvaluationConfigurationProperty
+instance Prelude.Eq AutoEvaluationConfigurationProperty
+instance Prelude.Show AutoEvaluationConfigurationProperty
+instance JSON.ToJSON AutoEvaluationConfigurationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Connect.EvaluationForm.AutomaticFailConfigurationProperty (
+        AutomaticFailConfigurationProperty(..),
+        mkAutomaticFailConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutomaticFailConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-automaticfailconfiguration.html>
+    AutomaticFailConfigurationProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-automaticfailconfiguration.html#cfn-connect-evaluationform-automaticfailconfiguration-targetsection>
+                                        targetSection :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutomaticFailConfigurationProperty ::
+  AutomaticFailConfigurationProperty
+mkAutomaticFailConfigurationProperty
+  = AutomaticFailConfigurationProperty
+      {haddock_workaround_ = (), targetSection = Prelude.Nothing}
+instance ToResourceProperties AutomaticFailConfigurationProperty where
+  toResourceProperties AutomaticFailConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.AutomaticFailConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TargetSection" Prelude.<$> targetSection])}
+instance JSON.ToJSON AutomaticFailConfigurationProperty where
+  toJSON AutomaticFailConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TargetSection" Prelude.<$> targetSection]))
+instance Property "TargetSection" AutomaticFailConfigurationProperty where
+  type PropertyType "TargetSection" AutomaticFailConfigurationProperty = Value Prelude.Text
+  set newValue AutomaticFailConfigurationProperty {..}
+    = AutomaticFailConfigurationProperty
+        {targetSection = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/AutomaticFailConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.AutomaticFailConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AutomaticFailConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AutomaticFailConfigurationProperty
+instance Prelude.Eq AutomaticFailConfigurationProperty
+instance Prelude.Show AutomaticFailConfigurationProperty
+instance JSON.ToJSON AutomaticFailConfigurationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormBaseItemProperty (
+        module Exports, EvaluationFormBaseItemProperty(..),
+        mkEvaluationFormBaseItemProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSectionProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormBaseItemProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformbaseitem.html>
+    EvaluationFormBaseItemProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformbaseitem.html#cfn-connect-evaluationform-evaluationformbaseitem-section>
+                                    section :: EvaluationFormSectionProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormBaseItemProperty ::
+  EvaluationFormSectionProperty -> EvaluationFormBaseItemProperty
+mkEvaluationFormBaseItemProperty section
+  = EvaluationFormBaseItemProperty
+      {haddock_workaround_ = (), section = section}
+instance ToResourceProperties EvaluationFormBaseItemProperty where
+  toResourceProperties EvaluationFormBaseItemProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormBaseItem",
+         supportsTags = Prelude.False,
+         properties = ["Section" JSON..= section]}
+instance JSON.ToJSON EvaluationFormBaseItemProperty where
+  toJSON EvaluationFormBaseItemProperty {..}
+    = JSON.object ["Section" JSON..= section]
+instance Property "Section" EvaluationFormBaseItemProperty where
+  type PropertyType "Section" EvaluationFormBaseItemProperty = EvaluationFormSectionProperty
+  set newValue EvaluationFormBaseItemProperty {..}
+    = EvaluationFormBaseItemProperty {section = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormBaseItemProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormBaseItemProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormBaseItemProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormBaseItemProperty
+instance Prelude.Eq EvaluationFormBaseItemProperty
+instance Prelude.Show EvaluationFormBaseItemProperty
+instance JSON.ToJSON EvaluationFormBaseItemProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionOperandProperty (
+        module Exports,
+        EvaluationFormItemEnablementConditionOperandProperty(..),
+        mkEvaluationFormItemEnablementConditionOperandProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementExpressionProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementConditionOperandProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconditionoperand.html>
+    EvaluationFormItemEnablementConditionOperandProperty {haddock_workaround_ :: (),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconditionoperand.html#cfn-connect-evaluationform-evaluationformitemenablementconditionoperand-expression>
+                                                          expression :: (Prelude.Maybe EvaluationFormItemEnablementExpressionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementConditionOperandProperty ::
+  EvaluationFormItemEnablementConditionOperandProperty
+mkEvaluationFormItemEnablementConditionOperandProperty
+  = EvaluationFormItemEnablementConditionOperandProperty
+      {haddock_workaround_ = (), expression = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemEnablementConditionOperandProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementConditionOperandProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementConditionOperand",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Expression" Prelude.<$> expression])}
+instance JSON.ToJSON EvaluationFormItemEnablementConditionOperandProperty where
+  toJSON EvaluationFormItemEnablementConditionOperandProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Expression" Prelude.<$> expression]))
+instance Property "Expression" EvaluationFormItemEnablementConditionOperandProperty where
+  type PropertyType "Expression" EvaluationFormItemEnablementConditionOperandProperty = EvaluationFormItemEnablementExpressionProperty
+  set
+    newValue
+    EvaluationFormItemEnablementConditionOperandProperty {..}
+    = EvaluationFormItemEnablementConditionOperandProperty
+        {expression = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionOperandProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionOperandProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementConditionOperandProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementConditionOperandProperty
+instance Prelude.Eq EvaluationFormItemEnablementConditionOperandProperty
+instance Prelude.Show EvaluationFormItemEnablementConditionOperandProperty
+instance JSON.ToJSON EvaluationFormItemEnablementConditionOperandProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionProperty (
+        module Exports, EvaluationFormItemEnablementConditionProperty(..),
+        mkEvaluationFormItemEnablementConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionOperandProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormItemEnablementConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementcondition.html>
+    EvaluationFormItemEnablementConditionProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementcondition.html#cfn-connect-evaluationform-evaluationformitemenablementcondition-operands>
+                                                   operands :: [EvaluationFormItemEnablementConditionOperandProperty],
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementcondition.html#cfn-connect-evaluationform-evaluationformitemenablementcondition-operator>
+                                                   operator :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementConditionProperty ::
+  [EvaluationFormItemEnablementConditionOperandProperty]
+  -> EvaluationFormItemEnablementConditionProperty
+mkEvaluationFormItemEnablementConditionProperty operands
+  = EvaluationFormItemEnablementConditionProperty
+      {haddock_workaround_ = (), operands = operands,
+       operator = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemEnablementConditionProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementCondition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Operands" JSON..= operands]
+                           (Prelude.catMaybes [(JSON..=) "Operator" Prelude.<$> operator]))}
+instance JSON.ToJSON EvaluationFormItemEnablementConditionProperty where
+  toJSON EvaluationFormItemEnablementConditionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Operands" JSON..= operands]
+              (Prelude.catMaybes [(JSON..=) "Operator" Prelude.<$> operator])))
+instance Property "Operands" EvaluationFormItemEnablementConditionProperty where
+  type PropertyType "Operands" EvaluationFormItemEnablementConditionProperty = [EvaluationFormItemEnablementConditionOperandProperty]
+  set newValue EvaluationFormItemEnablementConditionProperty {..}
+    = EvaluationFormItemEnablementConditionProperty
+        {operands = newValue, ..}
+instance Property "Operator" EvaluationFormItemEnablementConditionProperty where
+  type PropertyType "Operator" EvaluationFormItemEnablementConditionProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementConditionProperty {..}
+    = EvaluationFormItemEnablementConditionProperty
+        {operator = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementConditionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementConditionProperty
+instance Prelude.Eq EvaluationFormItemEnablementConditionProperty
+instance Prelude.Show EvaluationFormItemEnablementConditionProperty
+instance JSON.ToJSON EvaluationFormItemEnablementConditionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConfigurationProperty (
+        module Exports,
+        EvaluationFormItemEnablementConfigurationProperty(..),
+        mkEvaluationFormItemEnablementConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormItemEnablementConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconfiguration.html>
+    EvaluationFormItemEnablementConfigurationProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconfiguration.html#cfn-connect-evaluationform-evaluationformitemenablementconfiguration-action>
+                                                       action :: (Value Prelude.Text),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconfiguration.html#cfn-connect-evaluationform-evaluationformitemenablementconfiguration-condition>
+                                                       condition :: EvaluationFormItemEnablementConditionProperty,
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementconfiguration.html#cfn-connect-evaluationform-evaluationformitemenablementconfiguration-defaultaction>
+                                                       defaultAction :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementConfigurationProperty ::
+  Value Prelude.Text
+  -> EvaluationFormItemEnablementConditionProperty
+     -> EvaluationFormItemEnablementConfigurationProperty
+mkEvaluationFormItemEnablementConfigurationProperty
+  action
+  condition
+  = EvaluationFormItemEnablementConfigurationProperty
+      {haddock_workaround_ = (), action = action, condition = condition,
+       defaultAction = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemEnablementConfigurationProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Action" JSON..= action, "Condition" JSON..= condition]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DefaultAction" Prelude.<$> defaultAction]))}
+instance JSON.ToJSON EvaluationFormItemEnablementConfigurationProperty where
+  toJSON EvaluationFormItemEnablementConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Action" JSON..= action, "Condition" JSON..= condition]
+              (Prelude.catMaybes
+                 [(JSON..=) "DefaultAction" Prelude.<$> defaultAction])))
+instance Property "Action" EvaluationFormItemEnablementConfigurationProperty where
+  type PropertyType "Action" EvaluationFormItemEnablementConfigurationProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementConfigurationProperty {..}
+    = EvaluationFormItemEnablementConfigurationProperty
+        {action = newValue, ..}
+instance Property "Condition" EvaluationFormItemEnablementConfigurationProperty where
+  type PropertyType "Condition" EvaluationFormItemEnablementConfigurationProperty = EvaluationFormItemEnablementConditionProperty
+  set newValue EvaluationFormItemEnablementConfigurationProperty {..}
+    = EvaluationFormItemEnablementConfigurationProperty
+        {condition = newValue, ..}
+instance Property "DefaultAction" EvaluationFormItemEnablementConfigurationProperty where
+  type PropertyType "DefaultAction" EvaluationFormItemEnablementConfigurationProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementConfigurationProperty {..}
+    = EvaluationFormItemEnablementConfigurationProperty
+        {defaultAction = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementConfigurationProperty
+instance Prelude.Eq EvaluationFormItemEnablementConfigurationProperty
+instance Prelude.Show EvaluationFormItemEnablementConfigurationProperty
+instance JSON.ToJSON EvaluationFormItemEnablementConfigurationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementExpressionProperty (
+        module Exports, EvaluationFormItemEnablementExpressionProperty(..),
+        mkEvaluationFormItemEnablementExpressionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceValueProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormItemEnablementExpressionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementexpression.html>
+    EvaluationFormItemEnablementExpressionProperty {haddock_workaround_ :: (),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementexpression.html#cfn-connect-evaluationform-evaluationformitemenablementexpression-comparator>
+                                                    comparator :: (Value Prelude.Text),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementexpression.html#cfn-connect-evaluationform-evaluationformitemenablementexpression-source>
+                                                    source :: EvaluationFormItemEnablementSourceProperty,
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementexpression.html#cfn-connect-evaluationform-evaluationformitemenablementexpression-values>
+                                                    values :: [EvaluationFormItemEnablementSourceValueProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementExpressionProperty ::
+  Value Prelude.Text
+  -> EvaluationFormItemEnablementSourceProperty
+     -> [EvaluationFormItemEnablementSourceValueProperty]
+        -> EvaluationFormItemEnablementExpressionProperty
+mkEvaluationFormItemEnablementExpressionProperty
+  comparator
+  source
+  values
+  = EvaluationFormItemEnablementExpressionProperty
+      {haddock_workaround_ = (), comparator = comparator,
+       source = source, values = values}
+instance ToResourceProperties EvaluationFormItemEnablementExpressionProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementExpressionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementExpression",
+         supportsTags = Prelude.False,
+         properties = ["Comparator" JSON..= comparator,
+                       "Source" JSON..= source, "Values" JSON..= values]}
+instance JSON.ToJSON EvaluationFormItemEnablementExpressionProperty where
+  toJSON EvaluationFormItemEnablementExpressionProperty {..}
+    = JSON.object
+        ["Comparator" JSON..= comparator, "Source" JSON..= source,
+         "Values" JSON..= values]
+instance Property "Comparator" EvaluationFormItemEnablementExpressionProperty where
+  type PropertyType "Comparator" EvaluationFormItemEnablementExpressionProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementExpressionProperty {..}
+    = EvaluationFormItemEnablementExpressionProperty
+        {comparator = newValue, ..}
+instance Property "Source" EvaluationFormItemEnablementExpressionProperty where
+  type PropertyType "Source" EvaluationFormItemEnablementExpressionProperty = EvaluationFormItemEnablementSourceProperty
+  set newValue EvaluationFormItemEnablementExpressionProperty {..}
+    = EvaluationFormItemEnablementExpressionProperty
+        {source = newValue, ..}
+instance Property "Values" EvaluationFormItemEnablementExpressionProperty where
+  type PropertyType "Values" EvaluationFormItemEnablementExpressionProperty = [EvaluationFormItemEnablementSourceValueProperty]
+  set newValue EvaluationFormItemEnablementExpressionProperty {..}
+    = EvaluationFormItemEnablementExpressionProperty
+        {values = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementExpressionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementExpressionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementExpressionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementExpressionProperty
+instance Prelude.Eq EvaluationFormItemEnablementExpressionProperty
+instance Prelude.Show EvaluationFormItemEnablementExpressionProperty
+instance JSON.ToJSON EvaluationFormItemEnablementExpressionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs
@@ -0,0 +1,48 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceProperty (
+        EvaluationFormItemEnablementSourceProperty(..),
+        mkEvaluationFormItemEnablementSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormItemEnablementSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsource.html>
+    EvaluationFormItemEnablementSourceProperty {haddock_workaround_ :: (),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsource.html#cfn-connect-evaluationform-evaluationformitemenablementsource-refid>
+                                                refId :: (Prelude.Maybe (Value Prelude.Text)),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsource.html#cfn-connect-evaluationform-evaluationformitemenablementsource-type>
+                                                type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementSourceProperty ::
+  Value Prelude.Text -> EvaluationFormItemEnablementSourceProperty
+mkEvaluationFormItemEnablementSourceProperty type'
+  = EvaluationFormItemEnablementSourceProperty
+      {haddock_workaround_ = (), type' = type', refId = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemEnablementSourceProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes [(JSON..=) "RefId" Prelude.<$> refId]))}
+instance JSON.ToJSON EvaluationFormItemEnablementSourceProperty where
+  toJSON EvaluationFormItemEnablementSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes [(JSON..=) "RefId" Prelude.<$> refId])))
+instance Property "RefId" EvaluationFormItemEnablementSourceProperty where
+  type PropertyType "RefId" EvaluationFormItemEnablementSourceProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementSourceProperty {..}
+    = EvaluationFormItemEnablementSourceProperty
+        {refId = Prelude.pure newValue, ..}
+instance Property "Type" EvaluationFormItemEnablementSourceProperty where
+  type PropertyType "Type" EvaluationFormItemEnablementSourceProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementSourceProperty {..}
+    = EvaluationFormItemEnablementSourceProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementSourceProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementSourceProperty
+instance Prelude.Eq EvaluationFormItemEnablementSourceProperty
+instance Prelude.Show EvaluationFormItemEnablementSourceProperty
+instance JSON.ToJSON EvaluationFormItemEnablementSourceProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceValueProperty (
+        EvaluationFormItemEnablementSourceValueProperty(..),
+        mkEvaluationFormItemEnablementSourceValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormItemEnablementSourceValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsourcevalue.html>
+    EvaluationFormItemEnablementSourceValueProperty {haddock_workaround_ :: (),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsourcevalue.html#cfn-connect-evaluationform-evaluationformitemenablementsourcevalue-refid>
+                                                     refId :: (Prelude.Maybe (Value Prelude.Text)),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitemenablementsourcevalue.html#cfn-connect-evaluationform-evaluationformitemenablementsourcevalue-type>
+                                                     type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemEnablementSourceValueProperty ::
+  EvaluationFormItemEnablementSourceValueProperty
+mkEvaluationFormItemEnablementSourceValueProperty
+  = EvaluationFormItemEnablementSourceValueProperty
+      {haddock_workaround_ = (), refId = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemEnablementSourceValueProperty where
+  toResourceProperties
+    EvaluationFormItemEnablementSourceValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItemEnablementSourceValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "RefId" Prelude.<$> refId,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON EvaluationFormItemEnablementSourceValueProperty where
+  toJSON EvaluationFormItemEnablementSourceValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "RefId" Prelude.<$> refId,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "RefId" EvaluationFormItemEnablementSourceValueProperty where
+  type PropertyType "RefId" EvaluationFormItemEnablementSourceValueProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementSourceValueProperty {..}
+    = EvaluationFormItemEnablementSourceValueProperty
+        {refId = Prelude.pure newValue, ..}
+instance Property "Type" EvaluationFormItemEnablementSourceValueProperty where
+  type PropertyType "Type" EvaluationFormItemEnablementSourceValueProperty = Value Prelude.Text
+  set newValue EvaluationFormItemEnablementSourceValueProperty {..}
+    = EvaluationFormItemEnablementSourceValueProperty
+        {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemEnablementSourceValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemEnablementSourceValueProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemEnablementSourceValueProperty
+instance Prelude.Eq EvaluationFormItemEnablementSourceValueProperty
+instance Prelude.Show EvaluationFormItemEnablementSourceValueProperty
+instance JSON.ToJSON EvaluationFormItemEnablementSourceValueProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemProperty (
+        module Exports, EvaluationFormItemProperty(..),
+        mkEvaluationFormItemProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSectionProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormItemProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitem.html>
+    EvaluationFormItemProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitem.html#cfn-connect-evaluationform-evaluationformitem-question>
+                                question :: (Prelude.Maybe EvaluationFormQuestionProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformitem.html#cfn-connect-evaluationform-evaluationformitem-section>
+                                section :: (Prelude.Maybe EvaluationFormSectionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormItemProperty :: EvaluationFormItemProperty
+mkEvaluationFormItemProperty
+  = EvaluationFormItemProperty
+      {haddock_workaround_ = (), question = Prelude.Nothing,
+       section = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormItemProperty where
+  toResourceProperties EvaluationFormItemProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormItem",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Question" Prelude.<$> question,
+                            (JSON..=) "Section" Prelude.<$> section])}
+instance JSON.ToJSON EvaluationFormItemProperty where
+  toJSON EvaluationFormItemProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Question" Prelude.<$> question,
+               (JSON..=) "Section" Prelude.<$> section]))
+instance Property "Question" EvaluationFormItemProperty where
+  type PropertyType "Question" EvaluationFormItemProperty = EvaluationFormQuestionProperty
+  set newValue EvaluationFormItemProperty {..}
+    = EvaluationFormItemProperty {question = Prelude.pure newValue, ..}
+instance Property "Section" EvaluationFormItemProperty where
+  type PropertyType "Section" EvaluationFormItemProperty = EvaluationFormSectionProperty
+  set newValue EvaluationFormItemProperty {..}
+    = EvaluationFormItemProperty {section = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormItemProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormItemProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormItemProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormItemProperty
+instance Prelude.Eq EvaluationFormItemProperty
+instance Prelude.Show EvaluationFormItemProperty
+instance JSON.ToJSON EvaluationFormItemProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionAutomationProperty (
+        module Exports,
+        EvaluationFormNumericQuestionAutomationProperty(..),
+        mkEvaluationFormNumericQuestionAutomationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.NumericQuestionPropertyValueAutomationProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormNumericQuestionAutomationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionautomation.html>
+    EvaluationFormNumericQuestionAutomationProperty {haddock_workaround_ :: (),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionautomation.html#cfn-connect-evaluationform-evaluationformnumericquestionautomation-answersource>
+                                                     answerSource :: (Prelude.Maybe EvaluationFormQuestionAutomationAnswerSourceProperty),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionautomation.html#cfn-connect-evaluationform-evaluationformnumericquestionautomation-propertyvalue>
+                                                     propertyValue :: (Prelude.Maybe NumericQuestionPropertyValueAutomationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormNumericQuestionAutomationProperty ::
+  EvaluationFormNumericQuestionAutomationProperty
+mkEvaluationFormNumericQuestionAutomationProperty
+  = EvaluationFormNumericQuestionAutomationProperty
+      {haddock_workaround_ = (), answerSource = Prelude.Nothing,
+       propertyValue = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormNumericQuestionAutomationProperty where
+  toResourceProperties
+    EvaluationFormNumericQuestionAutomationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormNumericQuestionAutomation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AnswerSource" Prelude.<$> answerSource,
+                            (JSON..=) "PropertyValue" Prelude.<$> propertyValue])}
+instance JSON.ToJSON EvaluationFormNumericQuestionAutomationProperty where
+  toJSON EvaluationFormNumericQuestionAutomationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AnswerSource" Prelude.<$> answerSource,
+               (JSON..=) "PropertyValue" Prelude.<$> propertyValue]))
+instance Property "AnswerSource" EvaluationFormNumericQuestionAutomationProperty where
+  type PropertyType "AnswerSource" EvaluationFormNumericQuestionAutomationProperty = EvaluationFormQuestionAutomationAnswerSourceProperty
+  set newValue EvaluationFormNumericQuestionAutomationProperty {..}
+    = EvaluationFormNumericQuestionAutomationProperty
+        {answerSource = Prelude.pure newValue, ..}
+instance Property "PropertyValue" EvaluationFormNumericQuestionAutomationProperty where
+  type PropertyType "PropertyValue" EvaluationFormNumericQuestionAutomationProperty = NumericQuestionPropertyValueAutomationProperty
+  set newValue EvaluationFormNumericQuestionAutomationProperty {..}
+    = EvaluationFormNumericQuestionAutomationProperty
+        {propertyValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionAutomationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionAutomationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormNumericQuestionAutomationProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormNumericQuestionAutomationProperty
+instance Prelude.Eq EvaluationFormNumericQuestionAutomationProperty
+instance Prelude.Show EvaluationFormNumericQuestionAutomationProperty
+instance JSON.ToJSON EvaluationFormNumericQuestionAutomationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionOptionProperty (
+        module Exports, EvaluationFormNumericQuestionOptionProperty(..),
+        mkEvaluationFormNumericQuestionOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.AutomaticFailConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormNumericQuestionOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html>
+    EvaluationFormNumericQuestionOptionProperty {haddock_workaround_ :: (),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html#cfn-connect-evaluationform-evaluationformnumericquestionoption-automaticfail>
+                                                 automaticFail :: (Prelude.Maybe (Value Prelude.Bool)),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html#cfn-connect-evaluationform-evaluationformnumericquestionoption-automaticfailconfiguration>
+                                                 automaticFailConfiguration :: (Prelude.Maybe AutomaticFailConfigurationProperty),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html#cfn-connect-evaluationform-evaluationformnumericquestionoption-maxvalue>
+                                                 maxValue :: (Value Prelude.Integer),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html#cfn-connect-evaluationform-evaluationformnumericquestionoption-minvalue>
+                                                 minValue :: (Value Prelude.Integer),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionoption.html#cfn-connect-evaluationform-evaluationformnumericquestionoption-score>
+                                                 score :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormNumericQuestionOptionProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer
+     -> EvaluationFormNumericQuestionOptionProperty
+mkEvaluationFormNumericQuestionOptionProperty maxValue minValue
+  = EvaluationFormNumericQuestionOptionProperty
+      {haddock_workaround_ = (), maxValue = maxValue,
+       minValue = minValue, automaticFail = Prelude.Nothing,
+       automaticFailConfiguration = Prelude.Nothing,
+       score = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormNumericQuestionOptionProperty where
+  toResourceProperties
+    EvaluationFormNumericQuestionOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormNumericQuestionOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MaxValue" JSON..= maxValue, "MinValue" JSON..= minValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutomaticFail" Prelude.<$> automaticFail,
+                               (JSON..=) "AutomaticFailConfiguration"
+                                 Prelude.<$> automaticFailConfiguration,
+                               (JSON..=) "Score" Prelude.<$> score]))}
+instance JSON.ToJSON EvaluationFormNumericQuestionOptionProperty where
+  toJSON EvaluationFormNumericQuestionOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MaxValue" JSON..= maxValue, "MinValue" JSON..= minValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutomaticFail" Prelude.<$> automaticFail,
+                  (JSON..=) "AutomaticFailConfiguration"
+                    Prelude.<$> automaticFailConfiguration,
+                  (JSON..=) "Score" Prelude.<$> score])))
+instance Property "AutomaticFail" EvaluationFormNumericQuestionOptionProperty where
+  type PropertyType "AutomaticFail" EvaluationFormNumericQuestionOptionProperty = Value Prelude.Bool
+  set newValue EvaluationFormNumericQuestionOptionProperty {..}
+    = EvaluationFormNumericQuestionOptionProperty
+        {automaticFail = Prelude.pure newValue, ..}
+instance Property "AutomaticFailConfiguration" EvaluationFormNumericQuestionOptionProperty where
+  type PropertyType "AutomaticFailConfiguration" EvaluationFormNumericQuestionOptionProperty = AutomaticFailConfigurationProperty
+  set newValue EvaluationFormNumericQuestionOptionProperty {..}
+    = EvaluationFormNumericQuestionOptionProperty
+        {automaticFailConfiguration = Prelude.pure newValue, ..}
+instance Property "MaxValue" EvaluationFormNumericQuestionOptionProperty where
+  type PropertyType "MaxValue" EvaluationFormNumericQuestionOptionProperty = Value Prelude.Integer
+  set newValue EvaluationFormNumericQuestionOptionProperty {..}
+    = EvaluationFormNumericQuestionOptionProperty
+        {maxValue = newValue, ..}
+instance Property "MinValue" EvaluationFormNumericQuestionOptionProperty where
+  type PropertyType "MinValue" EvaluationFormNumericQuestionOptionProperty = Value Prelude.Integer
+  set newValue EvaluationFormNumericQuestionOptionProperty {..}
+    = EvaluationFormNumericQuestionOptionProperty
+        {minValue = newValue, ..}
+instance Property "Score" EvaluationFormNumericQuestionOptionProperty where
+  type PropertyType "Score" EvaluationFormNumericQuestionOptionProperty = Value Prelude.Integer
+  set newValue EvaluationFormNumericQuestionOptionProperty {..}
+    = EvaluationFormNumericQuestionOptionProperty
+        {score = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormNumericQuestionOptionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormNumericQuestionOptionProperty
+instance Prelude.Eq EvaluationFormNumericQuestionOptionProperty
+instance Prelude.Show EvaluationFormNumericQuestionOptionProperty
+instance JSON.ToJSON EvaluationFormNumericQuestionOptionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs
@@ -0,0 +1,74 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionPropertiesProperty (
+        module Exports,
+        EvaluationFormNumericQuestionPropertiesProperty(..),
+        mkEvaluationFormNumericQuestionPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionAutomationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionOptionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormNumericQuestionPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionproperties.html>
+    EvaluationFormNumericQuestionPropertiesProperty {haddock_workaround_ :: (),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionproperties.html#cfn-connect-evaluationform-evaluationformnumericquestionproperties-automation>
+                                                     automation :: (Prelude.Maybe EvaluationFormNumericQuestionAutomationProperty),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionproperties.html#cfn-connect-evaluationform-evaluationformnumericquestionproperties-maxvalue>
+                                                     maxValue :: (Value Prelude.Integer),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionproperties.html#cfn-connect-evaluationform-evaluationformnumericquestionproperties-minvalue>
+                                                     minValue :: (Value Prelude.Integer),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformnumericquestionproperties.html#cfn-connect-evaluationform-evaluationformnumericquestionproperties-options>
+                                                     options :: (Prelude.Maybe [EvaluationFormNumericQuestionOptionProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormNumericQuestionPropertiesProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer
+     -> EvaluationFormNumericQuestionPropertiesProperty
+mkEvaluationFormNumericQuestionPropertiesProperty maxValue minValue
+  = EvaluationFormNumericQuestionPropertiesProperty
+      {haddock_workaround_ = (), maxValue = maxValue,
+       minValue = minValue, automation = Prelude.Nothing,
+       options = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormNumericQuestionPropertiesProperty where
+  toResourceProperties
+    EvaluationFormNumericQuestionPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormNumericQuestionProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MaxValue" JSON..= maxValue, "MinValue" JSON..= minValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Automation" Prelude.<$> automation,
+                               (JSON..=) "Options" Prelude.<$> options]))}
+instance JSON.ToJSON EvaluationFormNumericQuestionPropertiesProperty where
+  toJSON EvaluationFormNumericQuestionPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MaxValue" JSON..= maxValue, "MinValue" JSON..= minValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "Automation" Prelude.<$> automation,
+                  (JSON..=) "Options" Prelude.<$> options])))
+instance Property "Automation" EvaluationFormNumericQuestionPropertiesProperty where
+  type PropertyType "Automation" EvaluationFormNumericQuestionPropertiesProperty = EvaluationFormNumericQuestionAutomationProperty
+  set newValue EvaluationFormNumericQuestionPropertiesProperty {..}
+    = EvaluationFormNumericQuestionPropertiesProperty
+        {automation = Prelude.pure newValue, ..}
+instance Property "MaxValue" EvaluationFormNumericQuestionPropertiesProperty where
+  type PropertyType "MaxValue" EvaluationFormNumericQuestionPropertiesProperty = Value Prelude.Integer
+  set newValue EvaluationFormNumericQuestionPropertiesProperty {..}
+    = EvaluationFormNumericQuestionPropertiesProperty
+        {maxValue = newValue, ..}
+instance Property "MinValue" EvaluationFormNumericQuestionPropertiesProperty where
+  type PropertyType "MinValue" EvaluationFormNumericQuestionPropertiesProperty = Value Prelude.Integer
+  set newValue EvaluationFormNumericQuestionPropertiesProperty {..}
+    = EvaluationFormNumericQuestionPropertiesProperty
+        {minValue = newValue, ..}
+instance Property "Options" EvaluationFormNumericQuestionPropertiesProperty where
+  type PropertyType "Options" EvaluationFormNumericQuestionPropertiesProperty = [EvaluationFormNumericQuestionOptionProperty]
+  set newValue EvaluationFormNumericQuestionPropertiesProperty {..}
+    = EvaluationFormNumericQuestionPropertiesProperty
+        {options = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormNumericQuestionPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormNumericQuestionPropertiesProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormNumericQuestionPropertiesProperty
+instance Prelude.Eq EvaluationFormNumericQuestionPropertiesProperty
+instance Prelude.Show EvaluationFormNumericQuestionPropertiesProperty
+instance JSON.ToJSON EvaluationFormNumericQuestionPropertiesProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty (
+        EvaluationFormQuestionAutomationAnswerSourceProperty(..),
+        mkEvaluationFormQuestionAutomationAnswerSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormQuestionAutomationAnswerSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestionautomationanswersource.html>
+    EvaluationFormQuestionAutomationAnswerSourceProperty {haddock_workaround_ :: (),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestionautomationanswersource.html#cfn-connect-evaluationform-evaluationformquestionautomationanswersource-sourcetype>
+                                                          sourceType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormQuestionAutomationAnswerSourceProperty ::
+  Value Prelude.Text
+  -> EvaluationFormQuestionAutomationAnswerSourceProperty
+mkEvaluationFormQuestionAutomationAnswerSourceProperty sourceType
+  = EvaluationFormQuestionAutomationAnswerSourceProperty
+      {haddock_workaround_ = (), sourceType = sourceType}
+instance ToResourceProperties EvaluationFormQuestionAutomationAnswerSourceProperty where
+  toResourceProperties
+    EvaluationFormQuestionAutomationAnswerSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormQuestionAutomationAnswerSource",
+         supportsTags = Prelude.False,
+         properties = ["SourceType" JSON..= sourceType]}
+instance JSON.ToJSON EvaluationFormQuestionAutomationAnswerSourceProperty where
+  toJSON EvaluationFormQuestionAutomationAnswerSourceProperty {..}
+    = JSON.object ["SourceType" JSON..= sourceType]
+instance Property "SourceType" EvaluationFormQuestionAutomationAnswerSourceProperty where
+  type PropertyType "SourceType" EvaluationFormQuestionAutomationAnswerSourceProperty = Value Prelude.Text
+  set
+    newValue
+    EvaluationFormQuestionAutomationAnswerSourceProperty {..}
+    = EvaluationFormQuestionAutomationAnswerSourceProperty
+        {sourceType = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionAutomationAnswerSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormQuestionAutomationAnswerSourceProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormQuestionAutomationAnswerSourceProperty
+instance Prelude.Eq EvaluationFormQuestionAutomationAnswerSourceProperty
+instance Prelude.Show EvaluationFormQuestionAutomationAnswerSourceProperty
+instance JSON.ToJSON EvaluationFormQuestionAutomationAnswerSourceProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs
@@ -0,0 +1,109 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionProperty (
+        module Exports, EvaluationFormQuestionProperty(..),
+        mkEvaluationFormQuestionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionTypePropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormQuestionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html>
+    EvaluationFormQuestionProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-enablement>
+                                    enablement :: (Prelude.Maybe EvaluationFormItemEnablementConfigurationProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-instructions>
+                                    instructions :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-notapplicableenabled>
+                                    notApplicableEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-questiontype>
+                                    questionType :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-questiontypeproperties>
+                                    questionTypeProperties :: (Prelude.Maybe EvaluationFormQuestionTypePropertiesProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-refid>
+                                    refId :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-title>
+                                    title :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestion.html#cfn-connect-evaluationform-evaluationformquestion-weight>
+                                    weight :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormQuestionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> EvaluationFormQuestionProperty
+mkEvaluationFormQuestionProperty questionType refId title
+  = EvaluationFormQuestionProperty
+      {haddock_workaround_ = (), questionType = questionType,
+       refId = refId, title = title, enablement = Prelude.Nothing,
+       instructions = Prelude.Nothing,
+       notApplicableEnabled = Prelude.Nothing,
+       questionTypeProperties = Prelude.Nothing, weight = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormQuestionProperty where
+  toResourceProperties EvaluationFormQuestionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormQuestion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["QuestionType" JSON..= questionType, "RefId" JSON..= refId,
+                            "Title" JSON..= title]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Enablement" Prelude.<$> enablement,
+                               (JSON..=) "Instructions" Prelude.<$> instructions,
+                               (JSON..=) "NotApplicableEnabled" Prelude.<$> notApplicableEnabled,
+                               (JSON..=) "QuestionTypeProperties"
+                                 Prelude.<$> questionTypeProperties,
+                               (JSON..=) "Weight" Prelude.<$> weight]))}
+instance JSON.ToJSON EvaluationFormQuestionProperty where
+  toJSON EvaluationFormQuestionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["QuestionType" JSON..= questionType, "RefId" JSON..= refId,
+               "Title" JSON..= title]
+              (Prelude.catMaybes
+                 [(JSON..=) "Enablement" Prelude.<$> enablement,
+                  (JSON..=) "Instructions" Prelude.<$> instructions,
+                  (JSON..=) "NotApplicableEnabled" Prelude.<$> notApplicableEnabled,
+                  (JSON..=) "QuestionTypeProperties"
+                    Prelude.<$> questionTypeProperties,
+                  (JSON..=) "Weight" Prelude.<$> weight])))
+instance Property "Enablement" EvaluationFormQuestionProperty where
+  type PropertyType "Enablement" EvaluationFormQuestionProperty = EvaluationFormItemEnablementConfigurationProperty
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty
+        {enablement = Prelude.pure newValue, ..}
+instance Property "Instructions" EvaluationFormQuestionProperty where
+  type PropertyType "Instructions" EvaluationFormQuestionProperty = Value Prelude.Text
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty
+        {instructions = Prelude.pure newValue, ..}
+instance Property "NotApplicableEnabled" EvaluationFormQuestionProperty where
+  type PropertyType "NotApplicableEnabled" EvaluationFormQuestionProperty = Value Prelude.Bool
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty
+        {notApplicableEnabled = Prelude.pure newValue, ..}
+instance Property "QuestionType" EvaluationFormQuestionProperty where
+  type PropertyType "QuestionType" EvaluationFormQuestionProperty = Value Prelude.Text
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty {questionType = newValue, ..}
+instance Property "QuestionTypeProperties" EvaluationFormQuestionProperty where
+  type PropertyType "QuestionTypeProperties" EvaluationFormQuestionProperty = EvaluationFormQuestionTypePropertiesProperty
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty
+        {questionTypeProperties = Prelude.pure newValue, ..}
+instance Property "RefId" EvaluationFormQuestionProperty where
+  type PropertyType "RefId" EvaluationFormQuestionProperty = Value Prelude.Text
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty {refId = newValue, ..}
+instance Property "Title" EvaluationFormQuestionProperty where
+  type PropertyType "Title" EvaluationFormQuestionProperty = Value Prelude.Text
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty {title = newValue, ..}
+instance Property "Weight" EvaluationFormQuestionProperty where
+  type PropertyType "Weight" EvaluationFormQuestionProperty = Value Prelude.Double
+  set newValue EvaluationFormQuestionProperty {..}
+    = EvaluationFormQuestionProperty
+        {weight = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormQuestionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormQuestionProperty
+instance Prelude.Eq EvaluationFormQuestionProperty
+instance Prelude.Show EvaluationFormQuestionProperty
+instance JSON.ToJSON EvaluationFormQuestionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionTypePropertiesProperty (
+        module Exports, EvaluationFormQuestionTypePropertiesProperty(..),
+        mkEvaluationFormQuestionTypePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormQuestionTypePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestiontypeproperties.html>
+    EvaluationFormQuestionTypePropertiesProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestiontypeproperties.html#cfn-connect-evaluationform-evaluationformquestiontypeproperties-numeric>
+                                                  numeric :: (Prelude.Maybe EvaluationFormNumericQuestionPropertiesProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestiontypeproperties.html#cfn-connect-evaluationform-evaluationformquestiontypeproperties-singleselect>
+                                                  singleSelect :: (Prelude.Maybe EvaluationFormSingleSelectQuestionPropertiesProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformquestiontypeproperties.html#cfn-connect-evaluationform-evaluationformquestiontypeproperties-text>
+                                                  text :: (Prelude.Maybe EvaluationFormTextQuestionPropertiesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormQuestionTypePropertiesProperty ::
+  EvaluationFormQuestionTypePropertiesProperty
+mkEvaluationFormQuestionTypePropertiesProperty
+  = EvaluationFormQuestionTypePropertiesProperty
+      {haddock_workaround_ = (), numeric = Prelude.Nothing,
+       singleSelect = Prelude.Nothing, text = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormQuestionTypePropertiesProperty where
+  toResourceProperties
+    EvaluationFormQuestionTypePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormQuestionTypeProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Numeric" Prelude.<$> numeric,
+                            (JSON..=) "SingleSelect" Prelude.<$> singleSelect,
+                            (JSON..=) "Text" Prelude.<$> text])}
+instance JSON.ToJSON EvaluationFormQuestionTypePropertiesProperty where
+  toJSON EvaluationFormQuestionTypePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Numeric" Prelude.<$> numeric,
+               (JSON..=) "SingleSelect" Prelude.<$> singleSelect,
+               (JSON..=) "Text" Prelude.<$> text]))
+instance Property "Numeric" EvaluationFormQuestionTypePropertiesProperty where
+  type PropertyType "Numeric" EvaluationFormQuestionTypePropertiesProperty = EvaluationFormNumericQuestionPropertiesProperty
+  set newValue EvaluationFormQuestionTypePropertiesProperty {..}
+    = EvaluationFormQuestionTypePropertiesProperty
+        {numeric = Prelude.pure newValue, ..}
+instance Property "SingleSelect" EvaluationFormQuestionTypePropertiesProperty where
+  type PropertyType "SingleSelect" EvaluationFormQuestionTypePropertiesProperty = EvaluationFormSingleSelectQuestionPropertiesProperty
+  set newValue EvaluationFormQuestionTypePropertiesProperty {..}
+    = EvaluationFormQuestionTypePropertiesProperty
+        {singleSelect = Prelude.pure newValue, ..}
+instance Property "Text" EvaluationFormQuestionTypePropertiesProperty where
+  type PropertyType "Text" EvaluationFormQuestionTypePropertiesProperty = EvaluationFormTextQuestionPropertiesProperty
+  set newValue EvaluationFormQuestionTypePropertiesProperty {..}
+    = EvaluationFormQuestionTypePropertiesProperty
+        {text = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormQuestionTypePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionTypePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormQuestionTypePropertiesProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormQuestionTypePropertiesProperty
+instance Prelude.Eq EvaluationFormQuestionTypePropertiesProperty
+instance Prelude.Show EvaluationFormQuestionTypePropertiesProperty
+instance JSON.ToJSON EvaluationFormQuestionTypePropertiesProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs
@@ -0,0 +1,76 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSectionProperty (
+        module Exports, EvaluationFormSectionProperty(..),
+        mkEvaluationFormSectionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormItemProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormSectionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html>
+    EvaluationFormSectionProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html#cfn-connect-evaluationform-evaluationformsection-instructions>
+                                   instructions :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html#cfn-connect-evaluationform-evaluationformsection-items>
+                                   items :: (Prelude.Maybe [EvaluationFormItemProperty]),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html#cfn-connect-evaluationform-evaluationformsection-refid>
+                                   refId :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html#cfn-connect-evaluationform-evaluationformsection-title>
+                                   title :: (Value Prelude.Text),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsection.html#cfn-connect-evaluationform-evaluationformsection-weight>
+                                   weight :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormSectionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> EvaluationFormSectionProperty
+mkEvaluationFormSectionProperty refId title
+  = EvaluationFormSectionProperty
+      {haddock_workaround_ = (), refId = refId, title = title,
+       instructions = Prelude.Nothing, items = Prelude.Nothing,
+       weight = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormSectionProperty where
+  toResourceProperties EvaluationFormSectionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormSection",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RefId" JSON..= refId, "Title" JSON..= title]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Instructions" Prelude.<$> instructions,
+                               (JSON..=) "Items" Prelude.<$> items,
+                               (JSON..=) "Weight" Prelude.<$> weight]))}
+instance JSON.ToJSON EvaluationFormSectionProperty where
+  toJSON EvaluationFormSectionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RefId" JSON..= refId, "Title" JSON..= title]
+              (Prelude.catMaybes
+                 [(JSON..=) "Instructions" Prelude.<$> instructions,
+                  (JSON..=) "Items" Prelude.<$> items,
+                  (JSON..=) "Weight" Prelude.<$> weight])))
+instance Property "Instructions" EvaluationFormSectionProperty where
+  type PropertyType "Instructions" EvaluationFormSectionProperty = Value Prelude.Text
+  set newValue EvaluationFormSectionProperty {..}
+    = EvaluationFormSectionProperty
+        {instructions = Prelude.pure newValue, ..}
+instance Property "Items" EvaluationFormSectionProperty where
+  type PropertyType "Items" EvaluationFormSectionProperty = [EvaluationFormItemProperty]
+  set newValue EvaluationFormSectionProperty {..}
+    = EvaluationFormSectionProperty {items = Prelude.pure newValue, ..}
+instance Property "RefId" EvaluationFormSectionProperty where
+  type PropertyType "RefId" EvaluationFormSectionProperty = Value Prelude.Text
+  set newValue EvaluationFormSectionProperty {..}
+    = EvaluationFormSectionProperty {refId = newValue, ..}
+instance Property "Title" EvaluationFormSectionProperty where
+  type PropertyType "Title" EvaluationFormSectionProperty = Value Prelude.Text
+  set newValue EvaluationFormSectionProperty {..}
+    = EvaluationFormSectionProperty {title = newValue, ..}
+instance Property "Weight" EvaluationFormSectionProperty where
+  type PropertyType "Weight" EvaluationFormSectionProperty = Value Prelude.Double
+  set newValue EvaluationFormSectionProperty {..}
+    = EvaluationFormSectionProperty
+        {weight = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSectionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSectionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormSectionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormSectionProperty
+instance Prelude.Eq EvaluationFormSectionProperty
+instance Prelude.Show EvaluationFormSectionProperty
+instance JSON.ToJSON EvaluationFormSectionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationOptionProperty (
+        module Exports,
+        EvaluationFormSingleSelectQuestionAutomationOptionProperty(..),
+        mkEvaluationFormSingleSelectQuestionAutomationOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.SingleSelectQuestionRuleCategoryAutomationProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormSingleSelectQuestionAutomationOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomationoption.html>
+    EvaluationFormSingleSelectQuestionAutomationOptionProperty {haddock_workaround_ :: (),
+                                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomationoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionautomationoption-rulecategory>
+                                                                ruleCategory :: SingleSelectQuestionRuleCategoryAutomationProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormSingleSelectQuestionAutomationOptionProperty ::
+  SingleSelectQuestionRuleCategoryAutomationProperty
+  -> EvaluationFormSingleSelectQuestionAutomationOptionProperty
+mkEvaluationFormSingleSelectQuestionAutomationOptionProperty
+  ruleCategory
+  = EvaluationFormSingleSelectQuestionAutomationOptionProperty
+      {haddock_workaround_ = (), ruleCategory = ruleCategory}
+instance ToResourceProperties EvaluationFormSingleSelectQuestionAutomationOptionProperty where
+  toResourceProperties
+    EvaluationFormSingleSelectQuestionAutomationOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormSingleSelectQuestionAutomationOption",
+         supportsTags = Prelude.False,
+         properties = ["RuleCategory" JSON..= ruleCategory]}
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionAutomationOptionProperty where
+  toJSON
+    EvaluationFormSingleSelectQuestionAutomationOptionProperty {..}
+    = JSON.object ["RuleCategory" JSON..= ruleCategory]
+instance Property "RuleCategory" EvaluationFormSingleSelectQuestionAutomationOptionProperty where
+  type PropertyType "RuleCategory" EvaluationFormSingleSelectQuestionAutomationOptionProperty = SingleSelectQuestionRuleCategoryAutomationProperty
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionAutomationOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionAutomationOptionProperty
+        {ruleCategory = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormSingleSelectQuestionAutomationOptionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormSingleSelectQuestionAutomationOptionProperty
+instance Prelude.Eq EvaluationFormSingleSelectQuestionAutomationOptionProperty
+instance Prelude.Show EvaluationFormSingleSelectQuestionAutomationOptionProperty
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionAutomationOptionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationProperty (
+        module Exports,
+        EvaluationFormSingleSelectQuestionAutomationProperty(..),
+        mkEvaluationFormSingleSelectQuestionAutomationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationOptionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormSingleSelectQuestionAutomationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomation.html>
+    EvaluationFormSingleSelectQuestionAutomationProperty {haddock_workaround_ :: (),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomation.html#cfn-connect-evaluationform-evaluationformsingleselectquestionautomation-answersource>
+                                                          answerSource :: (Prelude.Maybe EvaluationFormQuestionAutomationAnswerSourceProperty),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomation.html#cfn-connect-evaluationform-evaluationformsingleselectquestionautomation-defaultoptionrefid>
+                                                          defaultOptionRefId :: (Prelude.Maybe (Value Prelude.Text)),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionautomation.html#cfn-connect-evaluationform-evaluationformsingleselectquestionautomation-options>
+                                                          options :: [EvaluationFormSingleSelectQuestionAutomationOptionProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormSingleSelectQuestionAutomationProperty ::
+  [EvaluationFormSingleSelectQuestionAutomationOptionProperty]
+  -> EvaluationFormSingleSelectQuestionAutomationProperty
+mkEvaluationFormSingleSelectQuestionAutomationProperty options
+  = EvaluationFormSingleSelectQuestionAutomationProperty
+      {haddock_workaround_ = (), options = options,
+       answerSource = Prelude.Nothing,
+       defaultOptionRefId = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormSingleSelectQuestionAutomationProperty where
+  toResourceProperties
+    EvaluationFormSingleSelectQuestionAutomationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormSingleSelectQuestionAutomation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Options" JSON..= options]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AnswerSource" Prelude.<$> answerSource,
+                               (JSON..=) "DefaultOptionRefId" Prelude.<$> defaultOptionRefId]))}
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionAutomationProperty where
+  toJSON EvaluationFormSingleSelectQuestionAutomationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Options" JSON..= options]
+              (Prelude.catMaybes
+                 [(JSON..=) "AnswerSource" Prelude.<$> answerSource,
+                  (JSON..=) "DefaultOptionRefId" Prelude.<$> defaultOptionRefId])))
+instance Property "AnswerSource" EvaluationFormSingleSelectQuestionAutomationProperty where
+  type PropertyType "AnswerSource" EvaluationFormSingleSelectQuestionAutomationProperty = EvaluationFormQuestionAutomationAnswerSourceProperty
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionAutomationProperty {..}
+    = EvaluationFormSingleSelectQuestionAutomationProperty
+        {answerSource = Prelude.pure newValue, ..}
+instance Property "DefaultOptionRefId" EvaluationFormSingleSelectQuestionAutomationProperty where
+  type PropertyType "DefaultOptionRefId" EvaluationFormSingleSelectQuestionAutomationProperty = Value Prelude.Text
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionAutomationProperty {..}
+    = EvaluationFormSingleSelectQuestionAutomationProperty
+        {defaultOptionRefId = Prelude.pure newValue, ..}
+instance Property "Options" EvaluationFormSingleSelectQuestionAutomationProperty where
+  type PropertyType "Options" EvaluationFormSingleSelectQuestionAutomationProperty = [EvaluationFormSingleSelectQuestionAutomationOptionProperty]
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionAutomationProperty {..}
+    = EvaluationFormSingleSelectQuestionAutomationProperty
+        {options = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionAutomationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormSingleSelectQuestionAutomationProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormSingleSelectQuestionAutomationProperty
+instance Prelude.Eq EvaluationFormSingleSelectQuestionAutomationProperty
+instance Prelude.Show EvaluationFormSingleSelectQuestionAutomationProperty
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionAutomationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs
@@ -0,0 +1,85 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionOptionProperty (
+        module Exports,
+        EvaluationFormSingleSelectQuestionOptionProperty(..),
+        mkEvaluationFormSingleSelectQuestionOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.AutomaticFailConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormSingleSelectQuestionOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html>
+    EvaluationFormSingleSelectQuestionOptionProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionoption-automaticfail>
+                                                      automaticFail :: (Prelude.Maybe (Value Prelude.Bool)),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionoption-automaticfailconfiguration>
+                                                      automaticFailConfiguration :: (Prelude.Maybe AutomaticFailConfigurationProperty),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionoption-refid>
+                                                      refId :: (Value Prelude.Text),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionoption-score>
+                                                      score :: (Prelude.Maybe (Value Prelude.Integer)),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionoption.html#cfn-connect-evaluationform-evaluationformsingleselectquestionoption-text>
+                                                      text :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormSingleSelectQuestionOptionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> EvaluationFormSingleSelectQuestionOptionProperty
+mkEvaluationFormSingleSelectQuestionOptionProperty refId text
+  = EvaluationFormSingleSelectQuestionOptionProperty
+      {haddock_workaround_ = (), refId = refId, text = text,
+       automaticFail = Prelude.Nothing,
+       automaticFailConfiguration = Prelude.Nothing,
+       score = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormSingleSelectQuestionOptionProperty where
+  toResourceProperties
+    EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormSingleSelectQuestionOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["RefId" JSON..= refId, "Text" JSON..= text]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutomaticFail" Prelude.<$> automaticFail,
+                               (JSON..=) "AutomaticFailConfiguration"
+                                 Prelude.<$> automaticFailConfiguration,
+                               (JSON..=) "Score" Prelude.<$> score]))}
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionOptionProperty where
+  toJSON EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["RefId" JSON..= refId, "Text" JSON..= text]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutomaticFail" Prelude.<$> automaticFail,
+                  (JSON..=) "AutomaticFailConfiguration"
+                    Prelude.<$> automaticFailConfiguration,
+                  (JSON..=) "Score" Prelude.<$> score])))
+instance Property "AutomaticFail" EvaluationFormSingleSelectQuestionOptionProperty where
+  type PropertyType "AutomaticFail" EvaluationFormSingleSelectQuestionOptionProperty = Value Prelude.Bool
+  set newValue EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionOptionProperty
+        {automaticFail = Prelude.pure newValue, ..}
+instance Property "AutomaticFailConfiguration" EvaluationFormSingleSelectQuestionOptionProperty where
+  type PropertyType "AutomaticFailConfiguration" EvaluationFormSingleSelectQuestionOptionProperty = AutomaticFailConfigurationProperty
+  set newValue EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionOptionProperty
+        {automaticFailConfiguration = Prelude.pure newValue, ..}
+instance Property "RefId" EvaluationFormSingleSelectQuestionOptionProperty where
+  type PropertyType "RefId" EvaluationFormSingleSelectQuestionOptionProperty = Value Prelude.Text
+  set newValue EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionOptionProperty
+        {refId = newValue, ..}
+instance Property "Score" EvaluationFormSingleSelectQuestionOptionProperty where
+  type PropertyType "Score" EvaluationFormSingleSelectQuestionOptionProperty = Value Prelude.Integer
+  set newValue EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionOptionProperty
+        {score = Prelude.pure newValue, ..}
+instance Property "Text" EvaluationFormSingleSelectQuestionOptionProperty where
+  type PropertyType "Text" EvaluationFormSingleSelectQuestionOptionProperty = Value Prelude.Text
+  set newValue EvaluationFormSingleSelectQuestionOptionProperty {..}
+    = EvaluationFormSingleSelectQuestionOptionProperty
+        {text = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormSingleSelectQuestionOptionProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormSingleSelectQuestionOptionProperty
+instance Prelude.Eq EvaluationFormSingleSelectQuestionOptionProperty
+instance Prelude.Show EvaluationFormSingleSelectQuestionOptionProperty
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionOptionProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionPropertiesProperty (
+        module Exports,
+        EvaluationFormSingleSelectQuestionPropertiesProperty(..),
+        mkEvaluationFormSingleSelectQuestionPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionOptionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EvaluationFormSingleSelectQuestionPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionproperties.html>
+    EvaluationFormSingleSelectQuestionPropertiesProperty {haddock_workaround_ :: (),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionproperties.html#cfn-connect-evaluationform-evaluationformsingleselectquestionproperties-automation>
+                                                          automation :: (Prelude.Maybe EvaluationFormSingleSelectQuestionAutomationProperty),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionproperties.html#cfn-connect-evaluationform-evaluationformsingleselectquestionproperties-displayas>
+                                                          displayAs :: (Prelude.Maybe (Value Prelude.Text)),
+                                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformsingleselectquestionproperties.html#cfn-connect-evaluationform-evaluationformsingleselectquestionproperties-options>
+                                                          options :: [EvaluationFormSingleSelectQuestionOptionProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormSingleSelectQuestionPropertiesProperty ::
+  [EvaluationFormSingleSelectQuestionOptionProperty]
+  -> EvaluationFormSingleSelectQuestionPropertiesProperty
+mkEvaluationFormSingleSelectQuestionPropertiesProperty options
+  = EvaluationFormSingleSelectQuestionPropertiesProperty
+      {haddock_workaround_ = (), options = options,
+       automation = Prelude.Nothing, displayAs = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormSingleSelectQuestionPropertiesProperty where
+  toResourceProperties
+    EvaluationFormSingleSelectQuestionPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormSingleSelectQuestionProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Options" JSON..= options]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Automation" Prelude.<$> automation,
+                               (JSON..=) "DisplayAs" Prelude.<$> displayAs]))}
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionPropertiesProperty where
+  toJSON EvaluationFormSingleSelectQuestionPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Options" JSON..= options]
+              (Prelude.catMaybes
+                 [(JSON..=) "Automation" Prelude.<$> automation,
+                  (JSON..=) "DisplayAs" Prelude.<$> displayAs])))
+instance Property "Automation" EvaluationFormSingleSelectQuestionPropertiesProperty where
+  type PropertyType "Automation" EvaluationFormSingleSelectQuestionPropertiesProperty = EvaluationFormSingleSelectQuestionAutomationProperty
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionPropertiesProperty {..}
+    = EvaluationFormSingleSelectQuestionPropertiesProperty
+        {automation = Prelude.pure newValue, ..}
+instance Property "DisplayAs" EvaluationFormSingleSelectQuestionPropertiesProperty where
+  type PropertyType "DisplayAs" EvaluationFormSingleSelectQuestionPropertiesProperty = Value Prelude.Text
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionPropertiesProperty {..}
+    = EvaluationFormSingleSelectQuestionPropertiesProperty
+        {displayAs = Prelude.pure newValue, ..}
+instance Property "Options" EvaluationFormSingleSelectQuestionPropertiesProperty where
+  type PropertyType "Options" EvaluationFormSingleSelectQuestionPropertiesProperty = [EvaluationFormSingleSelectQuestionOptionProperty]
+  set
+    newValue
+    EvaluationFormSingleSelectQuestionPropertiesProperty {..}
+    = EvaluationFormSingleSelectQuestionPropertiesProperty
+        {options = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormSingleSelectQuestionPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormSingleSelectQuestionPropertiesProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormSingleSelectQuestionPropertiesProperty
+instance Prelude.Eq EvaluationFormSingleSelectQuestionPropertiesProperty
+instance Prelude.Show EvaluationFormSingleSelectQuestionPropertiesProperty
+instance JSON.ToJSON EvaluationFormSingleSelectQuestionPropertiesProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionAutomationProperty (
+        module Exports, EvaluationFormTextQuestionAutomationProperty(..),
+        mkEvaluationFormTextQuestionAutomationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormTextQuestionAutomationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformtextquestionautomation.html>
+    EvaluationFormTextQuestionAutomationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformtextquestionautomation.html#cfn-connect-evaluationform-evaluationformtextquestionautomation-answersource>
+                                                  answerSource :: (Prelude.Maybe EvaluationFormQuestionAutomationAnswerSourceProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormTextQuestionAutomationProperty ::
+  EvaluationFormTextQuestionAutomationProperty
+mkEvaluationFormTextQuestionAutomationProperty
+  = EvaluationFormTextQuestionAutomationProperty
+      {haddock_workaround_ = (), answerSource = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormTextQuestionAutomationProperty where
+  toResourceProperties
+    EvaluationFormTextQuestionAutomationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormTextQuestionAutomation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AnswerSource" Prelude.<$> answerSource])}
+instance JSON.ToJSON EvaluationFormTextQuestionAutomationProperty where
+  toJSON EvaluationFormTextQuestionAutomationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AnswerSource" Prelude.<$> answerSource]))
+instance Property "AnswerSource" EvaluationFormTextQuestionAutomationProperty where
+  type PropertyType "AnswerSource" EvaluationFormTextQuestionAutomationProperty = EvaluationFormQuestionAutomationAnswerSourceProperty
+  set newValue EvaluationFormTextQuestionAutomationProperty {..}
+    = EvaluationFormTextQuestionAutomationProperty
+        {answerSource = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionAutomationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionAutomationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormTextQuestionAutomationProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormTextQuestionAutomationProperty
+instance Prelude.Eq EvaluationFormTextQuestionAutomationProperty
+instance Prelude.Show EvaluationFormTextQuestionAutomationProperty
+instance JSON.ToJSON EvaluationFormTextQuestionAutomationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionPropertiesProperty (
+        module Exports, EvaluationFormTextQuestionPropertiesProperty(..),
+        mkEvaluationFormTextQuestionPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionAutomationProperty as Exports
+import Stratosphere.ResourceProperties
+data EvaluationFormTextQuestionPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformtextquestionproperties.html>
+    EvaluationFormTextQuestionPropertiesProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-evaluationformtextquestionproperties.html#cfn-connect-evaluationform-evaluationformtextquestionproperties-automation>
+                                                  automation :: (Prelude.Maybe EvaluationFormTextQuestionAutomationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEvaluationFormTextQuestionPropertiesProperty ::
+  EvaluationFormTextQuestionPropertiesProperty
+mkEvaluationFormTextQuestionPropertiesProperty
+  = EvaluationFormTextQuestionPropertiesProperty
+      {haddock_workaround_ = (), automation = Prelude.Nothing}
+instance ToResourceProperties EvaluationFormTextQuestionPropertiesProperty where
+  toResourceProperties
+    EvaluationFormTextQuestionPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.EvaluationFormTextQuestionProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Automation" Prelude.<$> automation])}
+instance JSON.ToJSON EvaluationFormTextQuestionPropertiesProperty where
+  toJSON EvaluationFormTextQuestionPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Automation" Prelude.<$> automation]))
+instance Property "Automation" EvaluationFormTextQuestionPropertiesProperty where
+  type PropertyType "Automation" EvaluationFormTextQuestionPropertiesProperty = EvaluationFormTextQuestionAutomationProperty
+  set newValue EvaluationFormTextQuestionPropertiesProperty {..}
+    = EvaluationFormTextQuestionPropertiesProperty
+        {automation = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/EvaluationFormTextQuestionPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EvaluationFormTextQuestionPropertiesProperty :: Prelude.Type
+instance ToResourceProperties EvaluationFormTextQuestionPropertiesProperty
+instance Prelude.Eq EvaluationFormTextQuestionPropertiesProperty
+instance Prelude.Show EvaluationFormTextQuestionPropertiesProperty
+instance JSON.ToJSON EvaluationFormTextQuestionPropertiesProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.Connect.EvaluationForm.NumericQuestionPropertyValueAutomationProperty (
+        NumericQuestionPropertyValueAutomationProperty(..),
+        mkNumericQuestionPropertyValueAutomationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NumericQuestionPropertyValueAutomationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-numericquestionpropertyvalueautomation.html>
+    NumericQuestionPropertyValueAutomationProperty {haddock_workaround_ :: (),
+                                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-numericquestionpropertyvalueautomation.html#cfn-connect-evaluationform-numericquestionpropertyvalueautomation-label>
+                                                    label :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNumericQuestionPropertyValueAutomationProperty ::
+  Value Prelude.Text
+  -> NumericQuestionPropertyValueAutomationProperty
+mkNumericQuestionPropertyValueAutomationProperty label
+  = NumericQuestionPropertyValueAutomationProperty
+      {haddock_workaround_ = (), label = label}
+instance ToResourceProperties NumericQuestionPropertyValueAutomationProperty where
+  toResourceProperties
+    NumericQuestionPropertyValueAutomationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.NumericQuestionPropertyValueAutomation",
+         supportsTags = Prelude.False, properties = ["Label" JSON..= label]}
+instance JSON.ToJSON NumericQuestionPropertyValueAutomationProperty where
+  toJSON NumericQuestionPropertyValueAutomationProperty {..}
+    = JSON.object ["Label" JSON..= label]
+instance Property "Label" NumericQuestionPropertyValueAutomationProperty where
+  type PropertyType "Label" NumericQuestionPropertyValueAutomationProperty = Value Prelude.Text
+  set newValue NumericQuestionPropertyValueAutomationProperty {..}
+    = NumericQuestionPropertyValueAutomationProperty
+        {label = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/NumericQuestionPropertyValueAutomationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.NumericQuestionPropertyValueAutomationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NumericQuestionPropertyValueAutomationProperty :: Prelude.Type
+instance ToResourceProperties NumericQuestionPropertyValueAutomationProperty
+instance Prelude.Eq NumericQuestionPropertyValueAutomationProperty
+instance Prelude.Show NumericQuestionPropertyValueAutomationProperty
+instance JSON.ToJSON NumericQuestionPropertyValueAutomationProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.Connect.EvaluationForm.ScoringStrategyProperty (
+        ScoringStrategyProperty(..), mkScoringStrategyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScoringStrategyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-scoringstrategy.html>
+    ScoringStrategyProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-scoringstrategy.html#cfn-connect-evaluationform-scoringstrategy-mode>
+                             mode :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-scoringstrategy.html#cfn-connect-evaluationform-scoringstrategy-status>
+                             status :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScoringStrategyProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ScoringStrategyProperty
+mkScoringStrategyProperty mode status
+  = ScoringStrategyProperty
+      {haddock_workaround_ = (), mode = mode, status = status}
+instance ToResourceProperties ScoringStrategyProperty where
+  toResourceProperties ScoringStrategyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.ScoringStrategy",
+         supportsTags = Prelude.False,
+         properties = ["Mode" JSON..= mode, "Status" JSON..= status]}
+instance JSON.ToJSON ScoringStrategyProperty where
+  toJSON ScoringStrategyProperty {..}
+    = JSON.object ["Mode" JSON..= mode, "Status" JSON..= status]
+instance Property "Mode" ScoringStrategyProperty where
+  type PropertyType "Mode" ScoringStrategyProperty = Value Prelude.Text
+  set newValue ScoringStrategyProperty {..}
+    = ScoringStrategyProperty {mode = newValue, ..}
+instance Property "Status" ScoringStrategyProperty where
+  type PropertyType "Status" ScoringStrategyProperty = Value Prelude.Text
+  set newValue ScoringStrategyProperty {..}
+    = ScoringStrategyProperty {status = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/ScoringStrategyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.ScoringStrategyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ScoringStrategyProperty :: Prelude.Type
+instance ToResourceProperties ScoringStrategyProperty
+instance Prelude.Eq ScoringStrategyProperty
+instance Prelude.Show ScoringStrategyProperty
+instance JSON.ToJSON ScoringStrategyProperty
diff --git a/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs b/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.Connect.EvaluationForm.SingleSelectQuestionRuleCategoryAutomationProperty (
+        SingleSelectQuestionRuleCategoryAutomationProperty(..),
+        mkSingleSelectQuestionRuleCategoryAutomationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SingleSelectQuestionRuleCategoryAutomationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-singleselectquestionrulecategoryautomation.html>
+    SingleSelectQuestionRuleCategoryAutomationProperty {haddock_workaround_ :: (),
+                                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-singleselectquestionrulecategoryautomation.html#cfn-connect-evaluationform-singleselectquestionrulecategoryautomation-category>
+                                                        category :: (Value Prelude.Text),
+                                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-singleselectquestionrulecategoryautomation.html#cfn-connect-evaluationform-singleselectquestionrulecategoryautomation-condition>
+                                                        condition :: (Value Prelude.Text),
+                                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-evaluationform-singleselectquestionrulecategoryautomation.html#cfn-connect-evaluationform-singleselectquestionrulecategoryautomation-optionrefid>
+                                                        optionRefId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSingleSelectQuestionRuleCategoryAutomationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> SingleSelectQuestionRuleCategoryAutomationProperty
+mkSingleSelectQuestionRuleCategoryAutomationProperty
+  category
+  condition
+  optionRefId
+  = SingleSelectQuestionRuleCategoryAutomationProperty
+      {haddock_workaround_ = (), category = category,
+       condition = condition, optionRefId = optionRefId}
+instance ToResourceProperties SingleSelectQuestionRuleCategoryAutomationProperty where
+  toResourceProperties
+    SingleSelectQuestionRuleCategoryAutomationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::EvaluationForm.SingleSelectQuestionRuleCategoryAutomation",
+         supportsTags = Prelude.False,
+         properties = ["Category" JSON..= category,
+                       "Condition" JSON..= condition, "OptionRefId" JSON..= optionRefId]}
+instance JSON.ToJSON SingleSelectQuestionRuleCategoryAutomationProperty where
+  toJSON SingleSelectQuestionRuleCategoryAutomationProperty {..}
+    = JSON.object
+        ["Category" JSON..= category, "Condition" JSON..= condition,
+         "OptionRefId" JSON..= optionRefId]
+instance Property "Category" SingleSelectQuestionRuleCategoryAutomationProperty where
+  type PropertyType "Category" SingleSelectQuestionRuleCategoryAutomationProperty = Value Prelude.Text
+  set
+    newValue
+    SingleSelectQuestionRuleCategoryAutomationProperty {..}
+    = SingleSelectQuestionRuleCategoryAutomationProperty
+        {category = newValue, ..}
+instance Property "Condition" SingleSelectQuestionRuleCategoryAutomationProperty where
+  type PropertyType "Condition" SingleSelectQuestionRuleCategoryAutomationProperty = Value Prelude.Text
+  set
+    newValue
+    SingleSelectQuestionRuleCategoryAutomationProperty {..}
+    = SingleSelectQuestionRuleCategoryAutomationProperty
+        {condition = newValue, ..}
+instance Property "OptionRefId" SingleSelectQuestionRuleCategoryAutomationProperty where
+  type PropertyType "OptionRefId" SingleSelectQuestionRuleCategoryAutomationProperty = Value Prelude.Text
+  set
+    newValue
+    SingleSelectQuestionRuleCategoryAutomationProperty {..}
+    = SingleSelectQuestionRuleCategoryAutomationProperty
+        {optionRefId = newValue, ..}
diff --git a/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs-boot b/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/EvaluationForm/SingleSelectQuestionRuleCategoryAutomationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.EvaluationForm.SingleSelectQuestionRuleCategoryAutomationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SingleSelectQuestionRuleCategoryAutomationProperty :: Prelude.Type
+instance ToResourceProperties SingleSelectQuestionRuleCategoryAutomationProperty
+instance Prelude.Eq SingleSelectQuestionRuleCategoryAutomationProperty
+instance Prelude.Show SingleSelectQuestionRuleCategoryAutomationProperty
+instance JSON.ToJSON SingleSelectQuestionRuleCategoryAutomationProperty
diff --git a/gen/Stratosphere/Connect/HoursOfOperation.hs b/gen/Stratosphere/Connect/HoursOfOperation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation.hs
@@ -0,0 +1,95 @@
+module Stratosphere.Connect.HoursOfOperation (
+        module Exports, HoursOfOperation(..), mkHoursOfOperation
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.HoursOfOperation.HoursOfOperationConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data HoursOfOperation
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html>
+    HoursOfOperation {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-config>
+                      config :: [HoursOfOperationConfigProperty],
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-description>
+                      description :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-hoursofoperationoverrides>
+                      hoursOfOperationOverrides :: (Prelude.Maybe [HoursOfOperationOverrideProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-instancearn>
+                      instanceArn :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-name>
+                      name :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-tags>
+                      tags :: (Prelude.Maybe [Tag]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html#cfn-connect-hoursofoperation-timezone>
+                      timeZone :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHoursOfOperation ::
+  [HoursOfOperationConfigProperty]
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> HoursOfOperation
+mkHoursOfOperation config instanceArn name timeZone
+  = HoursOfOperation
+      {haddock_workaround_ = (), config = config,
+       instanceArn = instanceArn, name = name, timeZone = timeZone,
+       description = Prelude.Nothing,
+       hoursOfOperationOverrides = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties HoursOfOperation where
+  toResourceProperties HoursOfOperation {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Config" JSON..= config, "InstanceArn" JSON..= instanceArn,
+                            "Name" JSON..= name, "TimeZone" JSON..= timeZone]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "HoursOfOperationOverrides"
+                                 Prelude.<$> hoursOfOperationOverrides,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON HoursOfOperation where
+  toJSON HoursOfOperation {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Config" JSON..= config, "InstanceArn" JSON..= instanceArn,
+               "Name" JSON..= name, "TimeZone" JSON..= timeZone]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "HoursOfOperationOverrides"
+                    Prelude.<$> hoursOfOperationOverrides,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Config" HoursOfOperation where
+  type PropertyType "Config" HoursOfOperation = [HoursOfOperationConfigProperty]
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {config = newValue, ..}
+instance Property "Description" HoursOfOperation where
+  type PropertyType "Description" HoursOfOperation = Value Prelude.Text
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {description = Prelude.pure newValue, ..}
+instance Property "HoursOfOperationOverrides" HoursOfOperation where
+  type PropertyType "HoursOfOperationOverrides" HoursOfOperation = [HoursOfOperationOverrideProperty]
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation
+        {hoursOfOperationOverrides = Prelude.pure newValue, ..}
+instance Property "InstanceArn" HoursOfOperation where
+  type PropertyType "InstanceArn" HoursOfOperation = Value Prelude.Text
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {instanceArn = newValue, ..}
+instance Property "Name" HoursOfOperation where
+  type PropertyType "Name" HoursOfOperation = Value Prelude.Text
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {name = newValue, ..}
+instance Property "Tags" HoursOfOperation where
+  type PropertyType "Tags" HoursOfOperation = [Tag]
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {tags = Prelude.pure newValue, ..}
+instance Property "TimeZone" HoursOfOperation where
+  type PropertyType "TimeZone" HoursOfOperation = Value Prelude.Text
+  set newValue HoursOfOperation {..}
+    = HoursOfOperation {timeZone = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationConfigProperty (
+        module Exports, HoursOfOperationConfigProperty(..),
+        mkHoursOfOperationConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.HoursOfOperation.HoursOfOperationTimeSliceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HoursOfOperationConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationconfig.html>
+    HoursOfOperationConfigProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationconfig.html#cfn-connect-hoursofoperation-hoursofoperationconfig-day>
+                                    day :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationconfig.html#cfn-connect-hoursofoperation-hoursofoperationconfig-endtime>
+                                    endTime :: HoursOfOperationTimeSliceProperty,
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationconfig.html#cfn-connect-hoursofoperation-hoursofoperationconfig-starttime>
+                                    startTime :: HoursOfOperationTimeSliceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHoursOfOperationConfigProperty ::
+  Value Prelude.Text
+  -> HoursOfOperationTimeSliceProperty
+     -> HoursOfOperationTimeSliceProperty
+        -> HoursOfOperationConfigProperty
+mkHoursOfOperationConfigProperty day endTime startTime
+  = HoursOfOperationConfigProperty
+      {haddock_workaround_ = (), day = day, endTime = endTime,
+       startTime = startTime}
+instance ToResourceProperties HoursOfOperationConfigProperty where
+  toResourceProperties HoursOfOperationConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation.HoursOfOperationConfig",
+         supportsTags = Prelude.False,
+         properties = ["Day" JSON..= day, "EndTime" JSON..= endTime,
+                       "StartTime" JSON..= startTime]}
+instance JSON.ToJSON HoursOfOperationConfigProperty where
+  toJSON HoursOfOperationConfigProperty {..}
+    = JSON.object
+        ["Day" JSON..= day, "EndTime" JSON..= endTime,
+         "StartTime" JSON..= startTime]
+instance Property "Day" HoursOfOperationConfigProperty where
+  type PropertyType "Day" HoursOfOperationConfigProperty = Value Prelude.Text
+  set newValue HoursOfOperationConfigProperty {..}
+    = HoursOfOperationConfigProperty {day = newValue, ..}
+instance Property "EndTime" HoursOfOperationConfigProperty where
+  type PropertyType "EndTime" HoursOfOperationConfigProperty = HoursOfOperationTimeSliceProperty
+  set newValue HoursOfOperationConfigProperty {..}
+    = HoursOfOperationConfigProperty {endTime = newValue, ..}
+instance Property "StartTime" HoursOfOperationConfigProperty where
+  type PropertyType "StartTime" HoursOfOperationConfigProperty = HoursOfOperationTimeSliceProperty
+  set newValue HoursOfOperationConfigProperty {..}
+    = HoursOfOperationConfigProperty {startTime = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs-boot b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HoursOfOperationConfigProperty :: Prelude.Type
+instance ToResourceProperties HoursOfOperationConfigProperty
+instance Prelude.Eq HoursOfOperationConfigProperty
+instance Prelude.Show HoursOfOperationConfigProperty
+instance JSON.ToJSON HoursOfOperationConfigProperty
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideConfigProperty (
+        module Exports, HoursOfOperationOverrideConfigProperty(..),
+        mkHoursOfOperationOverrideConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.HoursOfOperation.OverrideTimeSliceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HoursOfOperationOverrideConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverrideconfig.html>
+    HoursOfOperationOverrideConfigProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverrideconfig.html#cfn-connect-hoursofoperation-hoursofoperationoverrideconfig-day>
+                                            day :: (Value Prelude.Text),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverrideconfig.html#cfn-connect-hoursofoperation-hoursofoperationoverrideconfig-endtime>
+                                            endTime :: OverrideTimeSliceProperty,
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverrideconfig.html#cfn-connect-hoursofoperation-hoursofoperationoverrideconfig-starttime>
+                                            startTime :: OverrideTimeSliceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHoursOfOperationOverrideConfigProperty ::
+  Value Prelude.Text
+  -> OverrideTimeSliceProperty
+     -> OverrideTimeSliceProperty
+        -> HoursOfOperationOverrideConfigProperty
+mkHoursOfOperationOverrideConfigProperty day endTime startTime
+  = HoursOfOperationOverrideConfigProperty
+      {haddock_workaround_ = (), day = day, endTime = endTime,
+       startTime = startTime}
+instance ToResourceProperties HoursOfOperationOverrideConfigProperty where
+  toResourceProperties HoursOfOperationOverrideConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation.HoursOfOperationOverrideConfig",
+         supportsTags = Prelude.False,
+         properties = ["Day" JSON..= day, "EndTime" JSON..= endTime,
+                       "StartTime" JSON..= startTime]}
+instance JSON.ToJSON HoursOfOperationOverrideConfigProperty where
+  toJSON HoursOfOperationOverrideConfigProperty {..}
+    = JSON.object
+        ["Day" JSON..= day, "EndTime" JSON..= endTime,
+         "StartTime" JSON..= startTime]
+instance Property "Day" HoursOfOperationOverrideConfigProperty where
+  type PropertyType "Day" HoursOfOperationOverrideConfigProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideConfigProperty {..}
+    = HoursOfOperationOverrideConfigProperty {day = newValue, ..}
+instance Property "EndTime" HoursOfOperationOverrideConfigProperty where
+  type PropertyType "EndTime" HoursOfOperationOverrideConfigProperty = OverrideTimeSliceProperty
+  set newValue HoursOfOperationOverrideConfigProperty {..}
+    = HoursOfOperationOverrideConfigProperty {endTime = newValue, ..}
+instance Property "StartTime" HoursOfOperationOverrideConfigProperty where
+  type PropertyType "StartTime" HoursOfOperationOverrideConfigProperty = OverrideTimeSliceProperty
+  set newValue HoursOfOperationOverrideConfigProperty {..}
+    = HoursOfOperationOverrideConfigProperty {startTime = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs-boot b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HoursOfOperationOverrideConfigProperty :: Prelude.Type
+instance ToResourceProperties HoursOfOperationOverrideConfigProperty
+instance Prelude.Eq HoursOfOperationOverrideConfigProperty
+instance Prelude.Show HoursOfOperationOverrideConfigProperty
+instance JSON.ToJSON HoursOfOperationOverrideConfigProperty
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs
@@ -0,0 +1,96 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideProperty (
+        module Exports, HoursOfOperationOverrideProperty(..),
+        mkHoursOfOperationOverrideProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HoursOfOperationOverrideProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html>
+    HoursOfOperationOverrideProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-effectivefrom>
+                                      effectiveFrom :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-effectivetill>
+                                      effectiveTill :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-hoursofoperationoverrideid>
+                                      hoursOfOperationOverrideId :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-overrideconfig>
+                                      overrideConfig :: [HoursOfOperationOverrideConfigProperty],
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-overridedescription>
+                                      overrideDescription :: (Prelude.Maybe (Value Prelude.Text)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html#cfn-connect-hoursofoperation-hoursofoperationoverride-overridename>
+                                      overrideName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHoursOfOperationOverrideProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> [HoursOfOperationOverrideConfigProperty]
+        -> Value Prelude.Text -> HoursOfOperationOverrideProperty
+mkHoursOfOperationOverrideProperty
+  effectiveFrom
+  effectiveTill
+  overrideConfig
+  overrideName
+  = HoursOfOperationOverrideProperty
+      {haddock_workaround_ = (), effectiveFrom = effectiveFrom,
+       effectiveTill = effectiveTill, overrideConfig = overrideConfig,
+       overrideName = overrideName,
+       hoursOfOperationOverrideId = Prelude.Nothing,
+       overrideDescription = Prelude.Nothing}
+instance ToResourceProperties HoursOfOperationOverrideProperty where
+  toResourceProperties HoursOfOperationOverrideProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation.HoursOfOperationOverride",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EffectiveFrom" JSON..= effectiveFrom,
+                            "EffectiveTill" JSON..= effectiveTill,
+                            "OverrideConfig" JSON..= overrideConfig,
+                            "OverrideName" JSON..= overrideName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HoursOfOperationOverrideId"
+                                 Prelude.<$> hoursOfOperationOverrideId,
+                               (JSON..=) "OverrideDescription" Prelude.<$> overrideDescription]))}
+instance JSON.ToJSON HoursOfOperationOverrideProperty where
+  toJSON HoursOfOperationOverrideProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EffectiveFrom" JSON..= effectiveFrom,
+               "EffectiveTill" JSON..= effectiveTill,
+               "OverrideConfig" JSON..= overrideConfig,
+               "OverrideName" JSON..= overrideName]
+              (Prelude.catMaybes
+                 [(JSON..=) "HoursOfOperationOverrideId"
+                    Prelude.<$> hoursOfOperationOverrideId,
+                  (JSON..=) "OverrideDescription" Prelude.<$> overrideDescription])))
+instance Property "EffectiveFrom" HoursOfOperationOverrideProperty where
+  type PropertyType "EffectiveFrom" HoursOfOperationOverrideProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty {effectiveFrom = newValue, ..}
+instance Property "EffectiveTill" HoursOfOperationOverrideProperty where
+  type PropertyType "EffectiveTill" HoursOfOperationOverrideProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty {effectiveTill = newValue, ..}
+instance Property "HoursOfOperationOverrideId" HoursOfOperationOverrideProperty where
+  type PropertyType "HoursOfOperationOverrideId" HoursOfOperationOverrideProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty
+        {hoursOfOperationOverrideId = Prelude.pure newValue, ..}
+instance Property "OverrideConfig" HoursOfOperationOverrideProperty where
+  type PropertyType "OverrideConfig" HoursOfOperationOverrideProperty = [HoursOfOperationOverrideConfigProperty]
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty {overrideConfig = newValue, ..}
+instance Property "OverrideDescription" HoursOfOperationOverrideProperty where
+  type PropertyType "OverrideDescription" HoursOfOperationOverrideProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty
+        {overrideDescription = Prelude.pure newValue, ..}
+instance Property "OverrideName" HoursOfOperationOverrideProperty where
+  type PropertyType "OverrideName" HoursOfOperationOverrideProperty = Value Prelude.Text
+  set newValue HoursOfOperationOverrideProperty {..}
+    = HoursOfOperationOverrideProperty {overrideName = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs-boot b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationOverrideProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HoursOfOperationOverrideProperty :: Prelude.Type
+instance ToResourceProperties HoursOfOperationOverrideProperty
+instance Prelude.Eq HoursOfOperationOverrideProperty
+instance Prelude.Show HoursOfOperationOverrideProperty
+instance JSON.ToJSON HoursOfOperationOverrideProperty
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationTimeSliceProperty (
+        HoursOfOperationTimeSliceProperty(..),
+        mkHoursOfOperationTimeSliceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HoursOfOperationTimeSliceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationtimeslice.html>
+    HoursOfOperationTimeSliceProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationtimeslice.html#cfn-connect-hoursofoperation-hoursofoperationtimeslice-hours>
+                                       hours :: (Value Prelude.Integer),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationtimeslice.html#cfn-connect-hoursofoperation-hoursofoperationtimeslice-minutes>
+                                       minutes :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHoursOfOperationTimeSliceProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> HoursOfOperationTimeSliceProperty
+mkHoursOfOperationTimeSliceProperty hours minutes
+  = HoursOfOperationTimeSliceProperty
+      {haddock_workaround_ = (), hours = hours, minutes = minutes}
+instance ToResourceProperties HoursOfOperationTimeSliceProperty where
+  toResourceProperties HoursOfOperationTimeSliceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation.HoursOfOperationTimeSlice",
+         supportsTags = Prelude.False,
+         properties = ["Hours" JSON..= hours, "Minutes" JSON..= minutes]}
+instance JSON.ToJSON HoursOfOperationTimeSliceProperty where
+  toJSON HoursOfOperationTimeSliceProperty {..}
+    = JSON.object ["Hours" JSON..= hours, "Minutes" JSON..= minutes]
+instance Property "Hours" HoursOfOperationTimeSliceProperty where
+  type PropertyType "Hours" HoursOfOperationTimeSliceProperty = Value Prelude.Integer
+  set newValue HoursOfOperationTimeSliceProperty {..}
+    = HoursOfOperationTimeSliceProperty {hours = newValue, ..}
+instance Property "Minutes" HoursOfOperationTimeSliceProperty where
+  type PropertyType "Minutes" HoursOfOperationTimeSliceProperty = Value Prelude.Integer
+  set newValue HoursOfOperationTimeSliceProperty {..}
+    = HoursOfOperationTimeSliceProperty {minutes = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs-boot b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/HoursOfOperationTimeSliceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.HoursOfOperation.HoursOfOperationTimeSliceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HoursOfOperationTimeSliceProperty :: Prelude.Type
+instance ToResourceProperties HoursOfOperationTimeSliceProperty
+instance Prelude.Eq HoursOfOperationTimeSliceProperty
+instance Prelude.Show HoursOfOperationTimeSliceProperty
+instance JSON.ToJSON HoursOfOperationTimeSliceProperty
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs b/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Connect.HoursOfOperation.OverrideTimeSliceProperty (
+        OverrideTimeSliceProperty(..), mkOverrideTimeSliceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OverrideTimeSliceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-overridetimeslice.html>
+    OverrideTimeSliceProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-overridetimeslice.html#cfn-connect-hoursofoperation-overridetimeslice-hours>
+                               hours :: (Value Prelude.Integer),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-overridetimeslice.html#cfn-connect-hoursofoperation-overridetimeslice-minutes>
+                               minutes :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOverrideTimeSliceProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> OverrideTimeSliceProperty
+mkOverrideTimeSliceProperty hours minutes
+  = OverrideTimeSliceProperty
+      {haddock_workaround_ = (), hours = hours, minutes = minutes}
+instance ToResourceProperties OverrideTimeSliceProperty where
+  toResourceProperties OverrideTimeSliceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::HoursOfOperation.OverrideTimeSlice",
+         supportsTags = Prelude.False,
+         properties = ["Hours" JSON..= hours, "Minutes" JSON..= minutes]}
+instance JSON.ToJSON OverrideTimeSliceProperty where
+  toJSON OverrideTimeSliceProperty {..}
+    = JSON.object ["Hours" JSON..= hours, "Minutes" JSON..= minutes]
+instance Property "Hours" OverrideTimeSliceProperty where
+  type PropertyType "Hours" OverrideTimeSliceProperty = Value Prelude.Integer
+  set newValue OverrideTimeSliceProperty {..}
+    = OverrideTimeSliceProperty {hours = newValue, ..}
+instance Property "Minutes" OverrideTimeSliceProperty where
+  type PropertyType "Minutes" OverrideTimeSliceProperty = Value Prelude.Integer
+  set newValue OverrideTimeSliceProperty {..}
+    = OverrideTimeSliceProperty {minutes = newValue, ..}
diff --git a/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs-boot b/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/HoursOfOperation/OverrideTimeSliceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.HoursOfOperation.OverrideTimeSliceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OverrideTimeSliceProperty :: Prelude.Type
+instance ToResourceProperties OverrideTimeSliceProperty
+instance Prelude.Eq OverrideTimeSliceProperty
+instance Prelude.Show OverrideTimeSliceProperty
+instance JSON.ToJSON OverrideTimeSliceProperty
diff --git a/gen/Stratosphere/Connect/Instance.hs b/gen/Stratosphere/Connect/Instance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Instance.hs
@@ -0,0 +1,73 @@
+module Stratosphere.Connect.Instance (
+        module Exports, Instance(..), mkInstance
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Instance.AttributesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Instance
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html>
+    Instance {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html#cfn-connect-instance-attributes>
+              attributes :: AttributesProperty,
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html#cfn-connect-instance-directoryid>
+              directoryId :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html#cfn-connect-instance-identitymanagementtype>
+              identityManagementType :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html#cfn-connect-instance-instancealias>
+              instanceAlias :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html#cfn-connect-instance-tags>
+              tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstance :: AttributesProperty -> Value Prelude.Text -> Instance
+mkInstance attributes identityManagementType
+  = Instance
+      {haddock_workaround_ = (), attributes = attributes,
+       identityManagementType = identityManagementType,
+       directoryId = Prelude.Nothing, instanceAlias = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Instance where
+  toResourceProperties Instance {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Instance", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Attributes" JSON..= attributes,
+                            "IdentityManagementType" JSON..= identityManagementType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DirectoryId" Prelude.<$> directoryId,
+                               (JSON..=) "InstanceAlias" Prelude.<$> instanceAlias,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Instance where
+  toJSON Instance {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Attributes" JSON..= attributes,
+               "IdentityManagementType" JSON..= identityManagementType]
+              (Prelude.catMaybes
+                 [(JSON..=) "DirectoryId" Prelude.<$> directoryId,
+                  (JSON..=) "InstanceAlias" Prelude.<$> instanceAlias,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Attributes" Instance where
+  type PropertyType "Attributes" Instance = AttributesProperty
+  set newValue Instance {..} = Instance {attributes = newValue, ..}
+instance Property "DirectoryId" Instance where
+  type PropertyType "DirectoryId" Instance = Value Prelude.Text
+  set newValue Instance {..}
+    = Instance {directoryId = Prelude.pure newValue, ..}
+instance Property "IdentityManagementType" Instance where
+  type PropertyType "IdentityManagementType" Instance = Value Prelude.Text
+  set newValue Instance {..}
+    = Instance {identityManagementType = newValue, ..}
+instance Property "InstanceAlias" Instance where
+  type PropertyType "InstanceAlias" Instance = Value Prelude.Text
+  set newValue Instance {..}
+    = Instance {instanceAlias = Prelude.pure newValue, ..}
+instance Property "Tags" Instance where
+  type PropertyType "Tags" Instance = [Tag]
+  set newValue Instance {..}
+    = Instance {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Instance/AttributesProperty.hs b/gen/Stratosphere/Connect/Instance/AttributesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Instance/AttributesProperty.hs
@@ -0,0 +1,152 @@
+module Stratosphere.Connect.Instance.AttributesProperty (
+        AttributesProperty(..), mkAttributesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html>
+    AttributesProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-autoresolvebestvoices>
+                        autoResolveBestVoices :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-contactlens>
+                        contactLens :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-contactflowlogs>
+                        contactflowLogs :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-earlymedia>
+                        earlyMedia :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-enhancedchatmonitoring>
+                        enhancedChatMonitoring :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-enhancedcontactmonitoring>
+                        enhancedContactMonitoring :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-highvolumeoutbound>
+                        highVolumeOutBound :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-inboundcalls>
+                        inboundCalls :: (Value Prelude.Bool),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-multipartychatconference>
+                        multiPartyChatConference :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-multipartyconference>
+                        multiPartyConference :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-outboundcalls>
+                        outboundCalls :: (Value Prelude.Bool),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instance-attributes.html#cfn-connect-instance-attributes-usecustomttsvoices>
+                        useCustomTTSVoices :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributesProperty ::
+  Value Prelude.Bool -> Value Prelude.Bool -> AttributesProperty
+mkAttributesProperty inboundCalls outboundCalls
+  = AttributesProperty
+      {haddock_workaround_ = (), inboundCalls = inboundCalls,
+       outboundCalls = outboundCalls,
+       autoResolveBestVoices = Prelude.Nothing,
+       contactLens = Prelude.Nothing, contactflowLogs = Prelude.Nothing,
+       earlyMedia = Prelude.Nothing,
+       enhancedChatMonitoring = Prelude.Nothing,
+       enhancedContactMonitoring = Prelude.Nothing,
+       highVolumeOutBound = Prelude.Nothing,
+       multiPartyChatConference = Prelude.Nothing,
+       multiPartyConference = Prelude.Nothing,
+       useCustomTTSVoices = Prelude.Nothing}
+instance ToResourceProperties AttributesProperty where
+  toResourceProperties AttributesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Instance.Attributes",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InboundCalls" JSON..= inboundCalls,
+                            "OutboundCalls" JSON..= outboundCalls]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoResolveBestVoices"
+                                 Prelude.<$> autoResolveBestVoices,
+                               (JSON..=) "ContactLens" Prelude.<$> contactLens,
+                               (JSON..=) "ContactflowLogs" Prelude.<$> contactflowLogs,
+                               (JSON..=) "EarlyMedia" Prelude.<$> earlyMedia,
+                               (JSON..=) "EnhancedChatMonitoring"
+                                 Prelude.<$> enhancedChatMonitoring,
+                               (JSON..=) "EnhancedContactMonitoring"
+                                 Prelude.<$> enhancedContactMonitoring,
+                               (JSON..=) "HighVolumeOutBound" Prelude.<$> highVolumeOutBound,
+                               (JSON..=) "MultiPartyChatConference"
+                                 Prelude.<$> multiPartyChatConference,
+                               (JSON..=) "MultiPartyConference" Prelude.<$> multiPartyConference,
+                               (JSON..=) "UseCustomTTSVoices" Prelude.<$> useCustomTTSVoices]))}
+instance JSON.ToJSON AttributesProperty where
+  toJSON AttributesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InboundCalls" JSON..= inboundCalls,
+               "OutboundCalls" JSON..= outboundCalls]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoResolveBestVoices"
+                    Prelude.<$> autoResolveBestVoices,
+                  (JSON..=) "ContactLens" Prelude.<$> contactLens,
+                  (JSON..=) "ContactflowLogs" Prelude.<$> contactflowLogs,
+                  (JSON..=) "EarlyMedia" Prelude.<$> earlyMedia,
+                  (JSON..=) "EnhancedChatMonitoring"
+                    Prelude.<$> enhancedChatMonitoring,
+                  (JSON..=) "EnhancedContactMonitoring"
+                    Prelude.<$> enhancedContactMonitoring,
+                  (JSON..=) "HighVolumeOutBound" Prelude.<$> highVolumeOutBound,
+                  (JSON..=) "MultiPartyChatConference"
+                    Prelude.<$> multiPartyChatConference,
+                  (JSON..=) "MultiPartyConference" Prelude.<$> multiPartyConference,
+                  (JSON..=) "UseCustomTTSVoices" Prelude.<$> useCustomTTSVoices])))
+instance Property "AutoResolveBestVoices" AttributesProperty where
+  type PropertyType "AutoResolveBestVoices" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {autoResolveBestVoices = Prelude.pure newValue, ..}
+instance Property "ContactLens" AttributesProperty where
+  type PropertyType "ContactLens" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty {contactLens = Prelude.pure newValue, ..}
+instance Property "ContactflowLogs" AttributesProperty where
+  type PropertyType "ContactflowLogs" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty {contactflowLogs = Prelude.pure newValue, ..}
+instance Property "EarlyMedia" AttributesProperty where
+  type PropertyType "EarlyMedia" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty {earlyMedia = Prelude.pure newValue, ..}
+instance Property "EnhancedChatMonitoring" AttributesProperty where
+  type PropertyType "EnhancedChatMonitoring" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {enhancedChatMonitoring = Prelude.pure newValue, ..}
+instance Property "EnhancedContactMonitoring" AttributesProperty where
+  type PropertyType "EnhancedContactMonitoring" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {enhancedContactMonitoring = Prelude.pure newValue, ..}
+instance Property "HighVolumeOutBound" AttributesProperty where
+  type PropertyType "HighVolumeOutBound" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {highVolumeOutBound = Prelude.pure newValue, ..}
+instance Property "InboundCalls" AttributesProperty where
+  type PropertyType "InboundCalls" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty {inboundCalls = newValue, ..}
+instance Property "MultiPartyChatConference" AttributesProperty where
+  type PropertyType "MultiPartyChatConference" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {multiPartyChatConference = Prelude.pure newValue, ..}
+instance Property "MultiPartyConference" AttributesProperty where
+  type PropertyType "MultiPartyConference" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {multiPartyConference = Prelude.pure newValue, ..}
+instance Property "OutboundCalls" AttributesProperty where
+  type PropertyType "OutboundCalls" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty {outboundCalls = newValue, ..}
+instance Property "UseCustomTTSVoices" AttributesProperty where
+  type PropertyType "UseCustomTTSVoices" AttributesProperty = Value Prelude.Bool
+  set newValue AttributesProperty {..}
+    = AttributesProperty
+        {useCustomTTSVoices = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Instance/AttributesProperty.hs-boot b/gen/Stratosphere/Connect/Instance/AttributesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Instance/AttributesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Instance.AttributesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributesProperty :: Prelude.Type
+instance ToResourceProperties AttributesProperty
+instance Prelude.Eq AttributesProperty
+instance Prelude.Show AttributesProperty
+instance JSON.ToJSON AttributesProperty
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig.hs b/gen/Stratosphere/Connect/InstanceStorageConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig.hs
@@ -0,0 +1,105 @@
+module Stratosphere.Connect.InstanceStorageConfig (
+        module Exports, InstanceStorageConfig(..), mkInstanceStorageConfig
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.KinesisFirehoseConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.KinesisStreamConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.KinesisVideoStreamConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.S3ConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstanceStorageConfig
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html>
+    InstanceStorageConfig {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-instancearn>
+                           instanceArn :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-kinesisfirehoseconfig>
+                           kinesisFirehoseConfig :: (Prelude.Maybe KinesisFirehoseConfigProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-kinesisstreamconfig>
+                           kinesisStreamConfig :: (Prelude.Maybe KinesisStreamConfigProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-kinesisvideostreamconfig>
+                           kinesisVideoStreamConfig :: (Prelude.Maybe KinesisVideoStreamConfigProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-resourcetype>
+                           resourceType :: (Value Prelude.Text),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-s3config>
+                           s3Config :: (Prelude.Maybe S3ConfigProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html#cfn-connect-instancestorageconfig-storagetype>
+                           storageType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstanceStorageConfig ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> InstanceStorageConfig
+mkInstanceStorageConfig instanceArn resourceType storageType
+  = InstanceStorageConfig
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       resourceType = resourceType, storageType = storageType,
+       kinesisFirehoseConfig = Prelude.Nothing,
+       kinesisStreamConfig = Prelude.Nothing,
+       kinesisVideoStreamConfig = Prelude.Nothing,
+       s3Config = Prelude.Nothing}
+instance ToResourceProperties InstanceStorageConfig where
+  toResourceProperties InstanceStorageConfig {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn,
+                            "ResourceType" JSON..= resourceType,
+                            "StorageType" JSON..= storageType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "KinesisFirehoseConfig"
+                                 Prelude.<$> kinesisFirehoseConfig,
+                               (JSON..=) "KinesisStreamConfig" Prelude.<$> kinesisStreamConfig,
+                               (JSON..=) "KinesisVideoStreamConfig"
+                                 Prelude.<$> kinesisVideoStreamConfig,
+                               (JSON..=) "S3Config" Prelude.<$> s3Config]))}
+instance JSON.ToJSON InstanceStorageConfig where
+  toJSON InstanceStorageConfig {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn,
+               "ResourceType" JSON..= resourceType,
+               "StorageType" JSON..= storageType]
+              (Prelude.catMaybes
+                 [(JSON..=) "KinesisFirehoseConfig"
+                    Prelude.<$> kinesisFirehoseConfig,
+                  (JSON..=) "KinesisStreamConfig" Prelude.<$> kinesisStreamConfig,
+                  (JSON..=) "KinesisVideoStreamConfig"
+                    Prelude.<$> kinesisVideoStreamConfig,
+                  (JSON..=) "S3Config" Prelude.<$> s3Config])))
+instance Property "InstanceArn" InstanceStorageConfig where
+  type PropertyType "InstanceArn" InstanceStorageConfig = Value Prelude.Text
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig {instanceArn = newValue, ..}
+instance Property "KinesisFirehoseConfig" InstanceStorageConfig where
+  type PropertyType "KinesisFirehoseConfig" InstanceStorageConfig = KinesisFirehoseConfigProperty
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig
+        {kinesisFirehoseConfig = Prelude.pure newValue, ..}
+instance Property "KinesisStreamConfig" InstanceStorageConfig where
+  type PropertyType "KinesisStreamConfig" InstanceStorageConfig = KinesisStreamConfigProperty
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig
+        {kinesisStreamConfig = Prelude.pure newValue, ..}
+instance Property "KinesisVideoStreamConfig" InstanceStorageConfig where
+  type PropertyType "KinesisVideoStreamConfig" InstanceStorageConfig = KinesisVideoStreamConfigProperty
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig
+        {kinesisVideoStreamConfig = Prelude.pure newValue, ..}
+instance Property "ResourceType" InstanceStorageConfig where
+  type PropertyType "ResourceType" InstanceStorageConfig = Value Prelude.Text
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig {resourceType = newValue, ..}
+instance Property "S3Config" InstanceStorageConfig where
+  type PropertyType "S3Config" InstanceStorageConfig = S3ConfigProperty
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig {s3Config = Prelude.pure newValue, ..}
+instance Property "StorageType" InstanceStorageConfig where
+  type PropertyType "StorageType" InstanceStorageConfig = Value Prelude.Text
+  set newValue InstanceStorageConfig {..}
+    = InstanceStorageConfig {storageType = newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs b/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.Connect.InstanceStorageConfig.EncryptionConfigProperty (
+        EncryptionConfigProperty(..), mkEncryptionConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EncryptionConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-encryptionconfig.html>
+    EncryptionConfigProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-encryptionconfig.html#cfn-connect-instancestorageconfig-encryptionconfig-encryptiontype>
+                              encryptionType :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-encryptionconfig.html#cfn-connect-instancestorageconfig-encryptionconfig-keyid>
+                              keyId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEncryptionConfigProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> EncryptionConfigProperty
+mkEncryptionConfigProperty encryptionType keyId
+  = EncryptionConfigProperty
+      {haddock_workaround_ = (), encryptionType = encryptionType,
+       keyId = keyId}
+instance ToResourceProperties EncryptionConfigProperty where
+  toResourceProperties EncryptionConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig.EncryptionConfig",
+         supportsTags = Prelude.False,
+         properties = ["EncryptionType" JSON..= encryptionType,
+                       "KeyId" JSON..= keyId]}
+instance JSON.ToJSON EncryptionConfigProperty where
+  toJSON EncryptionConfigProperty {..}
+    = JSON.object
+        ["EncryptionType" JSON..= encryptionType, "KeyId" JSON..= keyId]
+instance Property "EncryptionType" EncryptionConfigProperty where
+  type PropertyType "EncryptionType" EncryptionConfigProperty = Value Prelude.Text
+  set newValue EncryptionConfigProperty {..}
+    = EncryptionConfigProperty {encryptionType = newValue, ..}
+instance Property "KeyId" EncryptionConfigProperty where
+  type PropertyType "KeyId" EncryptionConfigProperty = Value Prelude.Text
+  set newValue EncryptionConfigProperty {..}
+    = EncryptionConfigProperty {keyId = newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs-boot b/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/EncryptionConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.InstanceStorageConfig.EncryptionConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EncryptionConfigProperty :: Prelude.Type
+instance ToResourceProperties EncryptionConfigProperty
+instance Prelude.Eq EncryptionConfigProperty
+instance Prelude.Show EncryptionConfigProperty
+instance JSON.ToJSON EncryptionConfigProperty
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisFirehoseConfigProperty (
+        KinesisFirehoseConfigProperty(..), mkKinesisFirehoseConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KinesisFirehoseConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisfirehoseconfig.html>
+    KinesisFirehoseConfigProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisfirehoseconfig.html#cfn-connect-instancestorageconfig-kinesisfirehoseconfig-firehosearn>
+                                   firehoseArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKinesisFirehoseConfigProperty ::
+  Value Prelude.Text -> KinesisFirehoseConfigProperty
+mkKinesisFirehoseConfigProperty firehoseArn
+  = KinesisFirehoseConfigProperty
+      {haddock_workaround_ = (), firehoseArn = firehoseArn}
+instance ToResourceProperties KinesisFirehoseConfigProperty where
+  toResourceProperties KinesisFirehoseConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig.KinesisFirehoseConfig",
+         supportsTags = Prelude.False,
+         properties = ["FirehoseArn" JSON..= firehoseArn]}
+instance JSON.ToJSON KinesisFirehoseConfigProperty where
+  toJSON KinesisFirehoseConfigProperty {..}
+    = JSON.object ["FirehoseArn" JSON..= firehoseArn]
+instance Property "FirehoseArn" KinesisFirehoseConfigProperty where
+  type PropertyType "FirehoseArn" KinesisFirehoseConfigProperty = Value Prelude.Text
+  set newValue KinesisFirehoseConfigProperty {..}
+    = KinesisFirehoseConfigProperty {firehoseArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs-boot b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisFirehoseConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisFirehoseConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KinesisFirehoseConfigProperty :: Prelude.Type
+instance ToResourceProperties KinesisFirehoseConfigProperty
+instance Prelude.Eq KinesisFirehoseConfigProperty
+instance Prelude.Show KinesisFirehoseConfigProperty
+instance JSON.ToJSON KinesisFirehoseConfigProperty
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisStreamConfigProperty (
+        KinesisStreamConfigProperty(..), mkKinesisStreamConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KinesisStreamConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisstreamconfig.html>
+    KinesisStreamConfigProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisstreamconfig.html#cfn-connect-instancestorageconfig-kinesisstreamconfig-streamarn>
+                                 streamArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKinesisStreamConfigProperty ::
+  Value Prelude.Text -> KinesisStreamConfigProperty
+mkKinesisStreamConfigProperty streamArn
+  = KinesisStreamConfigProperty
+      {haddock_workaround_ = (), streamArn = streamArn}
+instance ToResourceProperties KinesisStreamConfigProperty where
+  toResourceProperties KinesisStreamConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig.KinesisStreamConfig",
+         supportsTags = Prelude.False,
+         properties = ["StreamArn" JSON..= streamArn]}
+instance JSON.ToJSON KinesisStreamConfigProperty where
+  toJSON KinesisStreamConfigProperty {..}
+    = JSON.object ["StreamArn" JSON..= streamArn]
+instance Property "StreamArn" KinesisStreamConfigProperty where
+  type PropertyType "StreamArn" KinesisStreamConfigProperty = Value Prelude.Text
+  set newValue KinesisStreamConfigProperty {..}
+    = KinesisStreamConfigProperty {streamArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs-boot b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisStreamConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisStreamConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KinesisStreamConfigProperty :: Prelude.Type
+instance ToResourceProperties KinesisStreamConfigProperty
+instance Prelude.Eq KinesisStreamConfigProperty
+instance Prelude.Show KinesisStreamConfigProperty
+instance JSON.ToJSON KinesisStreamConfigProperty
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisVideoStreamConfigProperty (
+        module Exports, KinesisVideoStreamConfigProperty(..),
+        mkKinesisVideoStreamConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.EncryptionConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KinesisVideoStreamConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisvideostreamconfig.html>
+    KinesisVideoStreamConfigProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisvideostreamconfig.html#cfn-connect-instancestorageconfig-kinesisvideostreamconfig-encryptionconfig>
+                                      encryptionConfig :: EncryptionConfigProperty,
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisvideostreamconfig.html#cfn-connect-instancestorageconfig-kinesisvideostreamconfig-prefix>
+                                      prefix :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-kinesisvideostreamconfig.html#cfn-connect-instancestorageconfig-kinesisvideostreamconfig-retentionperiodhours>
+                                      retentionPeriodHours :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKinesisVideoStreamConfigProperty ::
+  EncryptionConfigProperty
+  -> Value Prelude.Text
+     -> Value Prelude.Double -> KinesisVideoStreamConfigProperty
+mkKinesisVideoStreamConfigProperty
+  encryptionConfig
+  prefix
+  retentionPeriodHours
+  = KinesisVideoStreamConfigProperty
+      {haddock_workaround_ = (), encryptionConfig = encryptionConfig,
+       prefix = prefix, retentionPeriodHours = retentionPeriodHours}
+instance ToResourceProperties KinesisVideoStreamConfigProperty where
+  toResourceProperties KinesisVideoStreamConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig.KinesisVideoStreamConfig",
+         supportsTags = Prelude.False,
+         properties = ["EncryptionConfig" JSON..= encryptionConfig,
+                       "Prefix" JSON..= prefix,
+                       "RetentionPeriodHours" JSON..= retentionPeriodHours]}
+instance JSON.ToJSON KinesisVideoStreamConfigProperty where
+  toJSON KinesisVideoStreamConfigProperty {..}
+    = JSON.object
+        ["EncryptionConfig" JSON..= encryptionConfig,
+         "Prefix" JSON..= prefix,
+         "RetentionPeriodHours" JSON..= retentionPeriodHours]
+instance Property "EncryptionConfig" KinesisVideoStreamConfigProperty where
+  type PropertyType "EncryptionConfig" KinesisVideoStreamConfigProperty = EncryptionConfigProperty
+  set newValue KinesisVideoStreamConfigProperty {..}
+    = KinesisVideoStreamConfigProperty
+        {encryptionConfig = newValue, ..}
+instance Property "Prefix" KinesisVideoStreamConfigProperty where
+  type PropertyType "Prefix" KinesisVideoStreamConfigProperty = Value Prelude.Text
+  set newValue KinesisVideoStreamConfigProperty {..}
+    = KinesisVideoStreamConfigProperty {prefix = newValue, ..}
+instance Property "RetentionPeriodHours" KinesisVideoStreamConfigProperty where
+  type PropertyType "RetentionPeriodHours" KinesisVideoStreamConfigProperty = Value Prelude.Double
+  set newValue KinesisVideoStreamConfigProperty {..}
+    = KinesisVideoStreamConfigProperty
+        {retentionPeriodHours = newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs-boot b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/KinesisVideoStreamConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.InstanceStorageConfig.KinesisVideoStreamConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KinesisVideoStreamConfigProperty :: Prelude.Type
+instance ToResourceProperties KinesisVideoStreamConfigProperty
+instance Prelude.Eq KinesisVideoStreamConfigProperty
+instance Prelude.Show KinesisVideoStreamConfigProperty
+instance JSON.ToJSON KinesisVideoStreamConfigProperty
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs b/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.Connect.InstanceStorageConfig.S3ConfigProperty (
+        module Exports, S3ConfigProperty(..), mkS3ConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.InstanceStorageConfig.EncryptionConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3ConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-s3config.html>
+    S3ConfigProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-s3config.html#cfn-connect-instancestorageconfig-s3config-bucketname>
+                      bucketName :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-s3config.html#cfn-connect-instancestorageconfig-s3config-bucketprefix>
+                      bucketPrefix :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-instancestorageconfig-s3config.html#cfn-connect-instancestorageconfig-s3config-encryptionconfig>
+                      encryptionConfig :: (Prelude.Maybe EncryptionConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3ConfigProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> S3ConfigProperty
+mkS3ConfigProperty bucketName bucketPrefix
+  = S3ConfigProperty
+      {haddock_workaround_ = (), bucketName = bucketName,
+       bucketPrefix = bucketPrefix, encryptionConfig = Prelude.Nothing}
+instance ToResourceProperties S3ConfigProperty where
+  toResourceProperties S3ConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::InstanceStorageConfig.S3Config",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["BucketName" JSON..= bucketName,
+                            "BucketPrefix" JSON..= bucketPrefix]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EncryptionConfig" Prelude.<$> encryptionConfig]))}
+instance JSON.ToJSON S3ConfigProperty where
+  toJSON S3ConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["BucketName" JSON..= bucketName,
+               "BucketPrefix" JSON..= bucketPrefix]
+              (Prelude.catMaybes
+                 [(JSON..=) "EncryptionConfig" Prelude.<$> encryptionConfig])))
+instance Property "BucketName" S3ConfigProperty where
+  type PropertyType "BucketName" S3ConfigProperty = Value Prelude.Text
+  set newValue S3ConfigProperty {..}
+    = S3ConfigProperty {bucketName = newValue, ..}
+instance Property "BucketPrefix" S3ConfigProperty where
+  type PropertyType "BucketPrefix" S3ConfigProperty = Value Prelude.Text
+  set newValue S3ConfigProperty {..}
+    = S3ConfigProperty {bucketPrefix = newValue, ..}
+instance Property "EncryptionConfig" S3ConfigProperty where
+  type PropertyType "EncryptionConfig" S3ConfigProperty = EncryptionConfigProperty
+  set newValue S3ConfigProperty {..}
+    = S3ConfigProperty {encryptionConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs-boot b/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/InstanceStorageConfig/S3ConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.InstanceStorageConfig.S3ConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3ConfigProperty :: Prelude.Type
+instance ToResourceProperties S3ConfigProperty
+instance Prelude.Eq S3ConfigProperty
+instance Prelude.Show S3ConfigProperty
+instance JSON.ToJSON S3ConfigProperty
diff --git a/gen/Stratosphere/Connect/IntegrationAssociation.hs b/gen/Stratosphere/Connect/IntegrationAssociation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/IntegrationAssociation.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Connect.IntegrationAssociation (
+        IntegrationAssociation(..), mkIntegrationAssociation
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IntegrationAssociation
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-integrationassociation.html>
+    IntegrationAssociation {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-integrationassociation.html#cfn-connect-integrationassociation-instanceid>
+                            instanceId :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-integrationassociation.html#cfn-connect-integrationassociation-integrationarn>
+                            integrationArn :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-integrationassociation.html#cfn-connect-integrationassociation-integrationtype>
+                            integrationType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntegrationAssociation ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> IntegrationAssociation
+mkIntegrationAssociation instanceId integrationArn integrationType
+  = IntegrationAssociation
+      {haddock_workaround_ = (), instanceId = instanceId,
+       integrationArn = integrationArn, integrationType = integrationType}
+instance ToResourceProperties IntegrationAssociation where
+  toResourceProperties IntegrationAssociation {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::IntegrationAssociation",
+         supportsTags = Prelude.False,
+         properties = ["InstanceId" JSON..= instanceId,
+                       "IntegrationArn" JSON..= integrationArn,
+                       "IntegrationType" JSON..= integrationType]}
+instance JSON.ToJSON IntegrationAssociation where
+  toJSON IntegrationAssociation {..}
+    = JSON.object
+        ["InstanceId" JSON..= instanceId,
+         "IntegrationArn" JSON..= integrationArn,
+         "IntegrationType" JSON..= integrationType]
+instance Property "InstanceId" IntegrationAssociation where
+  type PropertyType "InstanceId" IntegrationAssociation = Value Prelude.Text
+  set newValue IntegrationAssociation {..}
+    = IntegrationAssociation {instanceId = newValue, ..}
+instance Property "IntegrationArn" IntegrationAssociation where
+  type PropertyType "IntegrationArn" IntegrationAssociation = Value Prelude.Text
+  set newValue IntegrationAssociation {..}
+    = IntegrationAssociation {integrationArn = newValue, ..}
+instance Property "IntegrationType" IntegrationAssociation where
+  type PropertyType "IntegrationType" IntegrationAssociation = Value Prelude.Text
+  set newValue IntegrationAssociation {..}
+    = IntegrationAssociation {integrationType = newValue, ..}
diff --git a/gen/Stratosphere/Connect/PhoneNumber.hs b/gen/Stratosphere/Connect/PhoneNumber.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PhoneNumber.hs
@@ -0,0 +1,90 @@
+module Stratosphere.Connect.PhoneNumber (
+        PhoneNumber(..), mkPhoneNumber
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data PhoneNumber
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html>
+    PhoneNumber {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-countrycode>
+                 countryCode :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-prefix>
+                 prefix :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-sourcephonenumberarn>
+                 sourcePhoneNumberArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-targetarn>
+                 targetArn :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html#cfn-connect-phonenumber-type>
+                 type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPhoneNumber :: Value Prelude.Text -> PhoneNumber
+mkPhoneNumber targetArn
+  = PhoneNumber
+      {haddock_workaround_ = (), targetArn = targetArn,
+       countryCode = Prelude.Nothing, description = Prelude.Nothing,
+       prefix = Prelude.Nothing, sourcePhoneNumberArn = Prelude.Nothing,
+       tags = Prelude.Nothing, type' = Prelude.Nothing}
+instance ToResourceProperties PhoneNumber where
+  toResourceProperties PhoneNumber {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::PhoneNumber",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetArn" JSON..= targetArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CountryCode" Prelude.<$> countryCode,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Prefix" Prelude.<$> prefix,
+                               (JSON..=) "SourcePhoneNumberArn" Prelude.<$> sourcePhoneNumberArn,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "Type" Prelude.<$> type']))}
+instance JSON.ToJSON PhoneNumber where
+  toJSON PhoneNumber {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetArn" JSON..= targetArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "CountryCode" Prelude.<$> countryCode,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Prefix" Prelude.<$> prefix,
+                  (JSON..=) "SourcePhoneNumberArn" Prelude.<$> sourcePhoneNumberArn,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "Type" Prelude.<$> type'])))
+instance Property "CountryCode" PhoneNumber where
+  type PropertyType "CountryCode" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {countryCode = Prelude.pure newValue, ..}
+instance Property "Description" PhoneNumber where
+  type PropertyType "Description" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {description = Prelude.pure newValue, ..}
+instance Property "Prefix" PhoneNumber where
+  type PropertyType "Prefix" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {prefix = Prelude.pure newValue, ..}
+instance Property "SourcePhoneNumberArn" PhoneNumber where
+  type PropertyType "SourcePhoneNumberArn" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {sourcePhoneNumberArn = Prelude.pure newValue, ..}
+instance Property "Tags" PhoneNumber where
+  type PropertyType "Tags" PhoneNumber = [Tag]
+  set newValue PhoneNumber {..}
+    = PhoneNumber {tags = Prelude.pure newValue, ..}
+instance Property "TargetArn" PhoneNumber where
+  type PropertyType "TargetArn" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {targetArn = newValue, ..}
+instance Property "Type" PhoneNumber where
+  type PropertyType "Type" PhoneNumber = Value Prelude.Text
+  set newValue PhoneNumber {..}
+    = PhoneNumber {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/PredefinedAttribute.hs b/gen/Stratosphere/Connect/PredefinedAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PredefinedAttribute.hs
@@ -0,0 +1,76 @@
+module Stratosphere.Connect.PredefinedAttribute (
+        module Exports, PredefinedAttribute(..), mkPredefinedAttribute
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.PredefinedAttribute.AttributeConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.PredefinedAttribute.ValuesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredefinedAttribute
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html>
+    PredefinedAttribute {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html#cfn-connect-predefinedattribute-attributeconfiguration>
+                         attributeConfiguration :: (Prelude.Maybe AttributeConfigurationProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html#cfn-connect-predefinedattribute-instancearn>
+                         instanceArn :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html#cfn-connect-predefinedattribute-name>
+                         name :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html#cfn-connect-predefinedattribute-purposes>
+                         purposes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html#cfn-connect-predefinedattribute-values>
+                         values :: (Prelude.Maybe ValuesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredefinedAttribute ::
+  Value Prelude.Text -> Value Prelude.Text -> PredefinedAttribute
+mkPredefinedAttribute instanceArn name
+  = PredefinedAttribute
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       attributeConfiguration = Prelude.Nothing,
+       purposes = Prelude.Nothing, values = Prelude.Nothing}
+instance ToResourceProperties PredefinedAttribute where
+  toResourceProperties PredefinedAttribute {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::PredefinedAttribute",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AttributeConfiguration"
+                                 Prelude.<$> attributeConfiguration,
+                               (JSON..=) "Purposes" Prelude.<$> purposes,
+                               (JSON..=) "Values" Prelude.<$> values]))}
+instance JSON.ToJSON PredefinedAttribute where
+  toJSON PredefinedAttribute {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AttributeConfiguration"
+                    Prelude.<$> attributeConfiguration,
+                  (JSON..=) "Purposes" Prelude.<$> purposes,
+                  (JSON..=) "Values" Prelude.<$> values])))
+instance Property "AttributeConfiguration" PredefinedAttribute where
+  type PropertyType "AttributeConfiguration" PredefinedAttribute = AttributeConfigurationProperty
+  set newValue PredefinedAttribute {..}
+    = PredefinedAttribute
+        {attributeConfiguration = Prelude.pure newValue, ..}
+instance Property "InstanceArn" PredefinedAttribute where
+  type PropertyType "InstanceArn" PredefinedAttribute = Value Prelude.Text
+  set newValue PredefinedAttribute {..}
+    = PredefinedAttribute {instanceArn = newValue, ..}
+instance Property "Name" PredefinedAttribute where
+  type PropertyType "Name" PredefinedAttribute = Value Prelude.Text
+  set newValue PredefinedAttribute {..}
+    = PredefinedAttribute {name = newValue, ..}
+instance Property "Purposes" PredefinedAttribute where
+  type PropertyType "Purposes" PredefinedAttribute = ValueList Prelude.Text
+  set newValue PredefinedAttribute {..}
+    = PredefinedAttribute {purposes = Prelude.pure newValue, ..}
+instance Property "Values" PredefinedAttribute where
+  type PropertyType "Values" PredefinedAttribute = ValuesProperty
+  set newValue PredefinedAttribute {..}
+    = PredefinedAttribute {values = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs b/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.Connect.PredefinedAttribute.AttributeConfigurationProperty (
+        AttributeConfigurationProperty(..),
+        mkAttributeConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AttributeConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-predefinedattribute-attributeconfiguration.html>
+    AttributeConfigurationProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-predefinedattribute-attributeconfiguration.html#cfn-connect-predefinedattribute-attributeconfiguration-enablevaluevalidationonassociation>
+                                    enableValueValidationOnAssociation :: (Prelude.Maybe (Value Prelude.Bool)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-predefinedattribute-attributeconfiguration.html#cfn-connect-predefinedattribute-attributeconfiguration-isreadonly>
+                                    isReadOnly :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAttributeConfigurationProperty :: AttributeConfigurationProperty
+mkAttributeConfigurationProperty
+  = AttributeConfigurationProperty
+      {haddock_workaround_ = (),
+       enableValueValidationOnAssociation = Prelude.Nothing,
+       isReadOnly = Prelude.Nothing}
+instance ToResourceProperties AttributeConfigurationProperty where
+  toResourceProperties AttributeConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::PredefinedAttribute.AttributeConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "EnableValueValidationOnAssociation"
+                              Prelude.<$> enableValueValidationOnAssociation,
+                            (JSON..=) "IsReadOnly" Prelude.<$> isReadOnly])}
+instance JSON.ToJSON AttributeConfigurationProperty where
+  toJSON AttributeConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "EnableValueValidationOnAssociation"
+                 Prelude.<$> enableValueValidationOnAssociation,
+               (JSON..=) "IsReadOnly" Prelude.<$> isReadOnly]))
+instance Property "EnableValueValidationOnAssociation" AttributeConfigurationProperty where
+  type PropertyType "EnableValueValidationOnAssociation" AttributeConfigurationProperty = Value Prelude.Bool
+  set newValue AttributeConfigurationProperty {..}
+    = AttributeConfigurationProperty
+        {enableValueValidationOnAssociation = Prelude.pure newValue, ..}
+instance Property "IsReadOnly" AttributeConfigurationProperty where
+  type PropertyType "IsReadOnly" AttributeConfigurationProperty = Value Prelude.Bool
+  set newValue AttributeConfigurationProperty {..}
+    = AttributeConfigurationProperty
+        {isReadOnly = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs-boot b/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PredefinedAttribute/AttributeConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.PredefinedAttribute.AttributeConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AttributeConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AttributeConfigurationProperty
+instance Prelude.Eq AttributeConfigurationProperty
+instance Prelude.Show AttributeConfigurationProperty
+instance JSON.ToJSON AttributeConfigurationProperty
diff --git a/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs b/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.Connect.PredefinedAttribute.ValuesProperty (
+        ValuesProperty(..), mkValuesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ValuesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-predefinedattribute-values.html>
+    ValuesProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-predefinedattribute-values.html#cfn-connect-predefinedattribute-values-stringlist>
+                    stringList :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkValuesProperty :: ValuesProperty
+mkValuesProperty
+  = ValuesProperty
+      {haddock_workaround_ = (), stringList = Prelude.Nothing}
+instance ToResourceProperties ValuesProperty where
+  toResourceProperties ValuesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::PredefinedAttribute.Values",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "StringList" Prelude.<$> stringList])}
+instance JSON.ToJSON ValuesProperty where
+  toJSON ValuesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "StringList" Prelude.<$> stringList]))
+instance Property "StringList" ValuesProperty where
+  type PropertyType "StringList" ValuesProperty = ValueList Prelude.Text
+  set newValue ValuesProperty {..}
+    = ValuesProperty {stringList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs-boot b/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/PredefinedAttribute/ValuesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.PredefinedAttribute.ValuesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ValuesProperty :: Prelude.Type
+instance ToResourceProperties ValuesProperty
+instance Prelude.Eq ValuesProperty
+instance Prelude.Show ValuesProperty
+instance JSON.ToJSON ValuesProperty
diff --git a/gen/Stratosphere/Connect/Prompt.hs b/gen/Stratosphere/Connect/Prompt.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Prompt.hs
@@ -0,0 +1,68 @@
+module Stratosphere.Connect.Prompt (
+        Prompt(..), mkPrompt
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Prompt
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html>
+    Prompt {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html#cfn-connect-prompt-description>
+            description :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html#cfn-connect-prompt-instancearn>
+            instanceArn :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html#cfn-connect-prompt-name>
+            name :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html#cfn-connect-prompt-s3uri>
+            s3Uri :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html#cfn-connect-prompt-tags>
+            tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPrompt :: Value Prelude.Text -> Value Prelude.Text -> Prompt
+mkPrompt instanceArn name
+  = Prompt
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       description = Prelude.Nothing, s3Uri = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Prompt where
+  toResourceProperties Prompt {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Prompt", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "S3Uri" Prelude.<$> s3Uri,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Prompt where
+  toJSON Prompt {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "S3Uri" Prelude.<$> s3Uri,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" Prompt where
+  type PropertyType "Description" Prompt = Value Prelude.Text
+  set newValue Prompt {..}
+    = Prompt {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" Prompt where
+  type PropertyType "InstanceArn" Prompt = Value Prelude.Text
+  set newValue Prompt {..} = Prompt {instanceArn = newValue, ..}
+instance Property "Name" Prompt where
+  type PropertyType "Name" Prompt = Value Prelude.Text
+  set newValue Prompt {..} = Prompt {name = newValue, ..}
+instance Property "S3Uri" Prompt where
+  type PropertyType "S3Uri" Prompt = Value Prelude.Text
+  set newValue Prompt {..}
+    = Prompt {s3Uri = Prelude.pure newValue, ..}
+instance Property "Tags" Prompt where
+  type PropertyType "Tags" Prompt = [Tag]
+  set newValue Prompt {..}
+    = Prompt {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Queue.hs b/gen/Stratosphere/Connect/Queue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Queue.hs
@@ -0,0 +1,116 @@
+module Stratosphere.Connect.Queue (
+        module Exports, Queue(..), mkQueue
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Queue.OutboundCallerConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Queue.OutboundEmailConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Queue
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html>
+    Queue {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-description>
+           description :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-hoursofoperationarn>
+           hoursOfOperationArn :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-instancearn>
+           instanceArn :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-maxcontacts>
+           maxContacts :: (Prelude.Maybe (Value Prelude.Integer)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-name>
+           name :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-outboundcallerconfig>
+           outboundCallerConfig :: (Prelude.Maybe OutboundCallerConfigProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-outboundemailconfig>
+           outboundEmailConfig :: (Prelude.Maybe OutboundEmailConfigProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-quickconnectarns>
+           quickConnectArns :: (Prelude.Maybe (ValueList Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-status>
+           status :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html#cfn-connect-queue-tags>
+           tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkQueue ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> Queue
+mkQueue hoursOfOperationArn instanceArn name
+  = Queue
+      {haddock_workaround_ = (),
+       hoursOfOperationArn = hoursOfOperationArn,
+       instanceArn = instanceArn, name = name,
+       description = Prelude.Nothing, maxContacts = Prelude.Nothing,
+       outboundCallerConfig = Prelude.Nothing,
+       outboundEmailConfig = Prelude.Nothing,
+       quickConnectArns = Prelude.Nothing, status = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Queue where
+  toResourceProperties Queue {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Queue", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["HoursOfOperationArn" JSON..= hoursOfOperationArn,
+                            "InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "MaxContacts" Prelude.<$> maxContacts,
+                               (JSON..=) "OutboundCallerConfig" Prelude.<$> outboundCallerConfig,
+                               (JSON..=) "OutboundEmailConfig" Prelude.<$> outboundEmailConfig,
+                               (JSON..=) "QuickConnectArns" Prelude.<$> quickConnectArns,
+                               (JSON..=) "Status" Prelude.<$> status,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Queue where
+  toJSON Queue {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["HoursOfOperationArn" JSON..= hoursOfOperationArn,
+               "InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "MaxContacts" Prelude.<$> maxContacts,
+                  (JSON..=) "OutboundCallerConfig" Prelude.<$> outboundCallerConfig,
+                  (JSON..=) "OutboundEmailConfig" Prelude.<$> outboundEmailConfig,
+                  (JSON..=) "QuickConnectArns" Prelude.<$> quickConnectArns,
+                  (JSON..=) "Status" Prelude.<$> status,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" Queue where
+  type PropertyType "Description" Queue = Value Prelude.Text
+  set newValue Queue {..}
+    = Queue {description = Prelude.pure newValue, ..}
+instance Property "HoursOfOperationArn" Queue where
+  type PropertyType "HoursOfOperationArn" Queue = Value Prelude.Text
+  set newValue Queue {..}
+    = Queue {hoursOfOperationArn = newValue, ..}
+instance Property "InstanceArn" Queue where
+  type PropertyType "InstanceArn" Queue = Value Prelude.Text
+  set newValue Queue {..} = Queue {instanceArn = newValue, ..}
+instance Property "MaxContacts" Queue where
+  type PropertyType "MaxContacts" Queue = Value Prelude.Integer
+  set newValue Queue {..}
+    = Queue {maxContacts = Prelude.pure newValue, ..}
+instance Property "Name" Queue where
+  type PropertyType "Name" Queue = Value Prelude.Text
+  set newValue Queue {..} = Queue {name = newValue, ..}
+instance Property "OutboundCallerConfig" Queue where
+  type PropertyType "OutboundCallerConfig" Queue = OutboundCallerConfigProperty
+  set newValue Queue {..}
+    = Queue {outboundCallerConfig = Prelude.pure newValue, ..}
+instance Property "OutboundEmailConfig" Queue where
+  type PropertyType "OutboundEmailConfig" Queue = OutboundEmailConfigProperty
+  set newValue Queue {..}
+    = Queue {outboundEmailConfig = Prelude.pure newValue, ..}
+instance Property "QuickConnectArns" Queue where
+  type PropertyType "QuickConnectArns" Queue = ValueList Prelude.Text
+  set newValue Queue {..}
+    = Queue {quickConnectArns = Prelude.pure newValue, ..}
+instance Property "Status" Queue where
+  type PropertyType "Status" Queue = Value Prelude.Text
+  set newValue Queue {..}
+    = Queue {status = Prelude.pure newValue, ..}
+instance Property "Tags" Queue where
+  type PropertyType "Tags" Queue = [Tag]
+  set newValue Queue {..} = Queue {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs b/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Connect.Queue.OutboundCallerConfigProperty (
+        OutboundCallerConfigProperty(..), mkOutboundCallerConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutboundCallerConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundcallerconfig.html>
+    OutboundCallerConfigProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundcallerconfig.html#cfn-connect-queue-outboundcallerconfig-outboundcalleridname>
+                                  outboundCallerIdName :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundcallerconfig.html#cfn-connect-queue-outboundcallerconfig-outboundcalleridnumberarn>
+                                  outboundCallerIdNumberArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundcallerconfig.html#cfn-connect-queue-outboundcallerconfig-outboundflowarn>
+                                  outboundFlowArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutboundCallerConfigProperty :: OutboundCallerConfigProperty
+mkOutboundCallerConfigProperty
+  = OutboundCallerConfigProperty
+      {haddock_workaround_ = (), outboundCallerIdName = Prelude.Nothing,
+       outboundCallerIdNumberArn = Prelude.Nothing,
+       outboundFlowArn = Prelude.Nothing}
+instance ToResourceProperties OutboundCallerConfigProperty where
+  toResourceProperties OutboundCallerConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Queue.OutboundCallerConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "OutboundCallerIdName" Prelude.<$> outboundCallerIdName,
+                            (JSON..=) "OutboundCallerIdNumberArn"
+                              Prelude.<$> outboundCallerIdNumberArn,
+                            (JSON..=) "OutboundFlowArn" Prelude.<$> outboundFlowArn])}
+instance JSON.ToJSON OutboundCallerConfigProperty where
+  toJSON OutboundCallerConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "OutboundCallerIdName" Prelude.<$> outboundCallerIdName,
+               (JSON..=) "OutboundCallerIdNumberArn"
+                 Prelude.<$> outboundCallerIdNumberArn,
+               (JSON..=) "OutboundFlowArn" Prelude.<$> outboundFlowArn]))
+instance Property "OutboundCallerIdName" OutboundCallerConfigProperty where
+  type PropertyType "OutboundCallerIdName" OutboundCallerConfigProperty = Value Prelude.Text
+  set newValue OutboundCallerConfigProperty {..}
+    = OutboundCallerConfigProperty
+        {outboundCallerIdName = Prelude.pure newValue, ..}
+instance Property "OutboundCallerIdNumberArn" OutboundCallerConfigProperty where
+  type PropertyType "OutboundCallerIdNumberArn" OutboundCallerConfigProperty = Value Prelude.Text
+  set newValue OutboundCallerConfigProperty {..}
+    = OutboundCallerConfigProperty
+        {outboundCallerIdNumberArn = Prelude.pure newValue, ..}
+instance Property "OutboundFlowArn" OutboundCallerConfigProperty where
+  type PropertyType "OutboundFlowArn" OutboundCallerConfigProperty = Value Prelude.Text
+  set newValue OutboundCallerConfigProperty {..}
+    = OutboundCallerConfigProperty
+        {outboundFlowArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs-boot b/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Queue/OutboundCallerConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Queue.OutboundCallerConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutboundCallerConfigProperty :: Prelude.Type
+instance ToResourceProperties OutboundCallerConfigProperty
+instance Prelude.Eq OutboundCallerConfigProperty
+instance Prelude.Show OutboundCallerConfigProperty
+instance JSON.ToJSON OutboundCallerConfigProperty
diff --git a/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs b/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.Connect.Queue.OutboundEmailConfigProperty (
+        OutboundEmailConfigProperty(..), mkOutboundEmailConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutboundEmailConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundemailconfig.html>
+    OutboundEmailConfigProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-queue-outboundemailconfig.html#cfn-connect-queue-outboundemailconfig-outboundemailaddressid>
+                                 outboundEmailAddressId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutboundEmailConfigProperty :: OutboundEmailConfigProperty
+mkOutboundEmailConfigProperty
+  = OutboundEmailConfigProperty
+      {haddock_workaround_ = (),
+       outboundEmailAddressId = Prelude.Nothing}
+instance ToResourceProperties OutboundEmailConfigProperty where
+  toResourceProperties OutboundEmailConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Queue.OutboundEmailConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "OutboundEmailAddressId"
+                              Prelude.<$> outboundEmailAddressId])}
+instance JSON.ToJSON OutboundEmailConfigProperty where
+  toJSON OutboundEmailConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "OutboundEmailAddressId"
+                 Prelude.<$> outboundEmailAddressId]))
+instance Property "OutboundEmailAddressId" OutboundEmailConfigProperty where
+  type PropertyType "OutboundEmailAddressId" OutboundEmailConfigProperty = Value Prelude.Text
+  set newValue OutboundEmailConfigProperty {..}
+    = OutboundEmailConfigProperty
+        {outboundEmailAddressId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs-boot b/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Queue/OutboundEmailConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Queue.OutboundEmailConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutboundEmailConfigProperty :: Prelude.Type
+instance ToResourceProperties OutboundEmailConfigProperty
+instance Prelude.Eq OutboundEmailConfigProperty
+instance Prelude.Show OutboundEmailConfigProperty
+instance JSON.ToJSON OutboundEmailConfigProperty
diff --git a/gen/Stratosphere/Connect/QuickConnect.hs b/gen/Stratosphere/Connect/QuickConnect.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect.hs
@@ -0,0 +1,73 @@
+module Stratosphere.Connect.QuickConnect (
+        module Exports, QuickConnect(..), mkQuickConnect
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.QuickConnect.QuickConnectConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data QuickConnect
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html>
+    QuickConnect {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html#cfn-connect-quickconnect-description>
+                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html#cfn-connect-quickconnect-instancearn>
+                  instanceArn :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html#cfn-connect-quickconnect-name>
+                  name :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html#cfn-connect-quickconnect-quickconnectconfig>
+                  quickConnectConfig :: QuickConnectConfigProperty,
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html#cfn-connect-quickconnect-tags>
+                  tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkQuickConnect ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> QuickConnectConfigProperty -> QuickConnect
+mkQuickConnect instanceArn name quickConnectConfig
+  = QuickConnect
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       quickConnectConfig = quickConnectConfig,
+       description = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties QuickConnect where
+  toResourceProperties QuickConnect {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::QuickConnect",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+                            "QuickConnectConfig" JSON..= quickConnectConfig]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON QuickConnect where
+  toJSON QuickConnect {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+               "QuickConnectConfig" JSON..= quickConnectConfig]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" QuickConnect where
+  type PropertyType "Description" QuickConnect = Value Prelude.Text
+  set newValue QuickConnect {..}
+    = QuickConnect {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" QuickConnect where
+  type PropertyType "InstanceArn" QuickConnect = Value Prelude.Text
+  set newValue QuickConnect {..}
+    = QuickConnect {instanceArn = newValue, ..}
+instance Property "Name" QuickConnect where
+  type PropertyType "Name" QuickConnect = Value Prelude.Text
+  set newValue QuickConnect {..} = QuickConnect {name = newValue, ..}
+instance Property "QuickConnectConfig" QuickConnect where
+  type PropertyType "QuickConnectConfig" QuickConnect = QuickConnectConfigProperty
+  set newValue QuickConnect {..}
+    = QuickConnect {quickConnectConfig = newValue, ..}
+instance Property "Tags" QuickConnect where
+  type PropertyType "Tags" QuickConnect = [Tag]
+  set newValue QuickConnect {..}
+    = QuickConnect {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs b/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Connect.QuickConnect.PhoneNumberQuickConnectConfigProperty (
+        PhoneNumberQuickConnectConfigProperty(..),
+        mkPhoneNumberQuickConnectConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PhoneNumberQuickConnectConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-phonenumberquickconnectconfig.html>
+    PhoneNumberQuickConnectConfigProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-phonenumberquickconnectconfig.html#cfn-connect-quickconnect-phonenumberquickconnectconfig-phonenumber>
+                                           phoneNumber :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPhoneNumberQuickConnectConfigProperty ::
+  Value Prelude.Text -> PhoneNumberQuickConnectConfigProperty
+mkPhoneNumberQuickConnectConfigProperty phoneNumber
+  = PhoneNumberQuickConnectConfigProperty
+      {haddock_workaround_ = (), phoneNumber = phoneNumber}
+instance ToResourceProperties PhoneNumberQuickConnectConfigProperty where
+  toResourceProperties PhoneNumberQuickConnectConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::QuickConnect.PhoneNumberQuickConnectConfig",
+         supportsTags = Prelude.False,
+         properties = ["PhoneNumber" JSON..= phoneNumber]}
+instance JSON.ToJSON PhoneNumberQuickConnectConfigProperty where
+  toJSON PhoneNumberQuickConnectConfigProperty {..}
+    = JSON.object ["PhoneNumber" JSON..= phoneNumber]
+instance Property "PhoneNumber" PhoneNumberQuickConnectConfigProperty where
+  type PropertyType "PhoneNumber" PhoneNumberQuickConnectConfigProperty = Value Prelude.Text
+  set newValue PhoneNumberQuickConnectConfigProperty {..}
+    = PhoneNumberQuickConnectConfigProperty
+        {phoneNumber = newValue, ..}
diff --git a/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs-boot b/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/PhoneNumberQuickConnectConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.QuickConnect.PhoneNumberQuickConnectConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PhoneNumberQuickConnectConfigProperty :: Prelude.Type
+instance ToResourceProperties PhoneNumberQuickConnectConfigProperty
+instance Prelude.Eq PhoneNumberQuickConnectConfigProperty
+instance Prelude.Show PhoneNumberQuickConnectConfigProperty
+instance JSON.ToJSON PhoneNumberQuickConnectConfigProperty
diff --git a/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs b/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.Connect.QuickConnect.QueueQuickConnectConfigProperty (
+        QueueQuickConnectConfigProperty(..),
+        mkQueueQuickConnectConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data QueueQuickConnectConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-queuequickconnectconfig.html>
+    QueueQuickConnectConfigProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-queuequickconnectconfig.html#cfn-connect-quickconnect-queuequickconnectconfig-contactflowarn>
+                                     contactFlowArn :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-queuequickconnectconfig.html#cfn-connect-quickconnect-queuequickconnectconfig-queuearn>
+                                     queueArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkQueueQuickConnectConfigProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> QueueQuickConnectConfigProperty
+mkQueueQuickConnectConfigProperty contactFlowArn queueArn
+  = QueueQuickConnectConfigProperty
+      {haddock_workaround_ = (), contactFlowArn = contactFlowArn,
+       queueArn = queueArn}
+instance ToResourceProperties QueueQuickConnectConfigProperty where
+  toResourceProperties QueueQuickConnectConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::QuickConnect.QueueQuickConnectConfig",
+         supportsTags = Prelude.False,
+         properties = ["ContactFlowArn" JSON..= contactFlowArn,
+                       "QueueArn" JSON..= queueArn]}
+instance JSON.ToJSON QueueQuickConnectConfigProperty where
+  toJSON QueueQuickConnectConfigProperty {..}
+    = JSON.object
+        ["ContactFlowArn" JSON..= contactFlowArn,
+         "QueueArn" JSON..= queueArn]
+instance Property "ContactFlowArn" QueueQuickConnectConfigProperty where
+  type PropertyType "ContactFlowArn" QueueQuickConnectConfigProperty = Value Prelude.Text
+  set newValue QueueQuickConnectConfigProperty {..}
+    = QueueQuickConnectConfigProperty {contactFlowArn = newValue, ..}
+instance Property "QueueArn" QueueQuickConnectConfigProperty where
+  type PropertyType "QueueArn" QueueQuickConnectConfigProperty = Value Prelude.Text
+  set newValue QueueQuickConnectConfigProperty {..}
+    = QueueQuickConnectConfigProperty {queueArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs-boot b/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/QueueQuickConnectConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.QuickConnect.QueueQuickConnectConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data QueueQuickConnectConfigProperty :: Prelude.Type
+instance ToResourceProperties QueueQuickConnectConfigProperty
+instance Prelude.Eq QueueQuickConnectConfigProperty
+instance Prelude.Show QueueQuickConnectConfigProperty
+instance JSON.ToJSON QueueQuickConnectConfigProperty
diff --git a/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs b/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs
@@ -0,0 +1,72 @@
+module Stratosphere.Connect.QuickConnect.QuickConnectConfigProperty (
+        module Exports, QuickConnectConfigProperty(..),
+        mkQuickConnectConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.QuickConnect.PhoneNumberQuickConnectConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.QuickConnect.QueueQuickConnectConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.QuickConnect.UserQuickConnectConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data QuickConnectConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-quickconnectconfig.html>
+    QuickConnectConfigProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-quickconnectconfig.html#cfn-connect-quickconnect-quickconnectconfig-phoneconfig>
+                                phoneConfig :: (Prelude.Maybe PhoneNumberQuickConnectConfigProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-quickconnectconfig.html#cfn-connect-quickconnect-quickconnectconfig-queueconfig>
+                                queueConfig :: (Prelude.Maybe QueueQuickConnectConfigProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-quickconnectconfig.html#cfn-connect-quickconnect-quickconnectconfig-quickconnecttype>
+                                quickConnectType :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-quickconnectconfig.html#cfn-connect-quickconnect-quickconnectconfig-userconfig>
+                                userConfig :: (Prelude.Maybe UserQuickConnectConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkQuickConnectConfigProperty ::
+  Value Prelude.Text -> QuickConnectConfigProperty
+mkQuickConnectConfigProperty quickConnectType
+  = QuickConnectConfigProperty
+      {haddock_workaround_ = (), quickConnectType = quickConnectType,
+       phoneConfig = Prelude.Nothing, queueConfig = Prelude.Nothing,
+       userConfig = Prelude.Nothing}
+instance ToResourceProperties QuickConnectConfigProperty where
+  toResourceProperties QuickConnectConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::QuickConnect.QuickConnectConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["QuickConnectType" JSON..= quickConnectType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "PhoneConfig" Prelude.<$> phoneConfig,
+                               (JSON..=) "QueueConfig" Prelude.<$> queueConfig,
+                               (JSON..=) "UserConfig" Prelude.<$> userConfig]))}
+instance JSON.ToJSON QuickConnectConfigProperty where
+  toJSON QuickConnectConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["QuickConnectType" JSON..= quickConnectType]
+              (Prelude.catMaybes
+                 [(JSON..=) "PhoneConfig" Prelude.<$> phoneConfig,
+                  (JSON..=) "QueueConfig" Prelude.<$> queueConfig,
+                  (JSON..=) "UserConfig" Prelude.<$> userConfig])))
+instance Property "PhoneConfig" QuickConnectConfigProperty where
+  type PropertyType "PhoneConfig" QuickConnectConfigProperty = PhoneNumberQuickConnectConfigProperty
+  set newValue QuickConnectConfigProperty {..}
+    = QuickConnectConfigProperty
+        {phoneConfig = Prelude.pure newValue, ..}
+instance Property "QueueConfig" QuickConnectConfigProperty where
+  type PropertyType "QueueConfig" QuickConnectConfigProperty = QueueQuickConnectConfigProperty
+  set newValue QuickConnectConfigProperty {..}
+    = QuickConnectConfigProperty
+        {queueConfig = Prelude.pure newValue, ..}
+instance Property "QuickConnectType" QuickConnectConfigProperty where
+  type PropertyType "QuickConnectType" QuickConnectConfigProperty = Value Prelude.Text
+  set newValue QuickConnectConfigProperty {..}
+    = QuickConnectConfigProperty {quickConnectType = newValue, ..}
+instance Property "UserConfig" QuickConnectConfigProperty where
+  type PropertyType "UserConfig" QuickConnectConfigProperty = UserQuickConnectConfigProperty
+  set newValue QuickConnectConfigProperty {..}
+    = QuickConnectConfigProperty
+        {userConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs-boot b/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/QuickConnectConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.QuickConnect.QuickConnectConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data QuickConnectConfigProperty :: Prelude.Type
+instance ToResourceProperties QuickConnectConfigProperty
+instance Prelude.Eq QuickConnectConfigProperty
+instance Prelude.Show QuickConnectConfigProperty
+instance JSON.ToJSON QuickConnectConfigProperty
diff --git a/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs b/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.Connect.QuickConnect.UserQuickConnectConfigProperty (
+        UserQuickConnectConfigProperty(..),
+        mkUserQuickConnectConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserQuickConnectConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-userquickconnectconfig.html>
+    UserQuickConnectConfigProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-userquickconnectconfig.html#cfn-connect-quickconnect-userquickconnectconfig-contactflowarn>
+                                    contactFlowArn :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-quickconnect-userquickconnectconfig.html#cfn-connect-quickconnect-userquickconnectconfig-userarn>
+                                    userArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserQuickConnectConfigProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> UserQuickConnectConfigProperty
+mkUserQuickConnectConfigProperty contactFlowArn userArn
+  = UserQuickConnectConfigProperty
+      {haddock_workaround_ = (), contactFlowArn = contactFlowArn,
+       userArn = userArn}
+instance ToResourceProperties UserQuickConnectConfigProperty where
+  toResourceProperties UserQuickConnectConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::QuickConnect.UserQuickConnectConfig",
+         supportsTags = Prelude.False,
+         properties = ["ContactFlowArn" JSON..= contactFlowArn,
+                       "UserArn" JSON..= userArn]}
+instance JSON.ToJSON UserQuickConnectConfigProperty where
+  toJSON UserQuickConnectConfigProperty {..}
+    = JSON.object
+        ["ContactFlowArn" JSON..= contactFlowArn,
+         "UserArn" JSON..= userArn]
+instance Property "ContactFlowArn" UserQuickConnectConfigProperty where
+  type PropertyType "ContactFlowArn" UserQuickConnectConfigProperty = Value Prelude.Text
+  set newValue UserQuickConnectConfigProperty {..}
+    = UserQuickConnectConfigProperty {contactFlowArn = newValue, ..}
+instance Property "UserArn" UserQuickConnectConfigProperty where
+  type PropertyType "UserArn" UserQuickConnectConfigProperty = Value Prelude.Text
+  set newValue UserQuickConnectConfigProperty {..}
+    = UserQuickConnectConfigProperty {userArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs-boot b/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/QuickConnect/UserQuickConnectConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.QuickConnect.UserQuickConnectConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserQuickConnectConfigProperty :: Prelude.Type
+instance ToResourceProperties UserQuickConnectConfigProperty
+instance Prelude.Eq UserQuickConnectConfigProperty
+instance Prelude.Show UserQuickConnectConfigProperty
+instance JSON.ToJSON UserQuickConnectConfigProperty
diff --git a/gen/Stratosphere/Connect/RoutingProfile.hs b/gen/Stratosphere/Connect/RoutingProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile.hs
@@ -0,0 +1,128 @@
+module Stratosphere.Connect.RoutingProfile (
+        module Exports, RoutingProfile(..), mkRoutingProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.MediaConcurrencyProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.RoutingProfileManualAssignmentQueueConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.RoutingProfileQueueConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data RoutingProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html>
+    RoutingProfile {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-agentavailabilitytimer>
+                    agentAvailabilityTimer :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-defaultoutboundqueuearn>
+                    defaultOutboundQueueArn :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-description>
+                    description :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-instancearn>
+                    instanceArn :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-manualassignmentqueueconfigs>
+                    manualAssignmentQueueConfigs :: (Prelude.Maybe [RoutingProfileManualAssignmentQueueConfigProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-mediaconcurrencies>
+                    mediaConcurrencies :: [MediaConcurrencyProperty],
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-name>
+                    name :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-queueconfigs>
+                    queueConfigs :: (Prelude.Maybe [RoutingProfileQueueConfigProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html#cfn-connect-routingprofile-tags>
+                    tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingProfile ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> [MediaConcurrencyProperty]
+           -> Value Prelude.Text -> RoutingProfile
+mkRoutingProfile
+  defaultOutboundQueueArn
+  description
+  instanceArn
+  mediaConcurrencies
+  name
+  = RoutingProfile
+      {haddock_workaround_ = (),
+       defaultOutboundQueueArn = defaultOutboundQueueArn,
+       description = description, instanceArn = instanceArn,
+       mediaConcurrencies = mediaConcurrencies, name = name,
+       agentAvailabilityTimer = Prelude.Nothing,
+       manualAssignmentQueueConfigs = Prelude.Nothing,
+       queueConfigs = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties RoutingProfile where
+  toResourceProperties RoutingProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DefaultOutboundQueueArn" JSON..= defaultOutboundQueueArn,
+                            "Description" JSON..= description,
+                            "InstanceArn" JSON..= instanceArn,
+                            "MediaConcurrencies" JSON..= mediaConcurrencies,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AgentAvailabilityTimer"
+                                 Prelude.<$> agentAvailabilityTimer,
+                               (JSON..=) "ManualAssignmentQueueConfigs"
+                                 Prelude.<$> manualAssignmentQueueConfigs,
+                               (JSON..=) "QueueConfigs" Prelude.<$> queueConfigs,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON RoutingProfile where
+  toJSON RoutingProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DefaultOutboundQueueArn" JSON..= defaultOutboundQueueArn,
+               "Description" JSON..= description,
+               "InstanceArn" JSON..= instanceArn,
+               "MediaConcurrencies" JSON..= mediaConcurrencies,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AgentAvailabilityTimer"
+                    Prelude.<$> agentAvailabilityTimer,
+                  (JSON..=) "ManualAssignmentQueueConfigs"
+                    Prelude.<$> manualAssignmentQueueConfigs,
+                  (JSON..=) "QueueConfigs" Prelude.<$> queueConfigs,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AgentAvailabilityTimer" RoutingProfile where
+  type PropertyType "AgentAvailabilityTimer" RoutingProfile = Value Prelude.Text
+  set newValue RoutingProfile {..}
+    = RoutingProfile
+        {agentAvailabilityTimer = Prelude.pure newValue, ..}
+instance Property "DefaultOutboundQueueArn" RoutingProfile where
+  type PropertyType "DefaultOutboundQueueArn" RoutingProfile = Value Prelude.Text
+  set newValue RoutingProfile {..}
+    = RoutingProfile {defaultOutboundQueueArn = newValue, ..}
+instance Property "Description" RoutingProfile where
+  type PropertyType "Description" RoutingProfile = Value Prelude.Text
+  set newValue RoutingProfile {..}
+    = RoutingProfile {description = newValue, ..}
+instance Property "InstanceArn" RoutingProfile where
+  type PropertyType "InstanceArn" RoutingProfile = Value Prelude.Text
+  set newValue RoutingProfile {..}
+    = RoutingProfile {instanceArn = newValue, ..}
+instance Property "ManualAssignmentQueueConfigs" RoutingProfile where
+  type PropertyType "ManualAssignmentQueueConfigs" RoutingProfile = [RoutingProfileManualAssignmentQueueConfigProperty]
+  set newValue RoutingProfile {..}
+    = RoutingProfile
+        {manualAssignmentQueueConfigs = Prelude.pure newValue, ..}
+instance Property "MediaConcurrencies" RoutingProfile where
+  type PropertyType "MediaConcurrencies" RoutingProfile = [MediaConcurrencyProperty]
+  set newValue RoutingProfile {..}
+    = RoutingProfile {mediaConcurrencies = newValue, ..}
+instance Property "Name" RoutingProfile where
+  type PropertyType "Name" RoutingProfile = Value Prelude.Text
+  set newValue RoutingProfile {..}
+    = RoutingProfile {name = newValue, ..}
+instance Property "QueueConfigs" RoutingProfile where
+  type PropertyType "QueueConfigs" RoutingProfile = [RoutingProfileQueueConfigProperty]
+  set newValue RoutingProfile {..}
+    = RoutingProfile {queueConfigs = Prelude.pure newValue, ..}
+instance Property "Tags" RoutingProfile where
+  type PropertyType "Tags" RoutingProfile = [Tag]
+  set newValue RoutingProfile {..}
+    = RoutingProfile {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs b/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Connect.RoutingProfile.CrossChannelBehaviorProperty (
+        CrossChannelBehaviorProperty(..), mkCrossChannelBehaviorProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CrossChannelBehaviorProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-crosschannelbehavior.html>
+    CrossChannelBehaviorProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-crosschannelbehavior.html#cfn-connect-routingprofile-crosschannelbehavior-behaviortype>
+                                  behaviorType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCrossChannelBehaviorProperty ::
+  Value Prelude.Text -> CrossChannelBehaviorProperty
+mkCrossChannelBehaviorProperty behaviorType
+  = CrossChannelBehaviorProperty
+      {haddock_workaround_ = (), behaviorType = behaviorType}
+instance ToResourceProperties CrossChannelBehaviorProperty where
+  toResourceProperties CrossChannelBehaviorProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile.CrossChannelBehavior",
+         supportsTags = Prelude.False,
+         properties = ["BehaviorType" JSON..= behaviorType]}
+instance JSON.ToJSON CrossChannelBehaviorProperty where
+  toJSON CrossChannelBehaviorProperty {..}
+    = JSON.object ["BehaviorType" JSON..= behaviorType]
+instance Property "BehaviorType" CrossChannelBehaviorProperty where
+  type PropertyType "BehaviorType" CrossChannelBehaviorProperty = Value Prelude.Text
+  set newValue CrossChannelBehaviorProperty {..}
+    = CrossChannelBehaviorProperty {behaviorType = newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs-boot b/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/CrossChannelBehaviorProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.RoutingProfile.CrossChannelBehaviorProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CrossChannelBehaviorProperty :: Prelude.Type
+instance ToResourceProperties CrossChannelBehaviorProperty
+instance Prelude.Eq CrossChannelBehaviorProperty
+instance Prelude.Show CrossChannelBehaviorProperty
+instance JSON.ToJSON CrossChannelBehaviorProperty
diff --git a/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs b/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.Connect.RoutingProfile.MediaConcurrencyProperty (
+        module Exports, MediaConcurrencyProperty(..),
+        mkMediaConcurrencyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.CrossChannelBehaviorProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MediaConcurrencyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-mediaconcurrency.html>
+    MediaConcurrencyProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-mediaconcurrency.html#cfn-connect-routingprofile-mediaconcurrency-channel>
+                              channel :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-mediaconcurrency.html#cfn-connect-routingprofile-mediaconcurrency-concurrency>
+                              concurrency :: (Value Prelude.Integer),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-mediaconcurrency.html#cfn-connect-routingprofile-mediaconcurrency-crosschannelbehavior>
+                              crossChannelBehavior :: (Prelude.Maybe CrossChannelBehaviorProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMediaConcurrencyProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Integer -> MediaConcurrencyProperty
+mkMediaConcurrencyProperty channel concurrency
+  = MediaConcurrencyProperty
+      {haddock_workaround_ = (), channel = channel,
+       concurrency = concurrency, crossChannelBehavior = Prelude.Nothing}
+instance ToResourceProperties MediaConcurrencyProperty where
+  toResourceProperties MediaConcurrencyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile.MediaConcurrency",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Channel" JSON..= channel, "Concurrency" JSON..= concurrency]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossChannelBehavior"
+                                 Prelude.<$> crossChannelBehavior]))}
+instance JSON.ToJSON MediaConcurrencyProperty where
+  toJSON MediaConcurrencyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Channel" JSON..= channel, "Concurrency" JSON..= concurrency]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossChannelBehavior"
+                    Prelude.<$> crossChannelBehavior])))
+instance Property "Channel" MediaConcurrencyProperty where
+  type PropertyType "Channel" MediaConcurrencyProperty = Value Prelude.Text
+  set newValue MediaConcurrencyProperty {..}
+    = MediaConcurrencyProperty {channel = newValue, ..}
+instance Property "Concurrency" MediaConcurrencyProperty where
+  type PropertyType "Concurrency" MediaConcurrencyProperty = Value Prelude.Integer
+  set newValue MediaConcurrencyProperty {..}
+    = MediaConcurrencyProperty {concurrency = newValue, ..}
+instance Property "CrossChannelBehavior" MediaConcurrencyProperty where
+  type PropertyType "CrossChannelBehavior" MediaConcurrencyProperty = CrossChannelBehaviorProperty
+  set newValue MediaConcurrencyProperty {..}
+    = MediaConcurrencyProperty
+        {crossChannelBehavior = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs-boot b/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/MediaConcurrencyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.RoutingProfile.MediaConcurrencyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MediaConcurrencyProperty :: Prelude.Type
+instance ToResourceProperties MediaConcurrencyProperty
+instance Prelude.Eq MediaConcurrencyProperty
+instance Prelude.Show MediaConcurrencyProperty
+instance JSON.ToJSON MediaConcurrencyProperty
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileManualAssignmentQueueConfigProperty (
+        module Exports,
+        RoutingProfileManualAssignmentQueueConfigProperty(..),
+        mkRoutingProfileManualAssignmentQueueConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.RoutingProfileQueueReferenceProperty as Exports
+import Stratosphere.ResourceProperties
+data RoutingProfileManualAssignmentQueueConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilemanualassignmentqueueconfig.html>
+    RoutingProfileManualAssignmentQueueConfigProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilemanualassignmentqueueconfig.html#cfn-connect-routingprofile-routingprofilemanualassignmentqueueconfig-queuereference>
+                                                       queueReference :: RoutingProfileQueueReferenceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingProfileManualAssignmentQueueConfigProperty ::
+  RoutingProfileQueueReferenceProperty
+  -> RoutingProfileManualAssignmentQueueConfigProperty
+mkRoutingProfileManualAssignmentQueueConfigProperty queueReference
+  = RoutingProfileManualAssignmentQueueConfigProperty
+      {haddock_workaround_ = (), queueReference = queueReference}
+instance ToResourceProperties RoutingProfileManualAssignmentQueueConfigProperty where
+  toResourceProperties
+    RoutingProfileManualAssignmentQueueConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile.RoutingProfileManualAssignmentQueueConfig",
+         supportsTags = Prelude.False,
+         properties = ["QueueReference" JSON..= queueReference]}
+instance JSON.ToJSON RoutingProfileManualAssignmentQueueConfigProperty where
+  toJSON RoutingProfileManualAssignmentQueueConfigProperty {..}
+    = JSON.object ["QueueReference" JSON..= queueReference]
+instance Property "QueueReference" RoutingProfileManualAssignmentQueueConfigProperty where
+  type PropertyType "QueueReference" RoutingProfileManualAssignmentQueueConfigProperty = RoutingProfileQueueReferenceProperty
+  set newValue RoutingProfileManualAssignmentQueueConfigProperty {..}
+    = RoutingProfileManualAssignmentQueueConfigProperty
+        {queueReference = newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs-boot b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileManualAssignmentQueueConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileManualAssignmentQueueConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RoutingProfileManualAssignmentQueueConfigProperty :: Prelude.Type
+instance ToResourceProperties RoutingProfileManualAssignmentQueueConfigProperty
+instance Prelude.Eq RoutingProfileManualAssignmentQueueConfigProperty
+instance Prelude.Show RoutingProfileManualAssignmentQueueConfigProperty
+instance JSON.ToJSON RoutingProfileManualAssignmentQueueConfigProperty
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileQueueConfigProperty (
+        module Exports, RoutingProfileQueueConfigProperty(..),
+        mkRoutingProfileQueueConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.RoutingProfile.RoutingProfileQueueReferenceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RoutingProfileQueueConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeueconfig.html>
+    RoutingProfileQueueConfigProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeueconfig.html#cfn-connect-routingprofile-routingprofilequeueconfig-delay>
+                                       delay :: (Value Prelude.Integer),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeueconfig.html#cfn-connect-routingprofile-routingprofilequeueconfig-priority>
+                                       priority :: (Value Prelude.Integer),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeueconfig.html#cfn-connect-routingprofile-routingprofilequeueconfig-queuereference>
+                                       queueReference :: RoutingProfileQueueReferenceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingProfileQueueConfigProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer
+     -> RoutingProfileQueueReferenceProperty
+        -> RoutingProfileQueueConfigProperty
+mkRoutingProfileQueueConfigProperty delay priority queueReference
+  = RoutingProfileQueueConfigProperty
+      {haddock_workaround_ = (), delay = delay, priority = priority,
+       queueReference = queueReference}
+instance ToResourceProperties RoutingProfileQueueConfigProperty where
+  toResourceProperties RoutingProfileQueueConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile.RoutingProfileQueueConfig",
+         supportsTags = Prelude.False,
+         properties = ["Delay" JSON..= delay, "Priority" JSON..= priority,
+                       "QueueReference" JSON..= queueReference]}
+instance JSON.ToJSON RoutingProfileQueueConfigProperty where
+  toJSON RoutingProfileQueueConfigProperty {..}
+    = JSON.object
+        ["Delay" JSON..= delay, "Priority" JSON..= priority,
+         "QueueReference" JSON..= queueReference]
+instance Property "Delay" RoutingProfileQueueConfigProperty where
+  type PropertyType "Delay" RoutingProfileQueueConfigProperty = Value Prelude.Integer
+  set newValue RoutingProfileQueueConfigProperty {..}
+    = RoutingProfileQueueConfigProperty {delay = newValue, ..}
+instance Property "Priority" RoutingProfileQueueConfigProperty where
+  type PropertyType "Priority" RoutingProfileQueueConfigProperty = Value Prelude.Integer
+  set newValue RoutingProfileQueueConfigProperty {..}
+    = RoutingProfileQueueConfigProperty {priority = newValue, ..}
+instance Property "QueueReference" RoutingProfileQueueConfigProperty where
+  type PropertyType "QueueReference" RoutingProfileQueueConfigProperty = RoutingProfileQueueReferenceProperty
+  set newValue RoutingProfileQueueConfigProperty {..}
+    = RoutingProfileQueueConfigProperty {queueReference = newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs-boot b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileQueueConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RoutingProfileQueueConfigProperty :: Prelude.Type
+instance ToResourceProperties RoutingProfileQueueConfigProperty
+instance Prelude.Eq RoutingProfileQueueConfigProperty
+instance Prelude.Show RoutingProfileQueueConfigProperty
+instance JSON.ToJSON RoutingProfileQueueConfigProperty
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileQueueReferenceProperty (
+        RoutingProfileQueueReferenceProperty(..),
+        mkRoutingProfileQueueReferenceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RoutingProfileQueueReferenceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeuereference.html>
+    RoutingProfileQueueReferenceProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeuereference.html#cfn-connect-routingprofile-routingprofilequeuereference-channel>
+                                          channel :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-routingprofile-routingprofilequeuereference.html#cfn-connect-routingprofile-routingprofilequeuereference-queuearn>
+                                          queueArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingProfileQueueReferenceProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> RoutingProfileQueueReferenceProperty
+mkRoutingProfileQueueReferenceProperty channel queueArn
+  = RoutingProfileQueueReferenceProperty
+      {haddock_workaround_ = (), channel = channel, queueArn = queueArn}
+instance ToResourceProperties RoutingProfileQueueReferenceProperty where
+  toResourceProperties RoutingProfileQueueReferenceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::RoutingProfile.RoutingProfileQueueReference",
+         supportsTags = Prelude.False,
+         properties = ["Channel" JSON..= channel,
+                       "QueueArn" JSON..= queueArn]}
+instance JSON.ToJSON RoutingProfileQueueReferenceProperty where
+  toJSON RoutingProfileQueueReferenceProperty {..}
+    = JSON.object
+        ["Channel" JSON..= channel, "QueueArn" JSON..= queueArn]
+instance Property "Channel" RoutingProfileQueueReferenceProperty where
+  type PropertyType "Channel" RoutingProfileQueueReferenceProperty = Value Prelude.Text
+  set newValue RoutingProfileQueueReferenceProperty {..}
+    = RoutingProfileQueueReferenceProperty {channel = newValue, ..}
+instance Property "QueueArn" RoutingProfileQueueReferenceProperty where
+  type PropertyType "QueueArn" RoutingProfileQueueReferenceProperty = Value Prelude.Text
+  set newValue RoutingProfileQueueReferenceProperty {..}
+    = RoutingProfileQueueReferenceProperty {queueArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs-boot b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/RoutingProfile/RoutingProfileQueueReferenceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.RoutingProfile.RoutingProfileQueueReferenceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RoutingProfileQueueReferenceProperty :: Prelude.Type
+instance ToResourceProperties RoutingProfileQueueReferenceProperty
+instance Prelude.Eq RoutingProfileQueueReferenceProperty
+instance Prelude.Show RoutingProfileQueueReferenceProperty
+instance JSON.ToJSON RoutingProfileQueueReferenceProperty
diff --git a/gen/Stratosphere/Connect/Rule.hs b/gen/Stratosphere/Connect/Rule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule.hs
@@ -0,0 +1,89 @@
+module Stratosphere.Connect.Rule (
+        module Exports, Rule(..), mkRule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.ActionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.RuleTriggerEventSourceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Rule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html>
+    Rule {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-actions>
+          actions :: ActionsProperty,
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-function>
+          function :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-instancearn>
+          instanceArn :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-name>
+          name :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-publishstatus>
+          publishStatus :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-tags>
+          tags :: (Prelude.Maybe [Tag]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html#cfn-connect-rule-triggereventsource>
+          triggerEventSource :: RuleTriggerEventSourceProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRule ::
+  ActionsProperty
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> Value Prelude.Text
+           -> Value Prelude.Text -> RuleTriggerEventSourceProperty -> Rule
+mkRule
+  actions
+  function
+  instanceArn
+  name
+  publishStatus
+  triggerEventSource
+  = Rule
+      {haddock_workaround_ = (), actions = actions, function = function,
+       instanceArn = instanceArn, name = name,
+       publishStatus = publishStatus,
+       triggerEventSource = triggerEventSource, tags = Prelude.Nothing}
+instance ToResourceProperties Rule where
+  toResourceProperties Rule {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Actions" JSON..= actions, "Function" JSON..= function,
+                            "InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+                            "PublishStatus" JSON..= publishStatus,
+                            "TriggerEventSource" JSON..= triggerEventSource]
+                           (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Rule where
+  toJSON Rule {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Actions" JSON..= actions, "Function" JSON..= function,
+               "InstanceArn" JSON..= instanceArn, "Name" JSON..= name,
+               "PublishStatus" JSON..= publishStatus,
+               "TriggerEventSource" JSON..= triggerEventSource]
+              (Prelude.catMaybes [(JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Actions" Rule where
+  type PropertyType "Actions" Rule = ActionsProperty
+  set newValue Rule {..} = Rule {actions = newValue, ..}
+instance Property "Function" Rule where
+  type PropertyType "Function" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {function = newValue, ..}
+instance Property "InstanceArn" Rule where
+  type PropertyType "InstanceArn" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {instanceArn = newValue, ..}
+instance Property "Name" Rule where
+  type PropertyType "Name" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {name = newValue, ..}
+instance Property "PublishStatus" Rule where
+  type PropertyType "PublishStatus" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {publishStatus = newValue, ..}
+instance Property "Tags" Rule where
+  type PropertyType "Tags" Rule = [Tag]
+  set newValue Rule {..} = Rule {tags = Prelude.pure newValue, ..}
+instance Property "TriggerEventSource" Rule where
+  type PropertyType "TriggerEventSource" Rule = RuleTriggerEventSourceProperty
+  set newValue Rule {..} = Rule {triggerEventSource = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/ActionsProperty.hs b/gen/Stratosphere/Connect/Rule/ActionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/ActionsProperty.hs
@@ -0,0 +1,116 @@
+module Stratosphere.Connect.Rule.ActionsProperty (
+        module Exports, ActionsProperty(..), mkActionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.CreateCaseActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.EventBridgeActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.SendNotificationActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.SubmitAutoEvaluationActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.TaskActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.Rule.UpdateCaseActionProperty as Exports
+import Stratosphere.ResourceProperties
+data ActionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html>
+    ActionsProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-assigncontactcategoryactions>
+                     assignContactCategoryActions :: (Prelude.Maybe JSON.Object),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-createcaseactions>
+                     createCaseActions :: (Prelude.Maybe [CreateCaseActionProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-endassociatedtasksactions>
+                     endAssociatedTasksActions :: (Prelude.Maybe JSON.Object),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-eventbridgeactions>
+                     eventBridgeActions :: (Prelude.Maybe [EventBridgeActionProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-sendnotificationactions>
+                     sendNotificationActions :: (Prelude.Maybe [SendNotificationActionProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-submitautoevaluationactions>
+                     submitAutoEvaluationActions :: (Prelude.Maybe [SubmitAutoEvaluationActionProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-taskactions>
+                     taskActions :: (Prelude.Maybe [TaskActionProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-actions.html#cfn-connect-rule-actions-updatecaseactions>
+                     updateCaseActions :: (Prelude.Maybe [UpdateCaseActionProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionsProperty :: ActionsProperty
+mkActionsProperty
+  = ActionsProperty
+      {haddock_workaround_ = (),
+       assignContactCategoryActions = Prelude.Nothing,
+       createCaseActions = Prelude.Nothing,
+       endAssociatedTasksActions = Prelude.Nothing,
+       eventBridgeActions = Prelude.Nothing,
+       sendNotificationActions = Prelude.Nothing,
+       submitAutoEvaluationActions = Prelude.Nothing,
+       taskActions = Prelude.Nothing, updateCaseActions = Prelude.Nothing}
+instance ToResourceProperties ActionsProperty where
+  toResourceProperties ActionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.Actions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AssignContactCategoryActions"
+                              Prelude.<$> assignContactCategoryActions,
+                            (JSON..=) "CreateCaseActions" Prelude.<$> createCaseActions,
+                            (JSON..=) "EndAssociatedTasksActions"
+                              Prelude.<$> endAssociatedTasksActions,
+                            (JSON..=) "EventBridgeActions" Prelude.<$> eventBridgeActions,
+                            (JSON..=) "SendNotificationActions"
+                              Prelude.<$> sendNotificationActions,
+                            (JSON..=) "SubmitAutoEvaluationActions"
+                              Prelude.<$> submitAutoEvaluationActions,
+                            (JSON..=) "TaskActions" Prelude.<$> taskActions,
+                            (JSON..=) "UpdateCaseActions" Prelude.<$> updateCaseActions])}
+instance JSON.ToJSON ActionsProperty where
+  toJSON ActionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AssignContactCategoryActions"
+                 Prelude.<$> assignContactCategoryActions,
+               (JSON..=) "CreateCaseActions" Prelude.<$> createCaseActions,
+               (JSON..=) "EndAssociatedTasksActions"
+                 Prelude.<$> endAssociatedTasksActions,
+               (JSON..=) "EventBridgeActions" Prelude.<$> eventBridgeActions,
+               (JSON..=) "SendNotificationActions"
+                 Prelude.<$> sendNotificationActions,
+               (JSON..=) "SubmitAutoEvaluationActions"
+                 Prelude.<$> submitAutoEvaluationActions,
+               (JSON..=) "TaskActions" Prelude.<$> taskActions,
+               (JSON..=) "UpdateCaseActions" Prelude.<$> updateCaseActions]))
+instance Property "AssignContactCategoryActions" ActionsProperty where
+  type PropertyType "AssignContactCategoryActions" ActionsProperty = JSON.Object
+  set newValue ActionsProperty {..}
+    = ActionsProperty
+        {assignContactCategoryActions = Prelude.pure newValue, ..}
+instance Property "CreateCaseActions" ActionsProperty where
+  type PropertyType "CreateCaseActions" ActionsProperty = [CreateCaseActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty {createCaseActions = Prelude.pure newValue, ..}
+instance Property "EndAssociatedTasksActions" ActionsProperty where
+  type PropertyType "EndAssociatedTasksActions" ActionsProperty = JSON.Object
+  set newValue ActionsProperty {..}
+    = ActionsProperty
+        {endAssociatedTasksActions = Prelude.pure newValue, ..}
+instance Property "EventBridgeActions" ActionsProperty where
+  type PropertyType "EventBridgeActions" ActionsProperty = [EventBridgeActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty {eventBridgeActions = Prelude.pure newValue, ..}
+instance Property "SendNotificationActions" ActionsProperty where
+  type PropertyType "SendNotificationActions" ActionsProperty = [SendNotificationActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty
+        {sendNotificationActions = Prelude.pure newValue, ..}
+instance Property "SubmitAutoEvaluationActions" ActionsProperty where
+  type PropertyType "SubmitAutoEvaluationActions" ActionsProperty = [SubmitAutoEvaluationActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty
+        {submitAutoEvaluationActions = Prelude.pure newValue, ..}
+instance Property "TaskActions" ActionsProperty where
+  type PropertyType "TaskActions" ActionsProperty = [TaskActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty {taskActions = Prelude.pure newValue, ..}
+instance Property "UpdateCaseActions" ActionsProperty where
+  type PropertyType "UpdateCaseActions" ActionsProperty = [UpdateCaseActionProperty]
+  set newValue ActionsProperty {..}
+    = ActionsProperty {updateCaseActions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/ActionsProperty.hs-boot b/gen/Stratosphere/Connect/Rule/ActionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/ActionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.ActionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionsProperty :: Prelude.Type
+instance ToResourceProperties ActionsProperty
+instance Prelude.Eq ActionsProperty
+instance Prelude.Show ActionsProperty
+instance JSON.ToJSON ActionsProperty
diff --git a/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs b/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.Connect.Rule.CreateCaseActionProperty (
+        module Exports, CreateCaseActionProperty(..),
+        mkCreateCaseActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.FieldProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CreateCaseActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-createcaseaction.html>
+    CreateCaseActionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-createcaseaction.html#cfn-connect-rule-createcaseaction-fields>
+                              fields :: [FieldProperty],
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-createcaseaction.html#cfn-connect-rule-createcaseaction-templateid>
+                              templateId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCreateCaseActionProperty ::
+  [FieldProperty] -> Value Prelude.Text -> CreateCaseActionProperty
+mkCreateCaseActionProperty fields templateId
+  = CreateCaseActionProperty
+      {haddock_workaround_ = (), fields = fields,
+       templateId = templateId}
+instance ToResourceProperties CreateCaseActionProperty where
+  toResourceProperties CreateCaseActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.CreateCaseAction",
+         supportsTags = Prelude.False,
+         properties = ["Fields" JSON..= fields,
+                       "TemplateId" JSON..= templateId]}
+instance JSON.ToJSON CreateCaseActionProperty where
+  toJSON CreateCaseActionProperty {..}
+    = JSON.object
+        ["Fields" JSON..= fields, "TemplateId" JSON..= templateId]
+instance Property "Fields" CreateCaseActionProperty where
+  type PropertyType "Fields" CreateCaseActionProperty = [FieldProperty]
+  set newValue CreateCaseActionProperty {..}
+    = CreateCaseActionProperty {fields = newValue, ..}
+instance Property "TemplateId" CreateCaseActionProperty where
+  type PropertyType "TemplateId" CreateCaseActionProperty = Value Prelude.Text
+  set newValue CreateCaseActionProperty {..}
+    = CreateCaseActionProperty {templateId = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/CreateCaseActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.CreateCaseActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CreateCaseActionProperty :: Prelude.Type
+instance ToResourceProperties CreateCaseActionProperty
+instance Prelude.Eq CreateCaseActionProperty
+instance Prelude.Show CreateCaseActionProperty
+instance JSON.ToJSON CreateCaseActionProperty
diff --git a/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs b/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.Connect.Rule.EventBridgeActionProperty (
+        EventBridgeActionProperty(..), mkEventBridgeActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EventBridgeActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-eventbridgeaction.html>
+    EventBridgeActionProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-eventbridgeaction.html#cfn-connect-rule-eventbridgeaction-name>
+                               name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventBridgeActionProperty ::
+  Value Prelude.Text -> EventBridgeActionProperty
+mkEventBridgeActionProperty name
+  = EventBridgeActionProperty {haddock_workaround_ = (), name = name}
+instance ToResourceProperties EventBridgeActionProperty where
+  toResourceProperties EventBridgeActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.EventBridgeAction",
+         supportsTags = Prelude.False, properties = ["Name" JSON..= name]}
+instance JSON.ToJSON EventBridgeActionProperty where
+  toJSON EventBridgeActionProperty {..}
+    = JSON.object ["Name" JSON..= name]
+instance Property "Name" EventBridgeActionProperty where
+  type PropertyType "Name" EventBridgeActionProperty = Value Prelude.Text
+  set newValue EventBridgeActionProperty {..}
+    = EventBridgeActionProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/EventBridgeActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.EventBridgeActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EventBridgeActionProperty :: Prelude.Type
+instance ToResourceProperties EventBridgeActionProperty
+instance Prelude.Eq EventBridgeActionProperty
+instance Prelude.Show EventBridgeActionProperty
+instance JSON.ToJSON EventBridgeActionProperty
diff --git a/gen/Stratosphere/Connect/Rule/FieldProperty.hs b/gen/Stratosphere/Connect/Rule/FieldProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/FieldProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.Connect.Rule.FieldProperty (
+        module Exports, FieldProperty(..), mkFieldProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.FieldValueProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-field.html>
+    FieldProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-field.html#cfn-connect-rule-field-id>
+                   id :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-field.html#cfn-connect-rule-field-value>
+                   value :: FieldValueProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldProperty ::
+  Value Prelude.Text -> FieldValueProperty -> FieldProperty
+mkFieldProperty id value
+  = FieldProperty {haddock_workaround_ = (), id = id, value = value}
+instance ToResourceProperties FieldProperty where
+  toResourceProperties FieldProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.Field",
+         supportsTags = Prelude.False,
+         properties = ["Id" JSON..= id, "Value" JSON..= value]}
+instance JSON.ToJSON FieldProperty where
+  toJSON FieldProperty {..}
+    = JSON.object ["Id" JSON..= id, "Value" JSON..= value]
+instance Property "Id" FieldProperty where
+  type PropertyType "Id" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..} = FieldProperty {id = newValue, ..}
+instance Property "Value" FieldProperty where
+  type PropertyType "Value" FieldProperty = FieldValueProperty
+  set newValue FieldProperty {..}
+    = FieldProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/FieldProperty.hs-boot b/gen/Stratosphere/Connect/Rule/FieldProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/FieldProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.FieldProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldProperty :: Prelude.Type
+instance ToResourceProperties FieldProperty
+instance Prelude.Eq FieldProperty
+instance Prelude.Show FieldProperty
+instance JSON.ToJSON FieldProperty
diff --git a/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs b/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.Connect.Rule.FieldValueProperty (
+        FieldValueProperty(..), mkFieldValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-fieldvalue.html>
+    FieldValueProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-fieldvalue.html#cfn-connect-rule-fieldvalue-booleanvalue>
+                        booleanValue :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-fieldvalue.html#cfn-connect-rule-fieldvalue-doublevalue>
+                        doubleValue :: (Prelude.Maybe (Value Prelude.Double)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-fieldvalue.html#cfn-connect-rule-fieldvalue-emptyvalue>
+                        emptyValue :: (Prelude.Maybe JSON.Object),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-fieldvalue.html#cfn-connect-rule-fieldvalue-stringvalue>
+                        stringValue :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldValueProperty :: FieldValueProperty
+mkFieldValueProperty
+  = FieldValueProperty
+      {haddock_workaround_ = (), booleanValue = Prelude.Nothing,
+       doubleValue = Prelude.Nothing, emptyValue = Prelude.Nothing,
+       stringValue = Prelude.Nothing}
+instance ToResourceProperties FieldValueProperty where
+  toResourceProperties FieldValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.FieldValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BooleanValue" Prelude.<$> booleanValue,
+                            (JSON..=) "DoubleValue" Prelude.<$> doubleValue,
+                            (JSON..=) "EmptyValue" Prelude.<$> emptyValue,
+                            (JSON..=) "StringValue" Prelude.<$> stringValue])}
+instance JSON.ToJSON FieldValueProperty where
+  toJSON FieldValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BooleanValue" Prelude.<$> booleanValue,
+               (JSON..=) "DoubleValue" Prelude.<$> doubleValue,
+               (JSON..=) "EmptyValue" Prelude.<$> emptyValue,
+               (JSON..=) "StringValue" Prelude.<$> stringValue]))
+instance Property "BooleanValue" FieldValueProperty where
+  type PropertyType "BooleanValue" FieldValueProperty = Value Prelude.Bool
+  set newValue FieldValueProperty {..}
+    = FieldValueProperty {booleanValue = Prelude.pure newValue, ..}
+instance Property "DoubleValue" FieldValueProperty where
+  type PropertyType "DoubleValue" FieldValueProperty = Value Prelude.Double
+  set newValue FieldValueProperty {..}
+    = FieldValueProperty {doubleValue = Prelude.pure newValue, ..}
+instance Property "EmptyValue" FieldValueProperty where
+  type PropertyType "EmptyValue" FieldValueProperty = JSON.Object
+  set newValue FieldValueProperty {..}
+    = FieldValueProperty {emptyValue = Prelude.pure newValue, ..}
+instance Property "StringValue" FieldValueProperty where
+  type PropertyType "StringValue" FieldValueProperty = Value Prelude.Text
+  set newValue FieldValueProperty {..}
+    = FieldValueProperty {stringValue = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs-boot b/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/FieldValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.FieldValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldValueProperty :: Prelude.Type
+instance ToResourceProperties FieldValueProperty
+instance Prelude.Eq FieldValueProperty
+instance Prelude.Show FieldValueProperty
+instance JSON.ToJSON FieldValueProperty
diff --git a/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs b/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.Connect.Rule.NotificationRecipientTypeProperty (
+        NotificationRecipientTypeProperty(..),
+        mkNotificationRecipientTypeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NotificationRecipientTypeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-notificationrecipienttype.html>
+    NotificationRecipientTypeProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-notificationrecipienttype.html#cfn-connect-rule-notificationrecipienttype-userarns>
+                                       userArns :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-notificationrecipienttype.html#cfn-connect-rule-notificationrecipienttype-usertags>
+                                       userTags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNotificationRecipientTypeProperty ::
+  NotificationRecipientTypeProperty
+mkNotificationRecipientTypeProperty
+  = NotificationRecipientTypeProperty
+      {haddock_workaround_ = (), userArns = Prelude.Nothing,
+       userTags = Prelude.Nothing}
+instance ToResourceProperties NotificationRecipientTypeProperty where
+  toResourceProperties NotificationRecipientTypeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.NotificationRecipientType",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "UserArns" Prelude.<$> userArns,
+                            (JSON..=) "UserTags" Prelude.<$> userTags])}
+instance JSON.ToJSON NotificationRecipientTypeProperty where
+  toJSON NotificationRecipientTypeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "UserArns" Prelude.<$> userArns,
+               (JSON..=) "UserTags" Prelude.<$> userTags]))
+instance Property "UserArns" NotificationRecipientTypeProperty where
+  type PropertyType "UserArns" NotificationRecipientTypeProperty = ValueList Prelude.Text
+  set newValue NotificationRecipientTypeProperty {..}
+    = NotificationRecipientTypeProperty
+        {userArns = Prelude.pure newValue, ..}
+instance Property "UserTags" NotificationRecipientTypeProperty where
+  type PropertyType "UserTags" NotificationRecipientTypeProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue NotificationRecipientTypeProperty {..}
+    = NotificationRecipientTypeProperty
+        {userTags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs-boot b/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/NotificationRecipientTypeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.NotificationRecipientTypeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NotificationRecipientTypeProperty :: Prelude.Type
+instance ToResourceProperties NotificationRecipientTypeProperty
+instance Prelude.Eq NotificationRecipientTypeProperty
+instance Prelude.Show NotificationRecipientTypeProperty
+instance JSON.ToJSON NotificationRecipientTypeProperty
diff --git a/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs b/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.Connect.Rule.ReferenceProperty (
+        ReferenceProperty(..), mkReferenceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ReferenceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-reference.html>
+    ReferenceProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-reference.html#cfn-connect-rule-reference-type>
+                       type' :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-reference.html#cfn-connect-rule-reference-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReferenceProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ReferenceProperty
+mkReferenceProperty type' value
+  = ReferenceProperty
+      {haddock_workaround_ = (), type' = type', value = value}
+instance ToResourceProperties ReferenceProperty where
+  toResourceProperties ReferenceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.Reference",
+         supportsTags = Prelude.False,
+         properties = ["Type" JSON..= type', "Value" JSON..= value]}
+instance JSON.ToJSON ReferenceProperty where
+  toJSON ReferenceProperty {..}
+    = JSON.object ["Type" JSON..= type', "Value" JSON..= value]
+instance Property "Type" ReferenceProperty where
+  type PropertyType "Type" ReferenceProperty = Value Prelude.Text
+  set newValue ReferenceProperty {..}
+    = ReferenceProperty {type' = newValue, ..}
+instance Property "Value" ReferenceProperty where
+  type PropertyType "Value" ReferenceProperty = Value Prelude.Text
+  set newValue ReferenceProperty {..}
+    = ReferenceProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs-boot b/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/ReferenceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.ReferenceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ReferenceProperty :: Prelude.Type
+instance ToResourceProperties ReferenceProperty
+instance Prelude.Eq ReferenceProperty
+instance Prelude.Show ReferenceProperty
+instance JSON.ToJSON ReferenceProperty
diff --git a/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs b/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Connect.Rule.RuleTriggerEventSourceProperty (
+        RuleTriggerEventSourceProperty(..),
+        mkRuleTriggerEventSourceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RuleTriggerEventSourceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-ruletriggereventsource.html>
+    RuleTriggerEventSourceProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-ruletriggereventsource.html#cfn-connect-rule-ruletriggereventsource-eventsourcename>
+                                    eventSourceName :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-ruletriggereventsource.html#cfn-connect-rule-ruletriggereventsource-integrationassociationarn>
+                                    integrationAssociationArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRuleTriggerEventSourceProperty ::
+  Value Prelude.Text -> RuleTriggerEventSourceProperty
+mkRuleTriggerEventSourceProperty eventSourceName
+  = RuleTriggerEventSourceProperty
+      {haddock_workaround_ = (), eventSourceName = eventSourceName,
+       integrationAssociationArn = Prelude.Nothing}
+instance ToResourceProperties RuleTriggerEventSourceProperty where
+  toResourceProperties RuleTriggerEventSourceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.RuleTriggerEventSource",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EventSourceName" JSON..= eventSourceName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IntegrationAssociationArn"
+                                 Prelude.<$> integrationAssociationArn]))}
+instance JSON.ToJSON RuleTriggerEventSourceProperty where
+  toJSON RuleTriggerEventSourceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EventSourceName" JSON..= eventSourceName]
+              (Prelude.catMaybes
+                 [(JSON..=) "IntegrationAssociationArn"
+                    Prelude.<$> integrationAssociationArn])))
+instance Property "EventSourceName" RuleTriggerEventSourceProperty where
+  type PropertyType "EventSourceName" RuleTriggerEventSourceProperty = Value Prelude.Text
+  set newValue RuleTriggerEventSourceProperty {..}
+    = RuleTriggerEventSourceProperty {eventSourceName = newValue, ..}
+instance Property "IntegrationAssociationArn" RuleTriggerEventSourceProperty where
+  type PropertyType "IntegrationAssociationArn" RuleTriggerEventSourceProperty = Value Prelude.Text
+  set newValue RuleTriggerEventSourceProperty {..}
+    = RuleTriggerEventSourceProperty
+        {integrationAssociationArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs-boot b/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/RuleTriggerEventSourceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.RuleTriggerEventSourceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RuleTriggerEventSourceProperty :: Prelude.Type
+instance ToResourceProperties RuleTriggerEventSourceProperty
+instance Prelude.Eq RuleTriggerEventSourceProperty
+instance Prelude.Show RuleTriggerEventSourceProperty
+instance JSON.ToJSON RuleTriggerEventSourceProperty
diff --git a/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs b/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs
@@ -0,0 +1,80 @@
+module Stratosphere.Connect.Rule.SendNotificationActionProperty (
+        module Exports, SendNotificationActionProperty(..),
+        mkSendNotificationActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.NotificationRecipientTypeProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SendNotificationActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html>
+    SendNotificationActionProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html#cfn-connect-rule-sendnotificationaction-content>
+                                    content :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html#cfn-connect-rule-sendnotificationaction-contenttype>
+                                    contentType :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html#cfn-connect-rule-sendnotificationaction-deliverymethod>
+                                    deliveryMethod :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html#cfn-connect-rule-sendnotificationaction-recipient>
+                                    recipient :: NotificationRecipientTypeProperty,
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-sendnotificationaction.html#cfn-connect-rule-sendnotificationaction-subject>
+                                    subject :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSendNotificationActionProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text
+        -> NotificationRecipientTypeProperty
+           -> SendNotificationActionProperty
+mkSendNotificationActionProperty
+  content
+  contentType
+  deliveryMethod
+  recipient
+  = SendNotificationActionProperty
+      {haddock_workaround_ = (), content = content,
+       contentType = contentType, deliveryMethod = deliveryMethod,
+       recipient = recipient, subject = Prelude.Nothing}
+instance ToResourceProperties SendNotificationActionProperty where
+  toResourceProperties SendNotificationActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.SendNotificationAction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Content" JSON..= content, "ContentType" JSON..= contentType,
+                            "DeliveryMethod" JSON..= deliveryMethod,
+                            "Recipient" JSON..= recipient]
+                           (Prelude.catMaybes [(JSON..=) "Subject" Prelude.<$> subject]))}
+instance JSON.ToJSON SendNotificationActionProperty where
+  toJSON SendNotificationActionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Content" JSON..= content, "ContentType" JSON..= contentType,
+               "DeliveryMethod" JSON..= deliveryMethod,
+               "Recipient" JSON..= recipient]
+              (Prelude.catMaybes [(JSON..=) "Subject" Prelude.<$> subject])))
+instance Property "Content" SendNotificationActionProperty where
+  type PropertyType "Content" SendNotificationActionProperty = Value Prelude.Text
+  set newValue SendNotificationActionProperty {..}
+    = SendNotificationActionProperty {content = newValue, ..}
+instance Property "ContentType" SendNotificationActionProperty where
+  type PropertyType "ContentType" SendNotificationActionProperty = Value Prelude.Text
+  set newValue SendNotificationActionProperty {..}
+    = SendNotificationActionProperty {contentType = newValue, ..}
+instance Property "DeliveryMethod" SendNotificationActionProperty where
+  type PropertyType "DeliveryMethod" SendNotificationActionProperty = Value Prelude.Text
+  set newValue SendNotificationActionProperty {..}
+    = SendNotificationActionProperty {deliveryMethod = newValue, ..}
+instance Property "Recipient" SendNotificationActionProperty where
+  type PropertyType "Recipient" SendNotificationActionProperty = NotificationRecipientTypeProperty
+  set newValue SendNotificationActionProperty {..}
+    = SendNotificationActionProperty {recipient = newValue, ..}
+instance Property "Subject" SendNotificationActionProperty where
+  type PropertyType "Subject" SendNotificationActionProperty = Value Prelude.Text
+  set newValue SendNotificationActionProperty {..}
+    = SendNotificationActionProperty
+        {subject = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/SendNotificationActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.SendNotificationActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SendNotificationActionProperty :: Prelude.Type
+instance ToResourceProperties SendNotificationActionProperty
+instance Prelude.Eq SendNotificationActionProperty
+instance Prelude.Show SendNotificationActionProperty
+instance JSON.ToJSON SendNotificationActionProperty
diff --git a/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs b/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Connect.Rule.SubmitAutoEvaluationActionProperty (
+        SubmitAutoEvaluationActionProperty(..),
+        mkSubmitAutoEvaluationActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SubmitAutoEvaluationActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-submitautoevaluationaction.html>
+    SubmitAutoEvaluationActionProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-submitautoevaluationaction.html#cfn-connect-rule-submitautoevaluationaction-evaluationformarn>
+                                        evaluationFormArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSubmitAutoEvaluationActionProperty ::
+  Value Prelude.Text -> SubmitAutoEvaluationActionProperty
+mkSubmitAutoEvaluationActionProperty evaluationFormArn
+  = SubmitAutoEvaluationActionProperty
+      {haddock_workaround_ = (), evaluationFormArn = evaluationFormArn}
+instance ToResourceProperties SubmitAutoEvaluationActionProperty where
+  toResourceProperties SubmitAutoEvaluationActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.SubmitAutoEvaluationAction",
+         supportsTags = Prelude.False,
+         properties = ["EvaluationFormArn" JSON..= evaluationFormArn]}
+instance JSON.ToJSON SubmitAutoEvaluationActionProperty where
+  toJSON SubmitAutoEvaluationActionProperty {..}
+    = JSON.object ["EvaluationFormArn" JSON..= evaluationFormArn]
+instance Property "EvaluationFormArn" SubmitAutoEvaluationActionProperty where
+  type PropertyType "EvaluationFormArn" SubmitAutoEvaluationActionProperty = Value Prelude.Text
+  set newValue SubmitAutoEvaluationActionProperty {..}
+    = SubmitAutoEvaluationActionProperty
+        {evaluationFormArn = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/SubmitAutoEvaluationActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.SubmitAutoEvaluationActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SubmitAutoEvaluationActionProperty :: Prelude.Type
+instance ToResourceProperties SubmitAutoEvaluationActionProperty
+instance Prelude.Eq SubmitAutoEvaluationActionProperty
+instance Prelude.Show SubmitAutoEvaluationActionProperty
+instance JSON.ToJSON SubmitAutoEvaluationActionProperty
diff --git a/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs b/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.Connect.Rule.TaskActionProperty (
+        module Exports, TaskActionProperty(..), mkTaskActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.ReferenceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TaskActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-taskaction.html>
+    TaskActionProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-taskaction.html#cfn-connect-rule-taskaction-contactflowarn>
+                        contactFlowArn :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-taskaction.html#cfn-connect-rule-taskaction-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-taskaction.html#cfn-connect-rule-taskaction-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-taskaction.html#cfn-connect-rule-taskaction-references>
+                        references :: (Prelude.Maybe (Prelude.Map Prelude.Text ReferenceProperty))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTaskActionProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TaskActionProperty
+mkTaskActionProperty contactFlowArn name
+  = TaskActionProperty
+      {haddock_workaround_ = (), contactFlowArn = contactFlowArn,
+       name = name, description = Prelude.Nothing,
+       references = Prelude.Nothing}
+instance ToResourceProperties TaskActionProperty where
+  toResourceProperties TaskActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.TaskAction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ContactFlowArn" JSON..= contactFlowArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "References" Prelude.<$> references]))}
+instance JSON.ToJSON TaskActionProperty where
+  toJSON TaskActionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ContactFlowArn" JSON..= contactFlowArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "References" Prelude.<$> references])))
+instance Property "ContactFlowArn" TaskActionProperty where
+  type PropertyType "ContactFlowArn" TaskActionProperty = Value Prelude.Text
+  set newValue TaskActionProperty {..}
+    = TaskActionProperty {contactFlowArn = newValue, ..}
+instance Property "Description" TaskActionProperty where
+  type PropertyType "Description" TaskActionProperty = Value Prelude.Text
+  set newValue TaskActionProperty {..}
+    = TaskActionProperty {description = Prelude.pure newValue, ..}
+instance Property "Name" TaskActionProperty where
+  type PropertyType "Name" TaskActionProperty = Value Prelude.Text
+  set newValue TaskActionProperty {..}
+    = TaskActionProperty {name = newValue, ..}
+instance Property "References" TaskActionProperty where
+  type PropertyType "References" TaskActionProperty = Prelude.Map Prelude.Text ReferenceProperty
+  set newValue TaskActionProperty {..}
+    = TaskActionProperty {references = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/TaskActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.TaskActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TaskActionProperty :: Prelude.Type
+instance ToResourceProperties TaskActionProperty
+instance Prelude.Eq TaskActionProperty
+instance Prelude.Show TaskActionProperty
+instance JSON.ToJSON TaskActionProperty
diff --git a/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs b/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.Connect.Rule.UpdateCaseActionProperty (
+        module Exports, UpdateCaseActionProperty(..),
+        mkUpdateCaseActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.Rule.FieldProperty as Exports
+import Stratosphere.ResourceProperties
+data UpdateCaseActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-updatecaseaction.html>
+    UpdateCaseActionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-rule-updatecaseaction.html#cfn-connect-rule-updatecaseaction-fields>
+                              fields :: [FieldProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUpdateCaseActionProperty ::
+  [FieldProperty] -> UpdateCaseActionProperty
+mkUpdateCaseActionProperty fields
+  = UpdateCaseActionProperty
+      {haddock_workaround_ = (), fields = fields}
+instance ToResourceProperties UpdateCaseActionProperty where
+  toResourceProperties UpdateCaseActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::Rule.UpdateCaseAction",
+         supportsTags = Prelude.False,
+         properties = ["Fields" JSON..= fields]}
+instance JSON.ToJSON UpdateCaseActionProperty where
+  toJSON UpdateCaseActionProperty {..}
+    = JSON.object ["Fields" JSON..= fields]
+instance Property "Fields" UpdateCaseActionProperty where
+  type PropertyType "Fields" UpdateCaseActionProperty = [FieldProperty]
+  set newValue UpdateCaseActionProperty {..}
+    = UpdateCaseActionProperty {fields = newValue, ..}
diff --git a/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs-boot b/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/Rule/UpdateCaseActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.Rule.UpdateCaseActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UpdateCaseActionProperty :: Prelude.Type
+instance ToResourceProperties UpdateCaseActionProperty
+instance Prelude.Eq UpdateCaseActionProperty
+instance Prelude.Show UpdateCaseActionProperty
+instance JSON.ToJSON UpdateCaseActionProperty
diff --git a/gen/Stratosphere/Connect/SecurityKey.hs b/gen/Stratosphere/Connect/SecurityKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/SecurityKey.hs
@@ -0,0 +1,37 @@
+module Stratosphere.Connect.SecurityKey (
+        SecurityKey(..), mkSecurityKey
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SecurityKey
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securitykey.html>
+    SecurityKey {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securitykey.html#cfn-connect-securitykey-instanceid>
+                 instanceId :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securitykey.html#cfn-connect-securitykey-key>
+                 key :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSecurityKey ::
+  Value Prelude.Text -> Value Prelude.Text -> SecurityKey
+mkSecurityKey instanceId key
+  = SecurityKey
+      {haddock_workaround_ = (), instanceId = instanceId, key = key}
+instance ToResourceProperties SecurityKey where
+  toResourceProperties SecurityKey {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::SecurityKey",
+         supportsTags = Prelude.False,
+         properties = ["InstanceId" JSON..= instanceId, "Key" JSON..= key]}
+instance JSON.ToJSON SecurityKey where
+  toJSON SecurityKey {..}
+    = JSON.object ["InstanceId" JSON..= instanceId, "Key" JSON..= key]
+instance Property "InstanceId" SecurityKey where
+  type PropertyType "InstanceId" SecurityKey = Value Prelude.Text
+  set newValue SecurityKey {..}
+    = SecurityKey {instanceId = newValue, ..}
+instance Property "Key" SecurityKey where
+  type PropertyType "Key" SecurityKey = Value Prelude.Text
+  set newValue SecurityKey {..} = SecurityKey {key = newValue, ..}
diff --git a/gen/Stratosphere/Connect/SecurityProfile.hs b/gen/Stratosphere/Connect/SecurityProfile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/SecurityProfile.hs
@@ -0,0 +1,132 @@
+module Stratosphere.Connect.SecurityProfile (
+        module Exports, SecurityProfile(..), mkSecurityProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.SecurityProfile.ApplicationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data SecurityProfile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html>
+    SecurityProfile {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-allowedaccesscontrolhierarchygroupid>
+                     allowedAccessControlHierarchyGroupId :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-allowedaccesscontroltags>
+                     allowedAccessControlTags :: (Prelude.Maybe [Tag]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-applications>
+                     applications :: (Prelude.Maybe [ApplicationProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-description>
+                     description :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-hierarchyrestrictedresources>
+                     hierarchyRestrictedResources :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-instancearn>
+                     instanceArn :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-permissions>
+                     permissions :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-securityprofilename>
+                     securityProfileName :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-tagrestrictedresources>
+                     tagRestrictedResources :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html#cfn-connect-securityprofile-tags>
+                     tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSecurityProfile ::
+  Value Prelude.Text -> Value Prelude.Text -> SecurityProfile
+mkSecurityProfile instanceArn securityProfileName
+  = SecurityProfile
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       securityProfileName = securityProfileName,
+       allowedAccessControlHierarchyGroupId = Prelude.Nothing,
+       allowedAccessControlTags = Prelude.Nothing,
+       applications = Prelude.Nothing, description = Prelude.Nothing,
+       hierarchyRestrictedResources = Prelude.Nothing,
+       permissions = Prelude.Nothing,
+       tagRestrictedResources = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties SecurityProfile where
+  toResourceProperties SecurityProfile {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::SecurityProfile",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn,
+                            "SecurityProfileName" JSON..= securityProfileName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AllowedAccessControlHierarchyGroupId"
+                                 Prelude.<$> allowedAccessControlHierarchyGroupId,
+                               (JSON..=) "AllowedAccessControlTags"
+                                 Prelude.<$> allowedAccessControlTags,
+                               (JSON..=) "Applications" Prelude.<$> applications,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "HierarchyRestrictedResources"
+                                 Prelude.<$> hierarchyRestrictedResources,
+                               (JSON..=) "Permissions" Prelude.<$> permissions,
+                               (JSON..=) "TagRestrictedResources"
+                                 Prelude.<$> tagRestrictedResources,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON SecurityProfile where
+  toJSON SecurityProfile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn,
+               "SecurityProfileName" JSON..= securityProfileName]
+              (Prelude.catMaybes
+                 [(JSON..=) "AllowedAccessControlHierarchyGroupId"
+                    Prelude.<$> allowedAccessControlHierarchyGroupId,
+                  (JSON..=) "AllowedAccessControlTags"
+                    Prelude.<$> allowedAccessControlTags,
+                  (JSON..=) "Applications" Prelude.<$> applications,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "HierarchyRestrictedResources"
+                    Prelude.<$> hierarchyRestrictedResources,
+                  (JSON..=) "Permissions" Prelude.<$> permissions,
+                  (JSON..=) "TagRestrictedResources"
+                    Prelude.<$> tagRestrictedResources,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AllowedAccessControlHierarchyGroupId" SecurityProfile where
+  type PropertyType "AllowedAccessControlHierarchyGroupId" SecurityProfile = Value Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile
+        {allowedAccessControlHierarchyGroupId = Prelude.pure newValue, ..}
+instance Property "AllowedAccessControlTags" SecurityProfile where
+  type PropertyType "AllowedAccessControlTags" SecurityProfile = [Tag]
+  set newValue SecurityProfile {..}
+    = SecurityProfile
+        {allowedAccessControlTags = Prelude.pure newValue, ..}
+instance Property "Applications" SecurityProfile where
+  type PropertyType "Applications" SecurityProfile = [ApplicationProperty]
+  set newValue SecurityProfile {..}
+    = SecurityProfile {applications = Prelude.pure newValue, ..}
+instance Property "Description" SecurityProfile where
+  type PropertyType "Description" SecurityProfile = Value Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile {description = Prelude.pure newValue, ..}
+instance Property "HierarchyRestrictedResources" SecurityProfile where
+  type PropertyType "HierarchyRestrictedResources" SecurityProfile = ValueList Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile
+        {hierarchyRestrictedResources = Prelude.pure newValue, ..}
+instance Property "InstanceArn" SecurityProfile where
+  type PropertyType "InstanceArn" SecurityProfile = Value Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile {instanceArn = newValue, ..}
+instance Property "Permissions" SecurityProfile where
+  type PropertyType "Permissions" SecurityProfile = ValueList Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile {permissions = Prelude.pure newValue, ..}
+instance Property "SecurityProfileName" SecurityProfile where
+  type PropertyType "SecurityProfileName" SecurityProfile = Value Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile {securityProfileName = newValue, ..}
+instance Property "TagRestrictedResources" SecurityProfile where
+  type PropertyType "TagRestrictedResources" SecurityProfile = ValueList Prelude.Text
+  set newValue SecurityProfile {..}
+    = SecurityProfile
+        {tagRestrictedResources = Prelude.pure newValue, ..}
+instance Property "Tags" SecurityProfile where
+  type PropertyType "Tags" SecurityProfile = [Tag]
+  set newValue SecurityProfile {..}
+    = SecurityProfile {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs b/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs
@@ -0,0 +1,44 @@
+module Stratosphere.Connect.SecurityProfile.ApplicationProperty (
+        ApplicationProperty(..), mkApplicationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApplicationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-securityprofile-application.html>
+    ApplicationProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-securityprofile-application.html#cfn-connect-securityprofile-application-applicationpermissions>
+                         applicationPermissions :: (ValueList Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-securityprofile-application.html#cfn-connect-securityprofile-application-namespace>
+                         namespace :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplicationProperty ::
+  ValueList Prelude.Text -> Value Prelude.Text -> ApplicationProperty
+mkApplicationProperty applicationPermissions namespace
+  = ApplicationProperty
+      {haddock_workaround_ = (),
+       applicationPermissions = applicationPermissions,
+       namespace = namespace}
+instance ToResourceProperties ApplicationProperty where
+  toResourceProperties ApplicationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::SecurityProfile.Application",
+         supportsTags = Prelude.False,
+         properties = ["ApplicationPermissions"
+                         JSON..= applicationPermissions,
+                       "Namespace" JSON..= namespace]}
+instance JSON.ToJSON ApplicationProperty where
+  toJSON ApplicationProperty {..}
+    = JSON.object
+        ["ApplicationPermissions" JSON..= applicationPermissions,
+         "Namespace" JSON..= namespace]
+instance Property "ApplicationPermissions" ApplicationProperty where
+  type PropertyType "ApplicationPermissions" ApplicationProperty = ValueList Prelude.Text
+  set newValue ApplicationProperty {..}
+    = ApplicationProperty {applicationPermissions = newValue, ..}
+instance Property "Namespace" ApplicationProperty where
+  type PropertyType "Namespace" ApplicationProperty = Value Prelude.Text
+  set newValue ApplicationProperty {..}
+    = ApplicationProperty {namespace = newValue, ..}
diff --git a/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs-boot b/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/SecurityProfile/ApplicationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.SecurityProfile.ApplicationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ApplicationProperty :: Prelude.Type
+instance ToResourceProperties ApplicationProperty
+instance Prelude.Eq ApplicationProperty
+instance Prelude.Show ApplicationProperty
+instance JSON.ToJSON ApplicationProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate.hs b/gen/Stratosphere/Connect/TaskTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate.hs
@@ -0,0 +1,130 @@
+module Stratosphere.Connect.TaskTemplate (
+        module Exports, TaskTemplate(..), mkTaskTemplate
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.ConstraintsProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.DefaultFieldValueProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data TaskTemplate
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html>
+    TaskTemplate {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-clienttoken>
+                  clientToken :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-constraints>
+                  constraints :: (Prelude.Maybe ConstraintsProperty),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-contactflowarn>
+                  contactFlowArn :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-defaults>
+                  defaults :: (Prelude.Maybe [DefaultFieldValueProperty]),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-description>
+                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-fields>
+                  fields :: (Prelude.Maybe [FieldProperty]),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-instancearn>
+                  instanceArn :: (Value Prelude.Text),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-name>
+                  name :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-selfassigncontactflowarn>
+                  selfAssignContactFlowArn :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-status>
+                  status :: (Prelude.Maybe (Value Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html#cfn-connect-tasktemplate-tags>
+                  tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTaskTemplate :: Value Prelude.Text -> TaskTemplate
+mkTaskTemplate instanceArn
+  = TaskTemplate
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       clientToken = Prelude.Nothing, constraints = Prelude.Nothing,
+       contactFlowArn = Prelude.Nothing, defaults = Prelude.Nothing,
+       description = Prelude.Nothing, fields = Prelude.Nothing,
+       name = Prelude.Nothing, selfAssignContactFlowArn = Prelude.Nothing,
+       status = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties TaskTemplate where
+  toResourceProperties TaskTemplate {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ClientToken" Prelude.<$> clientToken,
+                               (JSON..=) "Constraints" Prelude.<$> constraints,
+                               (JSON..=) "ContactFlowArn" Prelude.<$> contactFlowArn,
+                               (JSON..=) "Defaults" Prelude.<$> defaults,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Fields" Prelude.<$> fields,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "SelfAssignContactFlowArn"
+                                 Prelude.<$> selfAssignContactFlowArn,
+                               (JSON..=) "Status" Prelude.<$> status,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON TaskTemplate where
+  toJSON TaskTemplate {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "ClientToken" Prelude.<$> clientToken,
+                  (JSON..=) "Constraints" Prelude.<$> constraints,
+                  (JSON..=) "ContactFlowArn" Prelude.<$> contactFlowArn,
+                  (JSON..=) "Defaults" Prelude.<$> defaults,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Fields" Prelude.<$> fields,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "SelfAssignContactFlowArn"
+                    Prelude.<$> selfAssignContactFlowArn,
+                  (JSON..=) "Status" Prelude.<$> status,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "ClientToken" TaskTemplate where
+  type PropertyType "ClientToken" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {clientToken = Prelude.pure newValue, ..}
+instance Property "Constraints" TaskTemplate where
+  type PropertyType "Constraints" TaskTemplate = ConstraintsProperty
+  set newValue TaskTemplate {..}
+    = TaskTemplate {constraints = Prelude.pure newValue, ..}
+instance Property "ContactFlowArn" TaskTemplate where
+  type PropertyType "ContactFlowArn" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {contactFlowArn = Prelude.pure newValue, ..}
+instance Property "Defaults" TaskTemplate where
+  type PropertyType "Defaults" TaskTemplate = [DefaultFieldValueProperty]
+  set newValue TaskTemplate {..}
+    = TaskTemplate {defaults = Prelude.pure newValue, ..}
+instance Property "Description" TaskTemplate where
+  type PropertyType "Description" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {description = Prelude.pure newValue, ..}
+instance Property "Fields" TaskTemplate where
+  type PropertyType "Fields" TaskTemplate = [FieldProperty]
+  set newValue TaskTemplate {..}
+    = TaskTemplate {fields = Prelude.pure newValue, ..}
+instance Property "InstanceArn" TaskTemplate where
+  type PropertyType "InstanceArn" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {instanceArn = newValue, ..}
+instance Property "Name" TaskTemplate where
+  type PropertyType "Name" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {name = Prelude.pure newValue, ..}
+instance Property "SelfAssignContactFlowArn" TaskTemplate where
+  type PropertyType "SelfAssignContactFlowArn" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate
+        {selfAssignContactFlowArn = Prelude.pure newValue, ..}
+instance Property "Status" TaskTemplate where
+  type PropertyType "Status" TaskTemplate = Value Prelude.Text
+  set newValue TaskTemplate {..}
+    = TaskTemplate {status = Prelude.pure newValue, ..}
+instance Property "Tags" TaskTemplate where
+  type PropertyType "Tags" TaskTemplate = [Tag]
+  set newValue TaskTemplate {..}
+    = TaskTemplate {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.Connect.TaskTemplate.ConstraintsProperty (
+        module Exports, ConstraintsProperty(..), mkConstraintsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.InvisibleFieldInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.ReadOnlyFieldInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.RequiredFieldInfoProperty as Exports
+import Stratosphere.ResourceProperties
+data ConstraintsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-constraints.html>
+    ConstraintsProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-constraints.html#cfn-connect-tasktemplate-constraints-invisiblefields>
+                         invisibleFields :: (Prelude.Maybe [InvisibleFieldInfoProperty]),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-constraints.html#cfn-connect-tasktemplate-constraints-readonlyfields>
+                         readOnlyFields :: (Prelude.Maybe [ReadOnlyFieldInfoProperty]),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-constraints.html#cfn-connect-tasktemplate-constraints-requiredfields>
+                         requiredFields :: (Prelude.Maybe [RequiredFieldInfoProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConstraintsProperty :: ConstraintsProperty
+mkConstraintsProperty
+  = ConstraintsProperty
+      {haddock_workaround_ = (), invisibleFields = Prelude.Nothing,
+       readOnlyFields = Prelude.Nothing, requiredFields = Prelude.Nothing}
+instance ToResourceProperties ConstraintsProperty where
+  toResourceProperties ConstraintsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.Constraints",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "InvisibleFields" Prelude.<$> invisibleFields,
+                            (JSON..=) "ReadOnlyFields" Prelude.<$> readOnlyFields,
+                            (JSON..=) "RequiredFields" Prelude.<$> requiredFields])}
+instance JSON.ToJSON ConstraintsProperty where
+  toJSON ConstraintsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "InvisibleFields" Prelude.<$> invisibleFields,
+               (JSON..=) "ReadOnlyFields" Prelude.<$> readOnlyFields,
+               (JSON..=) "RequiredFields" Prelude.<$> requiredFields]))
+instance Property "InvisibleFields" ConstraintsProperty where
+  type PropertyType "InvisibleFields" ConstraintsProperty = [InvisibleFieldInfoProperty]
+  set newValue ConstraintsProperty {..}
+    = ConstraintsProperty {invisibleFields = Prelude.pure newValue, ..}
+instance Property "ReadOnlyFields" ConstraintsProperty where
+  type PropertyType "ReadOnlyFields" ConstraintsProperty = [ReadOnlyFieldInfoProperty]
+  set newValue ConstraintsProperty {..}
+    = ConstraintsProperty {readOnlyFields = Prelude.pure newValue, ..}
+instance Property "RequiredFields" ConstraintsProperty where
+  type PropertyType "RequiredFields" ConstraintsProperty = [RequiredFieldInfoProperty]
+  set newValue ConstraintsProperty {..}
+    = ConstraintsProperty {requiredFields = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/ConstraintsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.ConstraintsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConstraintsProperty :: Prelude.Type
+instance ToResourceProperties ConstraintsProperty
+instance Prelude.Eq ConstraintsProperty
+instance Prelude.Show ConstraintsProperty
+instance JSON.ToJSON ConstraintsProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.Connect.TaskTemplate.DefaultFieldValueProperty (
+        module Exports, DefaultFieldValueProperty(..),
+        mkDefaultFieldValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DefaultFieldValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-defaultfieldvalue.html>
+    DefaultFieldValueProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-defaultfieldvalue.html#cfn-connect-tasktemplate-defaultfieldvalue-defaultvalue>
+                               defaultValue :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-defaultfieldvalue.html#cfn-connect-tasktemplate-defaultfieldvalue-id>
+                               id :: FieldIdentifierProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDefaultFieldValueProperty ::
+  Value Prelude.Text
+  -> FieldIdentifierProperty -> DefaultFieldValueProperty
+mkDefaultFieldValueProperty defaultValue id
+  = DefaultFieldValueProperty
+      {haddock_workaround_ = (), defaultValue = defaultValue, id = id}
+instance ToResourceProperties DefaultFieldValueProperty where
+  toResourceProperties DefaultFieldValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.DefaultFieldValue",
+         supportsTags = Prelude.False,
+         properties = ["DefaultValue" JSON..= defaultValue,
+                       "Id" JSON..= id]}
+instance JSON.ToJSON DefaultFieldValueProperty where
+  toJSON DefaultFieldValueProperty {..}
+    = JSON.object
+        ["DefaultValue" JSON..= defaultValue, "Id" JSON..= id]
+instance Property "DefaultValue" DefaultFieldValueProperty where
+  type PropertyType "DefaultValue" DefaultFieldValueProperty = Value Prelude.Text
+  set newValue DefaultFieldValueProperty {..}
+    = DefaultFieldValueProperty {defaultValue = newValue, ..}
+instance Property "Id" DefaultFieldValueProperty where
+  type PropertyType "Id" DefaultFieldValueProperty = FieldIdentifierProperty
+  set newValue DefaultFieldValueProperty {..}
+    = DefaultFieldValueProperty {id = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/DefaultFieldValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.DefaultFieldValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DefaultFieldValueProperty :: Prelude.Type
+instance ToResourceProperties DefaultFieldValueProperty
+instance Prelude.Eq DefaultFieldValueProperty
+instance Prelude.Show DefaultFieldValueProperty
+instance JSON.ToJSON DefaultFieldValueProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty (
+        FieldIdentifierProperty(..), mkFieldIdentifierProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldIdentifierProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-fieldidentifier.html>
+    FieldIdentifierProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-fieldidentifier.html#cfn-connect-tasktemplate-fieldidentifier-name>
+                             name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldIdentifierProperty ::
+  Value Prelude.Text -> FieldIdentifierProperty
+mkFieldIdentifierProperty name
+  = FieldIdentifierProperty {haddock_workaround_ = (), name = name}
+instance ToResourceProperties FieldIdentifierProperty where
+  toResourceProperties FieldIdentifierProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.FieldIdentifier",
+         supportsTags = Prelude.False, properties = ["Name" JSON..= name]}
+instance JSON.ToJSON FieldIdentifierProperty where
+  toJSON FieldIdentifierProperty {..}
+    = JSON.object ["Name" JSON..= name]
+instance Property "Name" FieldIdentifierProperty where
+  type PropertyType "Name" FieldIdentifierProperty = Value Prelude.Text
+  set newValue FieldIdentifierProperty {..}
+    = FieldIdentifierProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/FieldIdentifierProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldIdentifierProperty :: Prelude.Type
+instance ToResourceProperties FieldIdentifierProperty
+instance Prelude.Eq FieldIdentifierProperty
+instance Prelude.Show FieldIdentifierProperty
+instance JSON.ToJSON FieldIdentifierProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs
@@ -0,0 +1,63 @@
+module Stratosphere.Connect.TaskTemplate.FieldProperty (
+        module Exports, FieldProperty(..), mkFieldProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-field.html>
+    FieldProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-field.html#cfn-connect-tasktemplate-field-description>
+                   description :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-field.html#cfn-connect-tasktemplate-field-id>
+                   id :: FieldIdentifierProperty,
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-field.html#cfn-connect-tasktemplate-field-singleselectoptions>
+                   singleSelectOptions :: (Prelude.Maybe (ValueList Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-field.html#cfn-connect-tasktemplate-field-type>
+                   type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldProperty ::
+  FieldIdentifierProperty -> Value Prelude.Text -> FieldProperty
+mkFieldProperty id type'
+  = FieldProperty
+      {haddock_workaround_ = (), id = id, type' = type',
+       description = Prelude.Nothing,
+       singleSelectOptions = Prelude.Nothing}
+instance ToResourceProperties FieldProperty where
+  toResourceProperties FieldProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.Field",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Id" JSON..= id, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "SingleSelectOptions" Prelude.<$> singleSelectOptions]))}
+instance JSON.ToJSON FieldProperty where
+  toJSON FieldProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Id" JSON..= id, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "SingleSelectOptions" Prelude.<$> singleSelectOptions])))
+instance Property "Description" FieldProperty where
+  type PropertyType "Description" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {description = Prelude.pure newValue, ..}
+instance Property "Id" FieldProperty where
+  type PropertyType "Id" FieldProperty = FieldIdentifierProperty
+  set newValue FieldProperty {..} = FieldProperty {id = newValue, ..}
+instance Property "SingleSelectOptions" FieldProperty where
+  type PropertyType "SingleSelectOptions" FieldProperty = ValueList Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {singleSelectOptions = Prelude.pure newValue, ..}
+instance Property "Type" FieldProperty where
+  type PropertyType "Type" FieldProperty = Value Prelude.Text
+  set newValue FieldProperty {..}
+    = FieldProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/FieldProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.FieldProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldProperty :: Prelude.Type
+instance ToResourceProperties FieldProperty
+instance Prelude.Eq FieldProperty
+instance Prelude.Show FieldProperty
+instance JSON.ToJSON FieldProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Connect.TaskTemplate.InvisibleFieldInfoProperty (
+        module Exports, InvisibleFieldInfoProperty(..),
+        mkInvisibleFieldInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+data InvisibleFieldInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-invisiblefieldinfo.html>
+    InvisibleFieldInfoProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-invisiblefieldinfo.html#cfn-connect-tasktemplate-invisiblefieldinfo-id>
+                                id :: FieldIdentifierProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInvisibleFieldInfoProperty ::
+  FieldIdentifierProperty -> InvisibleFieldInfoProperty
+mkInvisibleFieldInfoProperty id
+  = InvisibleFieldInfoProperty {haddock_workaround_ = (), id = id}
+instance ToResourceProperties InvisibleFieldInfoProperty where
+  toResourceProperties InvisibleFieldInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.InvisibleFieldInfo",
+         supportsTags = Prelude.False, properties = ["Id" JSON..= id]}
+instance JSON.ToJSON InvisibleFieldInfoProperty where
+  toJSON InvisibleFieldInfoProperty {..}
+    = JSON.object ["Id" JSON..= id]
+instance Property "Id" InvisibleFieldInfoProperty where
+  type PropertyType "Id" InvisibleFieldInfoProperty = FieldIdentifierProperty
+  set newValue InvisibleFieldInfoProperty {..}
+    = InvisibleFieldInfoProperty {id = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/InvisibleFieldInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.InvisibleFieldInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InvisibleFieldInfoProperty :: Prelude.Type
+instance ToResourceProperties InvisibleFieldInfoProperty
+instance Prelude.Eq InvisibleFieldInfoProperty
+instance Prelude.Show InvisibleFieldInfoProperty
+instance JSON.ToJSON InvisibleFieldInfoProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Connect.TaskTemplate.ReadOnlyFieldInfoProperty (
+        module Exports, ReadOnlyFieldInfoProperty(..),
+        mkReadOnlyFieldInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+data ReadOnlyFieldInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-readonlyfieldinfo.html>
+    ReadOnlyFieldInfoProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-readonlyfieldinfo.html#cfn-connect-tasktemplate-readonlyfieldinfo-id>
+                               id :: FieldIdentifierProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReadOnlyFieldInfoProperty ::
+  FieldIdentifierProperty -> ReadOnlyFieldInfoProperty
+mkReadOnlyFieldInfoProperty id
+  = ReadOnlyFieldInfoProperty {haddock_workaround_ = (), id = id}
+instance ToResourceProperties ReadOnlyFieldInfoProperty where
+  toResourceProperties ReadOnlyFieldInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.ReadOnlyFieldInfo",
+         supportsTags = Prelude.False, properties = ["Id" JSON..= id]}
+instance JSON.ToJSON ReadOnlyFieldInfoProperty where
+  toJSON ReadOnlyFieldInfoProperty {..}
+    = JSON.object ["Id" JSON..= id]
+instance Property "Id" ReadOnlyFieldInfoProperty where
+  type PropertyType "Id" ReadOnlyFieldInfoProperty = FieldIdentifierProperty
+  set newValue ReadOnlyFieldInfoProperty {..}
+    = ReadOnlyFieldInfoProperty {id = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/ReadOnlyFieldInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.ReadOnlyFieldInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ReadOnlyFieldInfoProperty :: Prelude.Type
+instance ToResourceProperties ReadOnlyFieldInfoProperty
+instance Prelude.Eq ReadOnlyFieldInfoProperty
+instance Prelude.Show ReadOnlyFieldInfoProperty
+instance JSON.ToJSON ReadOnlyFieldInfoProperty
diff --git a/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs b/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Connect.TaskTemplate.RequiredFieldInfoProperty (
+        module Exports, RequiredFieldInfoProperty(..),
+        mkRequiredFieldInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+data RequiredFieldInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-requiredfieldinfo.html>
+    RequiredFieldInfoProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-tasktemplate-requiredfieldinfo.html#cfn-connect-tasktemplate-requiredfieldinfo-id>
+                               id :: FieldIdentifierProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRequiredFieldInfoProperty ::
+  FieldIdentifierProperty -> RequiredFieldInfoProperty
+mkRequiredFieldInfoProperty id
+  = RequiredFieldInfoProperty {haddock_workaround_ = (), id = id}
+instance ToResourceProperties RequiredFieldInfoProperty where
+  toResourceProperties RequiredFieldInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TaskTemplate.RequiredFieldInfo",
+         supportsTags = Prelude.False, properties = ["Id" JSON..= id]}
+instance JSON.ToJSON RequiredFieldInfoProperty where
+  toJSON RequiredFieldInfoProperty {..}
+    = JSON.object ["Id" JSON..= id]
+instance Property "Id" RequiredFieldInfoProperty where
+  type PropertyType "Id" RequiredFieldInfoProperty = FieldIdentifierProperty
+  set newValue RequiredFieldInfoProperty {..}
+    = RequiredFieldInfoProperty {id = newValue, ..}
diff --git a/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs-boot b/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TaskTemplate/RequiredFieldInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.TaskTemplate.RequiredFieldInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RequiredFieldInfoProperty :: Prelude.Type
+instance ToResourceProperties RequiredFieldInfoProperty
+instance Prelude.Eq RequiredFieldInfoProperty
+instance Prelude.Show RequiredFieldInfoProperty
+instance JSON.ToJSON RequiredFieldInfoProperty
diff --git a/gen/Stratosphere/Connect/TrafficDistributionGroup.hs b/gen/Stratosphere/Connect/TrafficDistributionGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/TrafficDistributionGroup.hs
@@ -0,0 +1,65 @@
+module Stratosphere.Connect.TrafficDistributionGroup (
+        TrafficDistributionGroup(..), mkTrafficDistributionGroup
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data TrafficDistributionGroup
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html>
+    TrafficDistributionGroup {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html#cfn-connect-trafficdistributiongroup-description>
+                              description :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html#cfn-connect-trafficdistributiongroup-instancearn>
+                              instanceArn :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html#cfn-connect-trafficdistributiongroup-name>
+                              name :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html#cfn-connect-trafficdistributiongroup-tags>
+                              tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTrafficDistributionGroup ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> TrafficDistributionGroup
+mkTrafficDistributionGroup instanceArn name
+  = TrafficDistributionGroup
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       description = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties TrafficDistributionGroup where
+  toResourceProperties TrafficDistributionGroup {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::TrafficDistributionGroup",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON TrafficDistributionGroup where
+  toJSON TrafficDistributionGroup {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Description" TrafficDistributionGroup where
+  type PropertyType "Description" TrafficDistributionGroup = Value Prelude.Text
+  set newValue TrafficDistributionGroup {..}
+    = TrafficDistributionGroup
+        {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" TrafficDistributionGroup where
+  type PropertyType "InstanceArn" TrafficDistributionGroup = Value Prelude.Text
+  set newValue TrafficDistributionGroup {..}
+    = TrafficDistributionGroup {instanceArn = newValue, ..}
+instance Property "Name" TrafficDistributionGroup where
+  type PropertyType "Name" TrafficDistributionGroup = Value Prelude.Text
+  set newValue TrafficDistributionGroup {..}
+    = TrafficDistributionGroup {name = newValue, ..}
+instance Property "Tags" TrafficDistributionGroup where
+  type PropertyType "Tags" TrafficDistributionGroup = [Tag]
+  set newValue TrafficDistributionGroup {..}
+    = TrafficDistributionGroup {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/User.hs b/gen/Stratosphere/Connect/User.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User.hs
@@ -0,0 +1,130 @@
+module Stratosphere.Connect.User (
+        module Exports, User(..), mkUser
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.User.UserIdentityInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.User.UserPhoneConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.User.UserProficiencyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data User
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html>
+    User {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-directoryuserid>
+          directoryUserId :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-hierarchygrouparn>
+          hierarchyGroupArn :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-identityinfo>
+          identityInfo :: (Prelude.Maybe UserIdentityInfoProperty),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-instancearn>
+          instanceArn :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-password>
+          password :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-phoneconfig>
+          phoneConfig :: UserPhoneConfigProperty,
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-routingprofilearn>
+          routingProfileArn :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-securityprofilearns>
+          securityProfileArns :: (ValueList Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-tags>
+          tags :: (Prelude.Maybe [Tag]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-userproficiencies>
+          userProficiencies :: (Prelude.Maybe [UserProficiencyProperty]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html#cfn-connect-user-username>
+          username :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUser ::
+  Value Prelude.Text
+  -> UserPhoneConfigProperty
+     -> Value Prelude.Text
+        -> ValueList Prelude.Text -> Value Prelude.Text -> User
+mkUser
+  instanceArn
+  phoneConfig
+  routingProfileArn
+  securityProfileArns
+  username
+  = User
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       phoneConfig = phoneConfig, routingProfileArn = routingProfileArn,
+       securityProfileArns = securityProfileArns, username = username,
+       directoryUserId = Prelude.Nothing,
+       hierarchyGroupArn = Prelude.Nothing,
+       identityInfo = Prelude.Nothing, password = Prelude.Nothing,
+       tags = Prelude.Nothing, userProficiencies = Prelude.Nothing}
+instance ToResourceProperties User where
+  toResourceProperties User {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::User", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn,
+                            "PhoneConfig" JSON..= phoneConfig,
+                            "RoutingProfileArn" JSON..= routingProfileArn,
+                            "SecurityProfileArns" JSON..= securityProfileArns,
+                            "Username" JSON..= username]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DirectoryUserId" Prelude.<$> directoryUserId,
+                               (JSON..=) "HierarchyGroupArn" Prelude.<$> hierarchyGroupArn,
+                               (JSON..=) "IdentityInfo" Prelude.<$> identityInfo,
+                               (JSON..=) "Password" Prelude.<$> password,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "UserProficiencies" Prelude.<$> userProficiencies]))}
+instance JSON.ToJSON User where
+  toJSON User {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn,
+               "PhoneConfig" JSON..= phoneConfig,
+               "RoutingProfileArn" JSON..= routingProfileArn,
+               "SecurityProfileArns" JSON..= securityProfileArns,
+               "Username" JSON..= username]
+              (Prelude.catMaybes
+                 [(JSON..=) "DirectoryUserId" Prelude.<$> directoryUserId,
+                  (JSON..=) "HierarchyGroupArn" Prelude.<$> hierarchyGroupArn,
+                  (JSON..=) "IdentityInfo" Prelude.<$> identityInfo,
+                  (JSON..=) "Password" Prelude.<$> password,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "UserProficiencies" Prelude.<$> userProficiencies])))
+instance Property "DirectoryUserId" User where
+  type PropertyType "DirectoryUserId" User = Value Prelude.Text
+  set newValue User {..}
+    = User {directoryUserId = Prelude.pure newValue, ..}
+instance Property "HierarchyGroupArn" User where
+  type PropertyType "HierarchyGroupArn" User = Value Prelude.Text
+  set newValue User {..}
+    = User {hierarchyGroupArn = Prelude.pure newValue, ..}
+instance Property "IdentityInfo" User where
+  type PropertyType "IdentityInfo" User = UserIdentityInfoProperty
+  set newValue User {..}
+    = User {identityInfo = Prelude.pure newValue, ..}
+instance Property "InstanceArn" User where
+  type PropertyType "InstanceArn" User = Value Prelude.Text
+  set newValue User {..} = User {instanceArn = newValue, ..}
+instance Property "Password" User where
+  type PropertyType "Password" User = Value Prelude.Text
+  set newValue User {..}
+    = User {password = Prelude.pure newValue, ..}
+instance Property "PhoneConfig" User where
+  type PropertyType "PhoneConfig" User = UserPhoneConfigProperty
+  set newValue User {..} = User {phoneConfig = newValue, ..}
+instance Property "RoutingProfileArn" User where
+  type PropertyType "RoutingProfileArn" User = Value Prelude.Text
+  set newValue User {..} = User {routingProfileArn = newValue, ..}
+instance Property "SecurityProfileArns" User where
+  type PropertyType "SecurityProfileArns" User = ValueList Prelude.Text
+  set newValue User {..} = User {securityProfileArns = newValue, ..}
+instance Property "Tags" User where
+  type PropertyType "Tags" User = [Tag]
+  set newValue User {..} = User {tags = Prelude.pure newValue, ..}
+instance Property "UserProficiencies" User where
+  type PropertyType "UserProficiencies" User = [UserProficiencyProperty]
+  set newValue User {..}
+    = User {userProficiencies = Prelude.pure newValue, ..}
+instance Property "Username" User where
+  type PropertyType "Username" User = Value Prelude.Text
+  set newValue User {..} = User {username = newValue, ..}
diff --git a/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs b/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.Connect.User.UserIdentityInfoProperty (
+        UserIdentityInfoProperty(..), mkUserIdentityInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserIdentityInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html>
+    UserIdentityInfoProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html#cfn-connect-user-useridentityinfo-email>
+                              email :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html#cfn-connect-user-useridentityinfo-firstname>
+                              firstName :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html#cfn-connect-user-useridentityinfo-lastname>
+                              lastName :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html#cfn-connect-user-useridentityinfo-mobile>
+                              mobile :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-useridentityinfo.html#cfn-connect-user-useridentityinfo-secondaryemail>
+                              secondaryEmail :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserIdentityInfoProperty :: UserIdentityInfoProperty
+mkUserIdentityInfoProperty
+  = UserIdentityInfoProperty
+      {haddock_workaround_ = (), email = Prelude.Nothing,
+       firstName = Prelude.Nothing, lastName = Prelude.Nothing,
+       mobile = Prelude.Nothing, secondaryEmail = Prelude.Nothing}
+instance ToResourceProperties UserIdentityInfoProperty where
+  toResourceProperties UserIdentityInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::User.UserIdentityInfo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Email" Prelude.<$> email,
+                            (JSON..=) "FirstName" Prelude.<$> firstName,
+                            (JSON..=) "LastName" Prelude.<$> lastName,
+                            (JSON..=) "Mobile" Prelude.<$> mobile,
+                            (JSON..=) "SecondaryEmail" Prelude.<$> secondaryEmail])}
+instance JSON.ToJSON UserIdentityInfoProperty where
+  toJSON UserIdentityInfoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Email" Prelude.<$> email,
+               (JSON..=) "FirstName" Prelude.<$> firstName,
+               (JSON..=) "LastName" Prelude.<$> lastName,
+               (JSON..=) "Mobile" Prelude.<$> mobile,
+               (JSON..=) "SecondaryEmail" Prelude.<$> secondaryEmail]))
+instance Property "Email" UserIdentityInfoProperty where
+  type PropertyType "Email" UserIdentityInfoProperty = Value Prelude.Text
+  set newValue UserIdentityInfoProperty {..}
+    = UserIdentityInfoProperty {email = Prelude.pure newValue, ..}
+instance Property "FirstName" UserIdentityInfoProperty where
+  type PropertyType "FirstName" UserIdentityInfoProperty = Value Prelude.Text
+  set newValue UserIdentityInfoProperty {..}
+    = UserIdentityInfoProperty {firstName = Prelude.pure newValue, ..}
+instance Property "LastName" UserIdentityInfoProperty where
+  type PropertyType "LastName" UserIdentityInfoProperty = Value Prelude.Text
+  set newValue UserIdentityInfoProperty {..}
+    = UserIdentityInfoProperty {lastName = Prelude.pure newValue, ..}
+instance Property "Mobile" UserIdentityInfoProperty where
+  type PropertyType "Mobile" UserIdentityInfoProperty = Value Prelude.Text
+  set newValue UserIdentityInfoProperty {..}
+    = UserIdentityInfoProperty {mobile = Prelude.pure newValue, ..}
+instance Property "SecondaryEmail" UserIdentityInfoProperty where
+  type PropertyType "SecondaryEmail" UserIdentityInfoProperty = Value Prelude.Text
+  set newValue UserIdentityInfoProperty {..}
+    = UserIdentityInfoProperty
+        {secondaryEmail = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs-boot b/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserIdentityInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.User.UserIdentityInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserIdentityInfoProperty :: Prelude.Type
+instance ToResourceProperties UserIdentityInfoProperty
+instance Prelude.Eq UserIdentityInfoProperty
+instance Prelude.Show UserIdentityInfoProperty
+instance JSON.ToJSON UserIdentityInfoProperty
diff --git a/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs b/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs
@@ -0,0 +1,81 @@
+module Stratosphere.Connect.User.UserPhoneConfigProperty (
+        UserPhoneConfigProperty(..), mkUserPhoneConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserPhoneConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html>
+    UserPhoneConfigProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html#cfn-connect-user-userphoneconfig-aftercontactworktimelimit>
+                             afterContactWorkTimeLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html#cfn-connect-user-userphoneconfig-autoaccept>
+                             autoAccept :: (Prelude.Maybe (Value Prelude.Bool)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html#cfn-connect-user-userphoneconfig-deskphonenumber>
+                             deskPhoneNumber :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html#cfn-connect-user-userphoneconfig-persistentconnection>
+                             persistentConnection :: (Prelude.Maybe (Value Prelude.Bool)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userphoneconfig.html#cfn-connect-user-userphoneconfig-phonetype>
+                             phoneType :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserPhoneConfigProperty ::
+  Value Prelude.Text -> UserPhoneConfigProperty
+mkUserPhoneConfigProperty phoneType
+  = UserPhoneConfigProperty
+      {haddock_workaround_ = (), phoneType = phoneType,
+       afterContactWorkTimeLimit = Prelude.Nothing,
+       autoAccept = Prelude.Nothing, deskPhoneNumber = Prelude.Nothing,
+       persistentConnection = Prelude.Nothing}
+instance ToResourceProperties UserPhoneConfigProperty where
+  toResourceProperties UserPhoneConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::User.UserPhoneConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PhoneType" JSON..= phoneType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AfterContactWorkTimeLimit"
+                                 Prelude.<$> afterContactWorkTimeLimit,
+                               (JSON..=) "AutoAccept" Prelude.<$> autoAccept,
+                               (JSON..=) "DeskPhoneNumber" Prelude.<$> deskPhoneNumber,
+                               (JSON..=) "PersistentConnection"
+                                 Prelude.<$> persistentConnection]))}
+instance JSON.ToJSON UserPhoneConfigProperty where
+  toJSON UserPhoneConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PhoneType" JSON..= phoneType]
+              (Prelude.catMaybes
+                 [(JSON..=) "AfterContactWorkTimeLimit"
+                    Prelude.<$> afterContactWorkTimeLimit,
+                  (JSON..=) "AutoAccept" Prelude.<$> autoAccept,
+                  (JSON..=) "DeskPhoneNumber" Prelude.<$> deskPhoneNumber,
+                  (JSON..=) "PersistentConnection"
+                    Prelude.<$> persistentConnection])))
+instance Property "AfterContactWorkTimeLimit" UserPhoneConfigProperty where
+  type PropertyType "AfterContactWorkTimeLimit" UserPhoneConfigProperty = Value Prelude.Integer
+  set newValue UserPhoneConfigProperty {..}
+    = UserPhoneConfigProperty
+        {afterContactWorkTimeLimit = Prelude.pure newValue, ..}
+instance Property "AutoAccept" UserPhoneConfigProperty where
+  type PropertyType "AutoAccept" UserPhoneConfigProperty = Value Prelude.Bool
+  set newValue UserPhoneConfigProperty {..}
+    = UserPhoneConfigProperty {autoAccept = Prelude.pure newValue, ..}
+instance Property "DeskPhoneNumber" UserPhoneConfigProperty where
+  type PropertyType "DeskPhoneNumber" UserPhoneConfigProperty = Value Prelude.Text
+  set newValue UserPhoneConfigProperty {..}
+    = UserPhoneConfigProperty
+        {deskPhoneNumber = Prelude.pure newValue, ..}
+instance Property "PersistentConnection" UserPhoneConfigProperty where
+  type PropertyType "PersistentConnection" UserPhoneConfigProperty = Value Prelude.Bool
+  set newValue UserPhoneConfigProperty {..}
+    = UserPhoneConfigProperty
+        {persistentConnection = Prelude.pure newValue, ..}
+instance Property "PhoneType" UserPhoneConfigProperty where
+  type PropertyType "PhoneType" UserPhoneConfigProperty = Value Prelude.Text
+  set newValue UserPhoneConfigProperty {..}
+    = UserPhoneConfigProperty {phoneType = newValue, ..}
diff --git a/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs-boot b/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserPhoneConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.User.UserPhoneConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserPhoneConfigProperty :: Prelude.Type
+instance ToResourceProperties UserPhoneConfigProperty
+instance Prelude.Eq UserPhoneConfigProperty
+instance Prelude.Show UserPhoneConfigProperty
+instance JSON.ToJSON UserPhoneConfigProperty
diff --git a/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs b/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.Connect.User.UserProficiencyProperty (
+        UserProficiencyProperty(..), mkUserProficiencyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserProficiencyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userproficiency.html>
+    UserProficiencyProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userproficiency.html#cfn-connect-user-userproficiency-attributename>
+                             attributeName :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userproficiency.html#cfn-connect-user-userproficiency-attributevalue>
+                             attributeValue :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-user-userproficiency.html#cfn-connect-user-userproficiency-level>
+                             level :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserProficiencyProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Double -> UserProficiencyProperty
+mkUserProficiencyProperty attributeName attributeValue level
+  = UserProficiencyProperty
+      {haddock_workaround_ = (), attributeName = attributeName,
+       attributeValue = attributeValue, level = level}
+instance ToResourceProperties UserProficiencyProperty where
+  toResourceProperties UserProficiencyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::User.UserProficiency",
+         supportsTags = Prelude.False,
+         properties = ["AttributeName" JSON..= attributeName,
+                       "AttributeValue" JSON..= attributeValue, "Level" JSON..= level]}
+instance JSON.ToJSON UserProficiencyProperty where
+  toJSON UserProficiencyProperty {..}
+    = JSON.object
+        ["AttributeName" JSON..= attributeName,
+         "AttributeValue" JSON..= attributeValue, "Level" JSON..= level]
+instance Property "AttributeName" UserProficiencyProperty where
+  type PropertyType "AttributeName" UserProficiencyProperty = Value Prelude.Text
+  set newValue UserProficiencyProperty {..}
+    = UserProficiencyProperty {attributeName = newValue, ..}
+instance Property "AttributeValue" UserProficiencyProperty where
+  type PropertyType "AttributeValue" UserProficiencyProperty = Value Prelude.Text
+  set newValue UserProficiencyProperty {..}
+    = UserProficiencyProperty {attributeValue = newValue, ..}
+instance Property "Level" UserProficiencyProperty where
+  type PropertyType "Level" UserProficiencyProperty = Value Prelude.Double
+  set newValue UserProficiencyProperty {..}
+    = UserProficiencyProperty {level = newValue, ..}
diff --git a/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs-boot b/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/User/UserProficiencyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.User.UserProficiencyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserProficiencyProperty :: Prelude.Type
+instance ToResourceProperties UserProficiencyProperty
+instance Prelude.Eq UserProficiencyProperty
+instance Prelude.Show UserProficiencyProperty
+instance JSON.ToJSON UserProficiencyProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyGroup.hs b/gen/Stratosphere/Connect/UserHierarchyGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyGroup.hs
@@ -0,0 +1,63 @@
+module Stratosphere.Connect.UserHierarchyGroup (
+        UserHierarchyGroup(..), mkUserHierarchyGroup
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data UserHierarchyGroup
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html>
+    UserHierarchyGroup {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html#cfn-connect-userhierarchygroup-instancearn>
+                        instanceArn :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html#cfn-connect-userhierarchygroup-name>
+                        name :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html#cfn-connect-userhierarchygroup-parentgrouparn>
+                        parentGroupArn :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html#cfn-connect-userhierarchygroup-tags>
+                        tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserHierarchyGroup ::
+  Value Prelude.Text -> Value Prelude.Text -> UserHierarchyGroup
+mkUserHierarchyGroup instanceArn name
+  = UserHierarchyGroup
+      {haddock_workaround_ = (), instanceArn = instanceArn, name = name,
+       parentGroupArn = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties UserHierarchyGroup where
+  toResourceProperties UserHierarchyGroup {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyGroup",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ParentGroupArn" Prelude.<$> parentGroupArn,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON UserHierarchyGroup where
+  toJSON UserHierarchyGroup {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn, "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "ParentGroupArn" Prelude.<$> parentGroupArn,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "InstanceArn" UserHierarchyGroup where
+  type PropertyType "InstanceArn" UserHierarchyGroup = Value Prelude.Text
+  set newValue UserHierarchyGroup {..}
+    = UserHierarchyGroup {instanceArn = newValue, ..}
+instance Property "Name" UserHierarchyGroup where
+  type PropertyType "Name" UserHierarchyGroup = Value Prelude.Text
+  set newValue UserHierarchyGroup {..}
+    = UserHierarchyGroup {name = newValue, ..}
+instance Property "ParentGroupArn" UserHierarchyGroup where
+  type PropertyType "ParentGroupArn" UserHierarchyGroup = Value Prelude.Text
+  set newValue UserHierarchyGroup {..}
+    = UserHierarchyGroup {parentGroupArn = Prelude.pure newValue, ..}
+instance Property "Tags" UserHierarchyGroup where
+  type PropertyType "Tags" UserHierarchyGroup = [Tag]
+  set newValue UserHierarchyGroup {..}
+    = UserHierarchyGroup {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure.hs b/gen/Stratosphere/Connect/UserHierarchyStructure.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure.hs
@@ -0,0 +1,53 @@
+module Stratosphere.Connect.UserHierarchyStructure (
+        module Exports, UserHierarchyStructure(..),
+        mkUserHierarchyStructure
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.UserHierarchyStructureProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data UserHierarchyStructure
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchystructure.html>
+    UserHierarchyStructure {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchystructure.html#cfn-connect-userhierarchystructure-instancearn>
+                            instanceArn :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure>
+                            userHierarchyStructure :: (Prelude.Maybe UserHierarchyStructureProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserHierarchyStructure ::
+  Value Prelude.Text -> UserHierarchyStructure
+mkUserHierarchyStructure instanceArn
+  = UserHierarchyStructure
+      {haddock_workaround_ = (), instanceArn = instanceArn,
+       userHierarchyStructure = Prelude.Nothing}
+instance ToResourceProperties UserHierarchyStructure where
+  toResourceProperties UserHierarchyStructure {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InstanceArn" JSON..= instanceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "UserHierarchyStructure"
+                                 Prelude.<$> userHierarchyStructure]))}
+instance JSON.ToJSON UserHierarchyStructure where
+  toJSON UserHierarchyStructure {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InstanceArn" JSON..= instanceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "UserHierarchyStructure"
+                    Prelude.<$> userHierarchyStructure])))
+instance Property "InstanceArn" UserHierarchyStructure where
+  type PropertyType "InstanceArn" UserHierarchyStructure = Value Prelude.Text
+  set newValue UserHierarchyStructure {..}
+    = UserHierarchyStructure {instanceArn = newValue, ..}
+instance Property "UserHierarchyStructure" UserHierarchyStructure where
+  type PropertyType "UserHierarchyStructure" UserHierarchyStructure = UserHierarchyStructureProperty
+  set newValue UserHierarchyStructure {..}
+    = UserHierarchyStructure
+        {userHierarchyStructure = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelFiveProperty (
+        LevelFiveProperty(..), mkLevelFiveProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LevelFiveProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfive.html>
+    LevelFiveProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfive.html#cfn-connect-userhierarchystructure-levelfive-hierarchylevelarn>
+                       hierarchyLevelArn :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfive.html#cfn-connect-userhierarchystructure-levelfive-hierarchylevelid>
+                       hierarchyLevelId :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfive.html#cfn-connect-userhierarchystructure-levelfive-name>
+                       name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLevelFiveProperty :: Value Prelude.Text -> LevelFiveProperty
+mkLevelFiveProperty name
+  = LevelFiveProperty
+      {haddock_workaround_ = (), name = name,
+       hierarchyLevelArn = Prelude.Nothing,
+       hierarchyLevelId = Prelude.Nothing}
+instance ToResourceProperties LevelFiveProperty where
+  toResourceProperties LevelFiveProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.LevelFive",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                               (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId]))}
+instance JSON.ToJSON LevelFiveProperty where
+  toJSON LevelFiveProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                  (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId])))
+instance Property "HierarchyLevelArn" LevelFiveProperty where
+  type PropertyType "HierarchyLevelArn" LevelFiveProperty = Value Prelude.Text
+  set newValue LevelFiveProperty {..}
+    = LevelFiveProperty {hierarchyLevelArn = Prelude.pure newValue, ..}
+instance Property "HierarchyLevelId" LevelFiveProperty where
+  type PropertyType "HierarchyLevelId" LevelFiveProperty = Value Prelude.Text
+  set newValue LevelFiveProperty {..}
+    = LevelFiveProperty {hierarchyLevelId = Prelude.pure newValue, ..}
+instance Property "Name" LevelFiveProperty where
+  type PropertyType "Name" LevelFiveProperty = Value Prelude.Text
+  set newValue LevelFiveProperty {..}
+    = LevelFiveProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFiveProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelFiveProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LevelFiveProperty :: Prelude.Type
+instance ToResourceProperties LevelFiveProperty
+instance Prelude.Eq LevelFiveProperty
+instance Prelude.Show LevelFiveProperty
+instance JSON.ToJSON LevelFiveProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelFourProperty (
+        LevelFourProperty(..), mkLevelFourProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LevelFourProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfour.html>
+    LevelFourProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfour.html#cfn-connect-userhierarchystructure-levelfour-hierarchylevelarn>
+                       hierarchyLevelArn :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfour.html#cfn-connect-userhierarchystructure-levelfour-hierarchylevelid>
+                       hierarchyLevelId :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelfour.html#cfn-connect-userhierarchystructure-levelfour-name>
+                       name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLevelFourProperty :: Value Prelude.Text -> LevelFourProperty
+mkLevelFourProperty name
+  = LevelFourProperty
+      {haddock_workaround_ = (), name = name,
+       hierarchyLevelArn = Prelude.Nothing,
+       hierarchyLevelId = Prelude.Nothing}
+instance ToResourceProperties LevelFourProperty where
+  toResourceProperties LevelFourProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.LevelFour",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                               (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId]))}
+instance JSON.ToJSON LevelFourProperty where
+  toJSON LevelFourProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                  (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId])))
+instance Property "HierarchyLevelArn" LevelFourProperty where
+  type PropertyType "HierarchyLevelArn" LevelFourProperty = Value Prelude.Text
+  set newValue LevelFourProperty {..}
+    = LevelFourProperty {hierarchyLevelArn = Prelude.pure newValue, ..}
+instance Property "HierarchyLevelId" LevelFourProperty where
+  type PropertyType "HierarchyLevelId" LevelFourProperty = Value Prelude.Text
+  set newValue LevelFourProperty {..}
+    = LevelFourProperty {hierarchyLevelId = Prelude.pure newValue, ..}
+instance Property "Name" LevelFourProperty where
+  type PropertyType "Name" LevelFourProperty = Value Prelude.Text
+  set newValue LevelFourProperty {..}
+    = LevelFourProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelFourProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelFourProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LevelFourProperty :: Prelude.Type
+instance ToResourceProperties LevelFourProperty
+instance Prelude.Eq LevelFourProperty
+instance Prelude.Show LevelFourProperty
+instance JSON.ToJSON LevelFourProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelOneProperty (
+        LevelOneProperty(..), mkLevelOneProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LevelOneProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelone.html>
+    LevelOneProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelone.html#cfn-connect-userhierarchystructure-levelone-hierarchylevelarn>
+                      hierarchyLevelArn :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelone.html#cfn-connect-userhierarchystructure-levelone-hierarchylevelid>
+                      hierarchyLevelId :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelone.html#cfn-connect-userhierarchystructure-levelone-name>
+                      name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLevelOneProperty :: Value Prelude.Text -> LevelOneProperty
+mkLevelOneProperty name
+  = LevelOneProperty
+      {haddock_workaround_ = (), name = name,
+       hierarchyLevelArn = Prelude.Nothing,
+       hierarchyLevelId = Prelude.Nothing}
+instance ToResourceProperties LevelOneProperty where
+  toResourceProperties LevelOneProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.LevelOne",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                               (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId]))}
+instance JSON.ToJSON LevelOneProperty where
+  toJSON LevelOneProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                  (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId])))
+instance Property "HierarchyLevelArn" LevelOneProperty where
+  type PropertyType "HierarchyLevelArn" LevelOneProperty = Value Prelude.Text
+  set newValue LevelOneProperty {..}
+    = LevelOneProperty {hierarchyLevelArn = Prelude.pure newValue, ..}
+instance Property "HierarchyLevelId" LevelOneProperty where
+  type PropertyType "HierarchyLevelId" LevelOneProperty = Value Prelude.Text
+  set newValue LevelOneProperty {..}
+    = LevelOneProperty {hierarchyLevelId = Prelude.pure newValue, ..}
+instance Property "Name" LevelOneProperty where
+  type PropertyType "Name" LevelOneProperty = Value Prelude.Text
+  set newValue LevelOneProperty {..}
+    = LevelOneProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelOneProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelOneProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LevelOneProperty :: Prelude.Type
+instance ToResourceProperties LevelOneProperty
+instance Prelude.Eq LevelOneProperty
+instance Prelude.Show LevelOneProperty
+instance JSON.ToJSON LevelOneProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelThreeProperty (
+        LevelThreeProperty(..), mkLevelThreeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LevelThreeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelthree.html>
+    LevelThreeProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelthree.html#cfn-connect-userhierarchystructure-levelthree-hierarchylevelarn>
+                        hierarchyLevelArn :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelthree.html#cfn-connect-userhierarchystructure-levelthree-hierarchylevelid>
+                        hierarchyLevelId :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-levelthree.html#cfn-connect-userhierarchystructure-levelthree-name>
+                        name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLevelThreeProperty :: Value Prelude.Text -> LevelThreeProperty
+mkLevelThreeProperty name
+  = LevelThreeProperty
+      {haddock_workaround_ = (), name = name,
+       hierarchyLevelArn = Prelude.Nothing,
+       hierarchyLevelId = Prelude.Nothing}
+instance ToResourceProperties LevelThreeProperty where
+  toResourceProperties LevelThreeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.LevelThree",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                               (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId]))}
+instance JSON.ToJSON LevelThreeProperty where
+  toJSON LevelThreeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                  (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId])))
+instance Property "HierarchyLevelArn" LevelThreeProperty where
+  type PropertyType "HierarchyLevelArn" LevelThreeProperty = Value Prelude.Text
+  set newValue LevelThreeProperty {..}
+    = LevelThreeProperty
+        {hierarchyLevelArn = Prelude.pure newValue, ..}
+instance Property "HierarchyLevelId" LevelThreeProperty where
+  type PropertyType "HierarchyLevelId" LevelThreeProperty = Value Prelude.Text
+  set newValue LevelThreeProperty {..}
+    = LevelThreeProperty {hierarchyLevelId = Prelude.pure newValue, ..}
+instance Property "Name" LevelThreeProperty where
+  type PropertyType "Name" LevelThreeProperty = Value Prelude.Text
+  set newValue LevelThreeProperty {..}
+    = LevelThreeProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelThreeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelThreeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LevelThreeProperty :: Prelude.Type
+instance ToResourceProperties LevelThreeProperty
+instance Prelude.Eq LevelThreeProperty
+instance Prelude.Show LevelThreeProperty
+instance JSON.ToJSON LevelThreeProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs
@@ -0,0 +1,56 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelTwoProperty (
+        LevelTwoProperty(..), mkLevelTwoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LevelTwoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-leveltwo.html>
+    LevelTwoProperty {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-leveltwo.html#cfn-connect-userhierarchystructure-leveltwo-hierarchylevelarn>
+                      hierarchyLevelArn :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-leveltwo.html#cfn-connect-userhierarchystructure-leveltwo-hierarchylevelid>
+                      hierarchyLevelId :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-leveltwo.html#cfn-connect-userhierarchystructure-leveltwo-name>
+                      name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLevelTwoProperty :: Value Prelude.Text -> LevelTwoProperty
+mkLevelTwoProperty name
+  = LevelTwoProperty
+      {haddock_workaround_ = (), name = name,
+       hierarchyLevelArn = Prelude.Nothing,
+       hierarchyLevelId = Prelude.Nothing}
+instance ToResourceProperties LevelTwoProperty where
+  toResourceProperties LevelTwoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.LevelTwo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                               (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId]))}
+instance JSON.ToJSON LevelTwoProperty where
+  toJSON LevelTwoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "HierarchyLevelArn" Prelude.<$> hierarchyLevelArn,
+                  (JSON..=) "HierarchyLevelId" Prelude.<$> hierarchyLevelId])))
+instance Property "HierarchyLevelArn" LevelTwoProperty where
+  type PropertyType "HierarchyLevelArn" LevelTwoProperty = Value Prelude.Text
+  set newValue LevelTwoProperty {..}
+    = LevelTwoProperty {hierarchyLevelArn = Prelude.pure newValue, ..}
+instance Property "HierarchyLevelId" LevelTwoProperty where
+  type PropertyType "HierarchyLevelId" LevelTwoProperty = Value Prelude.Text
+  set newValue LevelTwoProperty {..}
+    = LevelTwoProperty {hierarchyLevelId = Prelude.pure newValue, ..}
+instance Property "Name" LevelTwoProperty where
+  type PropertyType "Name" LevelTwoProperty = Value Prelude.Text
+  set newValue LevelTwoProperty {..}
+    = LevelTwoProperty {name = newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/LevelTwoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.LevelTwoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LevelTwoProperty :: Prelude.Type
+instance ToResourceProperties LevelTwoProperty
+instance Prelude.Eq LevelTwoProperty
+instance Prelude.Show LevelTwoProperty
+instance JSON.ToJSON LevelTwoProperty
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs b/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs
@@ -0,0 +1,80 @@
+module Stratosphere.Connect.UserHierarchyStructure.UserHierarchyStructureProperty (
+        module Exports, UserHierarchyStructureProperty(..),
+        mkUserHierarchyStructureProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.LevelFiveProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.LevelFourProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.LevelOneProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.LevelThreeProperty as Exports
+import {-# SOURCE #-} Stratosphere.Connect.UserHierarchyStructure.LevelTwoProperty as Exports
+import Stratosphere.ResourceProperties
+data UserHierarchyStructureProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html>
+    UserHierarchyStructureProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure-levelfive>
+                                    levelFive :: (Prelude.Maybe LevelFiveProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure-levelfour>
+                                    levelFour :: (Prelude.Maybe LevelFourProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure-levelone>
+                                    levelOne :: (Prelude.Maybe LevelOneProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure-levelthree>
+                                    levelThree :: (Prelude.Maybe LevelThreeProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-userhierarchystructure-userhierarchystructure.html#cfn-connect-userhierarchystructure-userhierarchystructure-leveltwo>
+                                    levelTwo :: (Prelude.Maybe LevelTwoProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkUserHierarchyStructureProperty :: UserHierarchyStructureProperty
+mkUserHierarchyStructureProperty
+  = UserHierarchyStructureProperty
+      {haddock_workaround_ = (), levelFive = Prelude.Nothing,
+       levelFour = Prelude.Nothing, levelOne = Prelude.Nothing,
+       levelThree = Prelude.Nothing, levelTwo = Prelude.Nothing}
+instance ToResourceProperties UserHierarchyStructureProperty where
+  toResourceProperties UserHierarchyStructureProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::UserHierarchyStructure.UserHierarchyStructure",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "LevelFive" Prelude.<$> levelFive,
+                            (JSON..=) "LevelFour" Prelude.<$> levelFour,
+                            (JSON..=) "LevelOne" Prelude.<$> levelOne,
+                            (JSON..=) "LevelThree" Prelude.<$> levelThree,
+                            (JSON..=) "LevelTwo" Prelude.<$> levelTwo])}
+instance JSON.ToJSON UserHierarchyStructureProperty where
+  toJSON UserHierarchyStructureProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "LevelFive" Prelude.<$> levelFive,
+               (JSON..=) "LevelFour" Prelude.<$> levelFour,
+               (JSON..=) "LevelOne" Prelude.<$> levelOne,
+               (JSON..=) "LevelThree" Prelude.<$> levelThree,
+               (JSON..=) "LevelTwo" Prelude.<$> levelTwo]))
+instance Property "LevelFive" UserHierarchyStructureProperty where
+  type PropertyType "LevelFive" UserHierarchyStructureProperty = LevelFiveProperty
+  set newValue UserHierarchyStructureProperty {..}
+    = UserHierarchyStructureProperty
+        {levelFive = Prelude.pure newValue, ..}
+instance Property "LevelFour" UserHierarchyStructureProperty where
+  type PropertyType "LevelFour" UserHierarchyStructureProperty = LevelFourProperty
+  set newValue UserHierarchyStructureProperty {..}
+    = UserHierarchyStructureProperty
+        {levelFour = Prelude.pure newValue, ..}
+instance Property "LevelOne" UserHierarchyStructureProperty where
+  type PropertyType "LevelOne" UserHierarchyStructureProperty = LevelOneProperty
+  set newValue UserHierarchyStructureProperty {..}
+    = UserHierarchyStructureProperty
+        {levelOne = Prelude.pure newValue, ..}
+instance Property "LevelThree" UserHierarchyStructureProperty where
+  type PropertyType "LevelThree" UserHierarchyStructureProperty = LevelThreeProperty
+  set newValue UserHierarchyStructureProperty {..}
+    = UserHierarchyStructureProperty
+        {levelThree = Prelude.pure newValue, ..}
+instance Property "LevelTwo" UserHierarchyStructureProperty where
+  type PropertyType "LevelTwo" UserHierarchyStructureProperty = LevelTwoProperty
+  set newValue UserHierarchyStructureProperty {..}
+    = UserHierarchyStructureProperty
+        {levelTwo = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs-boot b/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/UserHierarchyStructure/UserHierarchyStructureProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Connect.UserHierarchyStructure.UserHierarchyStructureProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data UserHierarchyStructureProperty :: Prelude.Type
+instance ToResourceProperties UserHierarchyStructureProperty
+instance Prelude.Eq UserHierarchyStructureProperty
+instance Prelude.Show UserHierarchyStructureProperty
+instance JSON.ToJSON UserHierarchyStructureProperty
diff --git a/gen/Stratosphere/Connect/View.hs b/gen/Stratosphere/Connect/View.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/View.hs
@@ -0,0 +1,73 @@
+module Stratosphere.Connect.View (
+        View(..), mkView
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data View
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html>
+    View {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-actions>
+          actions :: (ValueList Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-description>
+          description :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-instancearn>
+          instanceArn :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-name>
+          name :: (Value Prelude.Text),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-tags>
+          tags :: (Prelude.Maybe [Tag]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html#cfn-connect-view-template>
+          template :: JSON.Object}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkView ::
+  ValueList Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> JSON.Object -> View
+mkView actions instanceArn name template
+  = View
+      {haddock_workaround_ = (), actions = actions,
+       instanceArn = instanceArn, name = name, template = template,
+       description = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties View where
+  toResourceProperties View {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::View", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Actions" JSON..= actions, "InstanceArn" JSON..= instanceArn,
+                            "Name" JSON..= name, "Template" JSON..= template]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON View where
+  toJSON View {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Actions" JSON..= actions, "InstanceArn" JSON..= instanceArn,
+               "Name" JSON..= name, "Template" JSON..= template]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Actions" View where
+  type PropertyType "Actions" View = ValueList Prelude.Text
+  set newValue View {..} = View {actions = newValue, ..}
+instance Property "Description" View where
+  type PropertyType "Description" View = Value Prelude.Text
+  set newValue View {..}
+    = View {description = Prelude.pure newValue, ..}
+instance Property "InstanceArn" View where
+  type PropertyType "InstanceArn" View = Value Prelude.Text
+  set newValue View {..} = View {instanceArn = newValue, ..}
+instance Property "Name" View where
+  type PropertyType "Name" View = Value Prelude.Text
+  set newValue View {..} = View {name = newValue, ..}
+instance Property "Tags" View where
+  type PropertyType "Tags" View = [Tag]
+  set newValue View {..} = View {tags = Prelude.pure newValue, ..}
+instance Property "Template" View where
+  type PropertyType "Template" View = JSON.Object
+  set newValue View {..} = View {template = newValue, ..}
diff --git a/gen/Stratosphere/Connect/ViewVersion.hs b/gen/Stratosphere/Connect/ViewVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Connect/ViewVersion.hs
@@ -0,0 +1,56 @@
+module Stratosphere.Connect.ViewVersion (
+        ViewVersion(..), mkViewVersion
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ViewVersion
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-viewversion.html>
+    ViewVersion {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-viewversion.html#cfn-connect-viewversion-versiondescription>
+                 versionDescription :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-viewversion.html#cfn-connect-viewversion-viewarn>
+                 viewArn :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-viewversion.html#cfn-connect-viewversion-viewcontentsha256>
+                 viewContentSha256 :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkViewVersion :: Value Prelude.Text -> ViewVersion
+mkViewVersion viewArn
+  = ViewVersion
+      {haddock_workaround_ = (), viewArn = viewArn,
+       versionDescription = Prelude.Nothing,
+       viewContentSha256 = Prelude.Nothing}
+instance ToResourceProperties ViewVersion where
+  toResourceProperties ViewVersion {..}
+    = ResourceProperties
+        {awsType = "AWS::Connect::ViewVersion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ViewArn" JSON..= viewArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "VersionDescription" Prelude.<$> versionDescription,
+                               (JSON..=) "ViewContentSha256" Prelude.<$> viewContentSha256]))}
+instance JSON.ToJSON ViewVersion where
+  toJSON ViewVersion {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ViewArn" JSON..= viewArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "VersionDescription" Prelude.<$> versionDescription,
+                  (JSON..=) "ViewContentSha256" Prelude.<$> viewContentSha256])))
+instance Property "VersionDescription" ViewVersion where
+  type PropertyType "VersionDescription" ViewVersion = Value Prelude.Text
+  set newValue ViewVersion {..}
+    = ViewVersion {versionDescription = Prelude.pure newValue, ..}
+instance Property "ViewArn" ViewVersion where
+  type PropertyType "ViewArn" ViewVersion = Value Prelude.Text
+  set newValue ViewVersion {..}
+    = ViewVersion {viewArn = newValue, ..}
+instance Property "ViewContentSha256" ViewVersion where
+  type PropertyType "ViewContentSha256" ViewVersion = Value Prelude.Text
+  set newValue ViewVersion {..}
+    = ViewVersion {viewContentSha256 = Prelude.pure newValue, ..}
diff --git a/stratosphere-connect.cabal b/stratosphere-connect.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-connect.cabal
@@ -0,0 +1,179 @@
+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-connect
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS Connect.
+description:    Integration into stratosphere to generate resources and properties for AWS Connect
+category:       AWS, Cloud, Connect
+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.Connect.AgentStatus
+      Stratosphere.Connect.ApprovedOrigin
+      Stratosphere.Connect.ContactFlow
+      Stratosphere.Connect.ContactFlowModule
+      Stratosphere.Connect.ContactFlowVersion
+      Stratosphere.Connect.EmailAddress
+      Stratosphere.Connect.EmailAddress.AliasConfigurationProperty
+      Stratosphere.Connect.EvaluationForm
+      Stratosphere.Connect.EvaluationForm.AutoEvaluationConfigurationProperty
+      Stratosphere.Connect.EvaluationForm.AutomaticFailConfigurationProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormBaseItemProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionOperandProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConditionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementConfigurationProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementExpressionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemEnablementSourceValueProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormItemProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionAutomationProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionOptionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormNumericQuestionPropertiesProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionAutomationAnswerSourceProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormQuestionTypePropertiesProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormSectionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationOptionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionAutomationProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionOptionProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormSingleSelectQuestionPropertiesProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionAutomationProperty
+      Stratosphere.Connect.EvaluationForm.EvaluationFormTextQuestionPropertiesProperty
+      Stratosphere.Connect.EvaluationForm.NumericQuestionPropertyValueAutomationProperty
+      Stratosphere.Connect.EvaluationForm.ScoringStrategyProperty
+      Stratosphere.Connect.EvaluationForm.SingleSelectQuestionRuleCategoryAutomationProperty
+      Stratosphere.Connect.HoursOfOperation
+      Stratosphere.Connect.HoursOfOperation.HoursOfOperationConfigProperty
+      Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideConfigProperty
+      Stratosphere.Connect.HoursOfOperation.HoursOfOperationOverrideProperty
+      Stratosphere.Connect.HoursOfOperation.HoursOfOperationTimeSliceProperty
+      Stratosphere.Connect.HoursOfOperation.OverrideTimeSliceProperty
+      Stratosphere.Connect.Instance
+      Stratosphere.Connect.Instance.AttributesProperty
+      Stratosphere.Connect.InstanceStorageConfig
+      Stratosphere.Connect.InstanceStorageConfig.EncryptionConfigProperty
+      Stratosphere.Connect.InstanceStorageConfig.KinesisFirehoseConfigProperty
+      Stratosphere.Connect.InstanceStorageConfig.KinesisStreamConfigProperty
+      Stratosphere.Connect.InstanceStorageConfig.KinesisVideoStreamConfigProperty
+      Stratosphere.Connect.InstanceStorageConfig.S3ConfigProperty
+      Stratosphere.Connect.IntegrationAssociation
+      Stratosphere.Connect.PhoneNumber
+      Stratosphere.Connect.PredefinedAttribute
+      Stratosphere.Connect.PredefinedAttribute.AttributeConfigurationProperty
+      Stratosphere.Connect.PredefinedAttribute.ValuesProperty
+      Stratosphere.Connect.Prompt
+      Stratosphere.Connect.Queue
+      Stratosphere.Connect.Queue.OutboundCallerConfigProperty
+      Stratosphere.Connect.Queue.OutboundEmailConfigProperty
+      Stratosphere.Connect.QuickConnect
+      Stratosphere.Connect.QuickConnect.PhoneNumberQuickConnectConfigProperty
+      Stratosphere.Connect.QuickConnect.QueueQuickConnectConfigProperty
+      Stratosphere.Connect.QuickConnect.QuickConnectConfigProperty
+      Stratosphere.Connect.QuickConnect.UserQuickConnectConfigProperty
+      Stratosphere.Connect.RoutingProfile
+      Stratosphere.Connect.RoutingProfile.CrossChannelBehaviorProperty
+      Stratosphere.Connect.RoutingProfile.MediaConcurrencyProperty
+      Stratosphere.Connect.RoutingProfile.RoutingProfileManualAssignmentQueueConfigProperty
+      Stratosphere.Connect.RoutingProfile.RoutingProfileQueueConfigProperty
+      Stratosphere.Connect.RoutingProfile.RoutingProfileQueueReferenceProperty
+      Stratosphere.Connect.Rule
+      Stratosphere.Connect.Rule.ActionsProperty
+      Stratosphere.Connect.Rule.CreateCaseActionProperty
+      Stratosphere.Connect.Rule.EventBridgeActionProperty
+      Stratosphere.Connect.Rule.FieldProperty
+      Stratosphere.Connect.Rule.FieldValueProperty
+      Stratosphere.Connect.Rule.NotificationRecipientTypeProperty
+      Stratosphere.Connect.Rule.ReferenceProperty
+      Stratosphere.Connect.Rule.RuleTriggerEventSourceProperty
+      Stratosphere.Connect.Rule.SendNotificationActionProperty
+      Stratosphere.Connect.Rule.SubmitAutoEvaluationActionProperty
+      Stratosphere.Connect.Rule.TaskActionProperty
+      Stratosphere.Connect.Rule.UpdateCaseActionProperty
+      Stratosphere.Connect.SecurityKey
+      Stratosphere.Connect.SecurityProfile
+      Stratosphere.Connect.SecurityProfile.ApplicationProperty
+      Stratosphere.Connect.TaskTemplate
+      Stratosphere.Connect.TaskTemplate.ConstraintsProperty
+      Stratosphere.Connect.TaskTemplate.DefaultFieldValueProperty
+      Stratosphere.Connect.TaskTemplate.FieldIdentifierProperty
+      Stratosphere.Connect.TaskTemplate.FieldProperty
+      Stratosphere.Connect.TaskTemplate.InvisibleFieldInfoProperty
+      Stratosphere.Connect.TaskTemplate.ReadOnlyFieldInfoProperty
+      Stratosphere.Connect.TaskTemplate.RequiredFieldInfoProperty
+      Stratosphere.Connect.TrafficDistributionGroup
+      Stratosphere.Connect.User
+      Stratosphere.Connect.User.UserIdentityInfoProperty
+      Stratosphere.Connect.User.UserPhoneConfigProperty
+      Stratosphere.Connect.User.UserProficiencyProperty
+      Stratosphere.Connect.UserHierarchyGroup
+      Stratosphere.Connect.UserHierarchyStructure
+      Stratosphere.Connect.UserHierarchyStructure.LevelFiveProperty
+      Stratosphere.Connect.UserHierarchyStructure.LevelFourProperty
+      Stratosphere.Connect.UserHierarchyStructure.LevelOneProperty
+      Stratosphere.Connect.UserHierarchyStructure.LevelThreeProperty
+      Stratosphere.Connect.UserHierarchyStructure.LevelTwoProperty
+      Stratosphere.Connect.UserHierarchyStructure.UserHierarchyStructureProperty
+      Stratosphere.Connect.View
+      Stratosphere.Connect.ViewVersion
+  other-modules:
+      Paths_stratosphere_connect
+  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
