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/Events/ApiDestination.hs b/gen/Stratosphere/Events/ApiDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/ApiDestination.hs
@@ -0,0 +1,87 @@
+module Stratosphere.Events.ApiDestination (
+        ApiDestination(..), mkApiDestination
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApiDestination
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html>
+    ApiDestination {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-connectionarn>
+                    connectionArn :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-description>
+                    description :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-httpmethod>
+                    httpMethod :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-invocationendpoint>
+                    invocationEndpoint :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-invocationratelimitpersecond>
+                    invocationRateLimitPerSecond :: (Prelude.Maybe (Value Prelude.Integer)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-apidestination.html#cfn-events-apidestination-name>
+                    name :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApiDestination ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> ApiDestination
+mkApiDestination connectionArn httpMethod invocationEndpoint
+  = ApiDestination
+      {haddock_workaround_ = (), connectionArn = connectionArn,
+       httpMethod = httpMethod, invocationEndpoint = invocationEndpoint,
+       description = Prelude.Nothing,
+       invocationRateLimitPerSecond = Prelude.Nothing,
+       name = Prelude.Nothing}
+instance ToResourceProperties ApiDestination where
+  toResourceProperties ApiDestination {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::ApiDestination",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ConnectionArn" JSON..= connectionArn,
+                            "HttpMethod" JSON..= httpMethod,
+                            "InvocationEndpoint" JSON..= invocationEndpoint]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "InvocationRateLimitPerSecond"
+                                 Prelude.<$> invocationRateLimitPerSecond,
+                               (JSON..=) "Name" Prelude.<$> name]))}
+instance JSON.ToJSON ApiDestination where
+  toJSON ApiDestination {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ConnectionArn" JSON..= connectionArn,
+               "HttpMethod" JSON..= httpMethod,
+               "InvocationEndpoint" JSON..= invocationEndpoint]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "InvocationRateLimitPerSecond"
+                    Prelude.<$> invocationRateLimitPerSecond,
+                  (JSON..=) "Name" Prelude.<$> name])))
+instance Property "ConnectionArn" ApiDestination where
+  type PropertyType "ConnectionArn" ApiDestination = Value Prelude.Text
+  set newValue ApiDestination {..}
+    = ApiDestination {connectionArn = newValue, ..}
+instance Property "Description" ApiDestination where
+  type PropertyType "Description" ApiDestination = Value Prelude.Text
+  set newValue ApiDestination {..}
+    = ApiDestination {description = Prelude.pure newValue, ..}
+instance Property "HttpMethod" ApiDestination where
+  type PropertyType "HttpMethod" ApiDestination = Value Prelude.Text
+  set newValue ApiDestination {..}
+    = ApiDestination {httpMethod = newValue, ..}
+instance Property "InvocationEndpoint" ApiDestination where
+  type PropertyType "InvocationEndpoint" ApiDestination = Value Prelude.Text
+  set newValue ApiDestination {..}
+    = ApiDestination {invocationEndpoint = newValue, ..}
+instance Property "InvocationRateLimitPerSecond" ApiDestination where
+  type PropertyType "InvocationRateLimitPerSecond" ApiDestination = Value Prelude.Integer
+  set newValue ApiDestination {..}
+    = ApiDestination
+        {invocationRateLimitPerSecond = Prelude.pure newValue, ..}
+instance Property "Name" ApiDestination where
+  type PropertyType "Name" ApiDestination = Value Prelude.Text
+  set newValue ApiDestination {..}
+    = ApiDestination {name = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Archive.hs b/gen/Stratosphere/Events/Archive.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Archive.hs
@@ -0,0 +1,79 @@
+module Stratosphere.Events.Archive (
+        Archive(..), mkArchive
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Archive
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html>
+    Archive {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-archivename>
+             archiveName :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-description>
+             description :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-eventpattern>
+             eventPattern :: (Prelude.Maybe JSON.Object),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-kmskeyidentifier>
+             kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-retentiondays>
+             retentionDays :: (Prelude.Maybe (Value Prelude.Integer)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-archive.html#cfn-events-archive-sourcearn>
+             sourceArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkArchive :: Value Prelude.Text -> Archive
+mkArchive sourceArn
+  = Archive
+      {haddock_workaround_ = (), sourceArn = sourceArn,
+       archiveName = Prelude.Nothing, description = Prelude.Nothing,
+       eventPattern = Prelude.Nothing, kmsKeyIdentifier = Prelude.Nothing,
+       retentionDays = Prelude.Nothing}
+instance ToResourceProperties Archive where
+  toResourceProperties Archive {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Archive", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceArn" JSON..= sourceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ArchiveName" Prelude.<$> archiveName,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EventPattern" Prelude.<$> eventPattern,
+                               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                               (JSON..=) "RetentionDays" Prelude.<$> retentionDays]))}
+instance JSON.ToJSON Archive where
+  toJSON Archive {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceArn" JSON..= sourceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "ArchiveName" Prelude.<$> archiveName,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EventPattern" Prelude.<$> eventPattern,
+                  (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                  (JSON..=) "RetentionDays" Prelude.<$> retentionDays])))
+instance Property "ArchiveName" Archive where
+  type PropertyType "ArchiveName" Archive = Value Prelude.Text
+  set newValue Archive {..}
+    = Archive {archiveName = Prelude.pure newValue, ..}
+instance Property "Description" Archive where
+  type PropertyType "Description" Archive = Value Prelude.Text
+  set newValue Archive {..}
+    = Archive {description = Prelude.pure newValue, ..}
+instance Property "EventPattern" Archive where
+  type PropertyType "EventPattern" Archive = JSON.Object
+  set newValue Archive {..}
+    = Archive {eventPattern = Prelude.pure newValue, ..}
+instance Property "KmsKeyIdentifier" Archive where
+  type PropertyType "KmsKeyIdentifier" Archive = Value Prelude.Text
+  set newValue Archive {..}
+    = Archive {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "RetentionDays" Archive where
+  type PropertyType "RetentionDays" Archive = Value Prelude.Integer
+  set newValue Archive {..}
+    = Archive {retentionDays = Prelude.pure newValue, ..}
+instance Property "SourceArn" Archive where
+  type PropertyType "SourceArn" Archive = Value Prelude.Text
+  set newValue Archive {..} = Archive {sourceArn = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection.hs b/gen/Stratosphere/Events/Connection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection.hs
@@ -0,0 +1,83 @@
+module Stratosphere.Events.Connection (
+        module Exports, Connection(..), mkConnection
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.AuthParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.InvocationConnectivityParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Connection
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html>
+    Connection {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-authparameters>
+                authParameters :: (Prelude.Maybe AuthParametersProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-authorizationtype>
+                authorizationType :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-invocationconnectivityparameters>
+                invocationConnectivityParameters :: (Prelude.Maybe InvocationConnectivityParametersProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-kmskeyidentifier>
+                kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-connection.html#cfn-events-connection-name>
+                name :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnection :: Connection
+mkConnection
+  = Connection
+      {haddock_workaround_ = (), authParameters = Prelude.Nothing,
+       authorizationType = Prelude.Nothing, description = Prelude.Nothing,
+       invocationConnectivityParameters = Prelude.Nothing,
+       kmsKeyIdentifier = Prelude.Nothing, name = Prelude.Nothing}
+instance ToResourceProperties Connection where
+  toResourceProperties Connection {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthParameters" Prelude.<$> authParameters,
+                            (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+                            (JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "InvocationConnectivityParameters"
+                              Prelude.<$> invocationConnectivityParameters,
+                            (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                            (JSON..=) "Name" Prelude.<$> name])}
+instance JSON.ToJSON Connection where
+  toJSON Connection {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthParameters" Prelude.<$> authParameters,
+               (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+               (JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "InvocationConnectivityParameters"
+                 Prelude.<$> invocationConnectivityParameters,
+               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+               (JSON..=) "Name" Prelude.<$> name]))
+instance Property "AuthParameters" Connection where
+  type PropertyType "AuthParameters" Connection = AuthParametersProperty
+  set newValue Connection {..}
+    = Connection {authParameters = Prelude.pure newValue, ..}
+instance Property "AuthorizationType" Connection where
+  type PropertyType "AuthorizationType" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {authorizationType = Prelude.pure newValue, ..}
+instance Property "Description" Connection where
+  type PropertyType "Description" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {description = Prelude.pure newValue, ..}
+instance Property "InvocationConnectivityParameters" Connection where
+  type PropertyType "InvocationConnectivityParameters" Connection = InvocationConnectivityParametersProperty
+  set newValue Connection {..}
+    = Connection
+        {invocationConnectivityParameters = Prelude.pure newValue, ..}
+instance Property "KmsKeyIdentifier" Connection where
+  type PropertyType "KmsKeyIdentifier" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "Name" Connection where
+  type PropertyType "Name" Connection = Value Prelude.Text
+  set newValue Connection {..}
+    = Connection {name = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs b/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.Events.Connection.ApiKeyAuthParametersProperty (
+        ApiKeyAuthParametersProperty(..), mkApiKeyAuthParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApiKeyAuthParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-apikeyauthparameters.html>
+    ApiKeyAuthParametersProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-apikeyauthparameters.html#cfn-events-connection-apikeyauthparameters-apikeyname>
+                                  apiKeyName :: (Value Prelude.Text),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-apikeyauthparameters.html#cfn-events-connection-apikeyauthparameters-apikeyvalue>
+                                  apiKeyValue :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApiKeyAuthParametersProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ApiKeyAuthParametersProperty
+mkApiKeyAuthParametersProperty apiKeyName apiKeyValue
+  = ApiKeyAuthParametersProperty
+      {haddock_workaround_ = (), apiKeyName = apiKeyName,
+       apiKeyValue = apiKeyValue}
+instance ToResourceProperties ApiKeyAuthParametersProperty where
+  toResourceProperties ApiKeyAuthParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.ApiKeyAuthParameters",
+         supportsTags = Prelude.False,
+         properties = ["ApiKeyName" JSON..= apiKeyName,
+                       "ApiKeyValue" JSON..= apiKeyValue]}
+instance JSON.ToJSON ApiKeyAuthParametersProperty where
+  toJSON ApiKeyAuthParametersProperty {..}
+    = JSON.object
+        ["ApiKeyName" JSON..= apiKeyName,
+         "ApiKeyValue" JSON..= apiKeyValue]
+instance Property "ApiKeyName" ApiKeyAuthParametersProperty where
+  type PropertyType "ApiKeyName" ApiKeyAuthParametersProperty = Value Prelude.Text
+  set newValue ApiKeyAuthParametersProperty {..}
+    = ApiKeyAuthParametersProperty {apiKeyName = newValue, ..}
+instance Property "ApiKeyValue" ApiKeyAuthParametersProperty where
+  type PropertyType "ApiKeyValue" ApiKeyAuthParametersProperty = Value Prelude.Text
+  set newValue ApiKeyAuthParametersProperty {..}
+    = ApiKeyAuthParametersProperty {apiKeyValue = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ApiKeyAuthParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ApiKeyAuthParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ApiKeyAuthParametersProperty :: Prelude.Type
+instance ToResourceProperties ApiKeyAuthParametersProperty
+instance Prelude.Eq ApiKeyAuthParametersProperty
+instance Prelude.Show ApiKeyAuthParametersProperty
+instance JSON.ToJSON ApiKeyAuthParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs b/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs
@@ -0,0 +1,86 @@
+module Stratosphere.Events.Connection.AuthParametersProperty (
+        module Exports, AuthParametersProperty(..),
+        mkAuthParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.ApiKeyAuthParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.BasicAuthParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.ConnectionHttpParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.ConnectivityParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.OAuthParametersProperty as Exports
+import Stratosphere.ResourceProperties
+data AuthParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html>
+    AuthParametersProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html#cfn-events-connection-authparameters-apikeyauthparameters>
+                            apiKeyAuthParameters :: (Prelude.Maybe ApiKeyAuthParametersProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html#cfn-events-connection-authparameters-basicauthparameters>
+                            basicAuthParameters :: (Prelude.Maybe BasicAuthParametersProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html#cfn-events-connection-authparameters-connectivityparameters>
+                            connectivityParameters :: (Prelude.Maybe ConnectivityParametersProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html#cfn-events-connection-authparameters-invocationhttpparameters>
+                            invocationHttpParameters :: (Prelude.Maybe ConnectionHttpParametersProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-authparameters.html#cfn-events-connection-authparameters-oauthparameters>
+                            oAuthParameters :: (Prelude.Maybe OAuthParametersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthParametersProperty :: AuthParametersProperty
+mkAuthParametersProperty
+  = AuthParametersProperty
+      {haddock_workaround_ = (), apiKeyAuthParameters = Prelude.Nothing,
+       basicAuthParameters = Prelude.Nothing,
+       connectivityParameters = Prelude.Nothing,
+       invocationHttpParameters = Prelude.Nothing,
+       oAuthParameters = Prelude.Nothing}
+instance ToResourceProperties AuthParametersProperty where
+  toResourceProperties AuthParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.AuthParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ApiKeyAuthParameters" Prelude.<$> apiKeyAuthParameters,
+                            (JSON..=) "BasicAuthParameters" Prelude.<$> basicAuthParameters,
+                            (JSON..=) "ConnectivityParameters"
+                              Prelude.<$> connectivityParameters,
+                            (JSON..=) "InvocationHttpParameters"
+                              Prelude.<$> invocationHttpParameters,
+                            (JSON..=) "OAuthParameters" Prelude.<$> oAuthParameters])}
+instance JSON.ToJSON AuthParametersProperty where
+  toJSON AuthParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ApiKeyAuthParameters" Prelude.<$> apiKeyAuthParameters,
+               (JSON..=) "BasicAuthParameters" Prelude.<$> basicAuthParameters,
+               (JSON..=) "ConnectivityParameters"
+                 Prelude.<$> connectivityParameters,
+               (JSON..=) "InvocationHttpParameters"
+                 Prelude.<$> invocationHttpParameters,
+               (JSON..=) "OAuthParameters" Prelude.<$> oAuthParameters]))
+instance Property "ApiKeyAuthParameters" AuthParametersProperty where
+  type PropertyType "ApiKeyAuthParameters" AuthParametersProperty = ApiKeyAuthParametersProperty
+  set newValue AuthParametersProperty {..}
+    = AuthParametersProperty
+        {apiKeyAuthParameters = Prelude.pure newValue, ..}
+instance Property "BasicAuthParameters" AuthParametersProperty where
+  type PropertyType "BasicAuthParameters" AuthParametersProperty = BasicAuthParametersProperty
+  set newValue AuthParametersProperty {..}
+    = AuthParametersProperty
+        {basicAuthParameters = Prelude.pure newValue, ..}
+instance Property "ConnectivityParameters" AuthParametersProperty where
+  type PropertyType "ConnectivityParameters" AuthParametersProperty = ConnectivityParametersProperty
+  set newValue AuthParametersProperty {..}
+    = AuthParametersProperty
+        {connectivityParameters = Prelude.pure newValue, ..}
+instance Property "InvocationHttpParameters" AuthParametersProperty where
+  type PropertyType "InvocationHttpParameters" AuthParametersProperty = ConnectionHttpParametersProperty
+  set newValue AuthParametersProperty {..}
+    = AuthParametersProperty
+        {invocationHttpParameters = Prelude.pure newValue, ..}
+instance Property "OAuthParameters" AuthParametersProperty where
+  type PropertyType "OAuthParameters" AuthParametersProperty = OAuthParametersProperty
+  set newValue AuthParametersProperty {..}
+    = AuthParametersProperty
+        {oAuthParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/AuthParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.AuthParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AuthParametersProperty :: Prelude.Type
+instance ToResourceProperties AuthParametersProperty
+instance Prelude.Eq AuthParametersProperty
+instance Prelude.Show AuthParametersProperty
+instance JSON.ToJSON AuthParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs b/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.Events.Connection.BasicAuthParametersProperty (
+        BasicAuthParametersProperty(..), mkBasicAuthParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BasicAuthParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-basicauthparameters.html>
+    BasicAuthParametersProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-basicauthparameters.html#cfn-events-connection-basicauthparameters-password>
+                                 password :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-basicauthparameters.html#cfn-events-connection-basicauthparameters-username>
+                                 username :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBasicAuthParametersProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> BasicAuthParametersProperty
+mkBasicAuthParametersProperty password username
+  = BasicAuthParametersProperty
+      {haddock_workaround_ = (), password = password,
+       username = username}
+instance ToResourceProperties BasicAuthParametersProperty where
+  toResourceProperties BasicAuthParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.BasicAuthParameters",
+         supportsTags = Prelude.False,
+         properties = ["Password" JSON..= password,
+                       "Username" JSON..= username]}
+instance JSON.ToJSON BasicAuthParametersProperty where
+  toJSON BasicAuthParametersProperty {..}
+    = JSON.object
+        ["Password" JSON..= password, "Username" JSON..= username]
+instance Property "Password" BasicAuthParametersProperty where
+  type PropertyType "Password" BasicAuthParametersProperty = Value Prelude.Text
+  set newValue BasicAuthParametersProperty {..}
+    = BasicAuthParametersProperty {password = newValue, ..}
+instance Property "Username" BasicAuthParametersProperty where
+  type PropertyType "Username" BasicAuthParametersProperty = Value Prelude.Text
+  set newValue BasicAuthParametersProperty {..}
+    = BasicAuthParametersProperty {username = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/BasicAuthParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.BasicAuthParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BasicAuthParametersProperty :: Prelude.Type
+instance ToResourceProperties BasicAuthParametersProperty
+instance Prelude.Eq BasicAuthParametersProperty
+instance Prelude.Show BasicAuthParametersProperty
+instance JSON.ToJSON BasicAuthParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs b/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.Events.Connection.ClientParametersProperty (
+        ClientParametersProperty(..), mkClientParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ClientParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-clientparameters.html>
+    ClientParametersProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-clientparameters.html#cfn-events-connection-clientparameters-clientid>
+                              clientID :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-clientparameters.html#cfn-events-connection-clientparameters-clientsecret>
+                              clientSecret :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkClientParametersProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> ClientParametersProperty
+mkClientParametersProperty clientID clientSecret
+  = ClientParametersProperty
+      {haddock_workaround_ = (), clientID = clientID,
+       clientSecret = clientSecret}
+instance ToResourceProperties ClientParametersProperty where
+  toResourceProperties ClientParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.ClientParameters",
+         supportsTags = Prelude.False,
+         properties = ["ClientID" JSON..= clientID,
+                       "ClientSecret" JSON..= clientSecret]}
+instance JSON.ToJSON ClientParametersProperty where
+  toJSON ClientParametersProperty {..}
+    = JSON.object
+        ["ClientID" JSON..= clientID, "ClientSecret" JSON..= clientSecret]
+instance Property "ClientID" ClientParametersProperty where
+  type PropertyType "ClientID" ClientParametersProperty = Value Prelude.Text
+  set newValue ClientParametersProperty {..}
+    = ClientParametersProperty {clientID = newValue, ..}
+instance Property "ClientSecret" ClientParametersProperty where
+  type PropertyType "ClientSecret" ClientParametersProperty = Value Prelude.Text
+  set newValue ClientParametersProperty {..}
+    = ClientParametersProperty {clientSecret = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ClientParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ClientParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ClientParametersProperty :: Prelude.Type
+instance ToResourceProperties ClientParametersProperty
+instance Prelude.Eq ClientParametersProperty
+instance Prelude.Show ClientParametersProperty
+instance JSON.ToJSON ClientParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs b/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.Events.Connection.ConnectionHttpParametersProperty (
+        module Exports, ConnectionHttpParametersProperty(..),
+        mkConnectionHttpParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.ParameterProperty as Exports
+import Stratosphere.ResourceProperties
+data ConnectionHttpParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectionhttpparameters.html>
+    ConnectionHttpParametersProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectionhttpparameters.html#cfn-events-connection-connectionhttpparameters-bodyparameters>
+                                      bodyParameters :: (Prelude.Maybe [ParameterProperty]),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectionhttpparameters.html#cfn-events-connection-connectionhttpparameters-headerparameters>
+                                      headerParameters :: (Prelude.Maybe [ParameterProperty]),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectionhttpparameters.html#cfn-events-connection-connectionhttpparameters-querystringparameters>
+                                      queryStringParameters :: (Prelude.Maybe [ParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnectionHttpParametersProperty ::
+  ConnectionHttpParametersProperty
+mkConnectionHttpParametersProperty
+  = ConnectionHttpParametersProperty
+      {haddock_workaround_ = (), bodyParameters = Prelude.Nothing,
+       headerParameters = Prelude.Nothing,
+       queryStringParameters = Prelude.Nothing}
+instance ToResourceProperties ConnectionHttpParametersProperty where
+  toResourceProperties ConnectionHttpParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.ConnectionHttpParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BodyParameters" Prelude.<$> bodyParameters,
+                            (JSON..=) "HeaderParameters" Prelude.<$> headerParameters,
+                            (JSON..=) "QueryStringParameters"
+                              Prelude.<$> queryStringParameters])}
+instance JSON.ToJSON ConnectionHttpParametersProperty where
+  toJSON ConnectionHttpParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BodyParameters" Prelude.<$> bodyParameters,
+               (JSON..=) "HeaderParameters" Prelude.<$> headerParameters,
+               (JSON..=) "QueryStringParameters"
+                 Prelude.<$> queryStringParameters]))
+instance Property "BodyParameters" ConnectionHttpParametersProperty where
+  type PropertyType "BodyParameters" ConnectionHttpParametersProperty = [ParameterProperty]
+  set newValue ConnectionHttpParametersProperty {..}
+    = ConnectionHttpParametersProperty
+        {bodyParameters = Prelude.pure newValue, ..}
+instance Property "HeaderParameters" ConnectionHttpParametersProperty where
+  type PropertyType "HeaderParameters" ConnectionHttpParametersProperty = [ParameterProperty]
+  set newValue ConnectionHttpParametersProperty {..}
+    = ConnectionHttpParametersProperty
+        {headerParameters = Prelude.pure newValue, ..}
+instance Property "QueryStringParameters" ConnectionHttpParametersProperty where
+  type PropertyType "QueryStringParameters" ConnectionHttpParametersProperty = [ParameterProperty]
+  set newValue ConnectionHttpParametersProperty {..}
+    = ConnectionHttpParametersProperty
+        {queryStringParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ConnectionHttpParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ConnectionHttpParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConnectionHttpParametersProperty :: Prelude.Type
+instance ToResourceProperties ConnectionHttpParametersProperty
+instance Prelude.Eq ConnectionHttpParametersProperty
+instance Prelude.Show ConnectionHttpParametersProperty
+instance JSON.ToJSON ConnectionHttpParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs b/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Events.Connection.ConnectivityParametersProperty (
+        module Exports, ConnectivityParametersProperty(..),
+        mkConnectivityParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.ResourceParametersProperty as Exports
+import Stratosphere.ResourceProperties
+data ConnectivityParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectivityparameters.html>
+    ConnectivityParametersProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-connectivityparameters.html#cfn-events-connection-connectivityparameters-resourceparameters>
+                                    resourceParameters :: ResourceParametersProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConnectivityParametersProperty ::
+  ResourceParametersProperty -> ConnectivityParametersProperty
+mkConnectivityParametersProperty resourceParameters
+  = ConnectivityParametersProperty
+      {haddock_workaround_ = (), resourceParameters = resourceParameters}
+instance ToResourceProperties ConnectivityParametersProperty where
+  toResourceProperties ConnectivityParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.ConnectivityParameters",
+         supportsTags = Prelude.False,
+         properties = ["ResourceParameters" JSON..= resourceParameters]}
+instance JSON.ToJSON ConnectivityParametersProperty where
+  toJSON ConnectivityParametersProperty {..}
+    = JSON.object ["ResourceParameters" JSON..= resourceParameters]
+instance Property "ResourceParameters" ConnectivityParametersProperty where
+  type PropertyType "ResourceParameters" ConnectivityParametersProperty = ResourceParametersProperty
+  set newValue ConnectivityParametersProperty {..}
+    = ConnectivityParametersProperty
+        {resourceParameters = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ConnectivityParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ConnectivityParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConnectivityParametersProperty :: Prelude.Type
+instance ToResourceProperties ConnectivityParametersProperty
+instance Prelude.Eq ConnectivityParametersProperty
+instance Prelude.Show ConnectivityParametersProperty
+instance JSON.ToJSON ConnectivityParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs b/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.Events.Connection.InvocationConnectivityParametersProperty (
+        module Exports, InvocationConnectivityParametersProperty(..),
+        mkInvocationConnectivityParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.ResourceParametersProperty as Exports
+import Stratosphere.ResourceProperties
+data InvocationConnectivityParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-invocationconnectivityparameters.html>
+    InvocationConnectivityParametersProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-invocationconnectivityparameters.html#cfn-events-connection-invocationconnectivityparameters-resourceparameters>
+                                              resourceParameters :: ResourceParametersProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInvocationConnectivityParametersProperty ::
+  ResourceParametersProperty
+  -> InvocationConnectivityParametersProperty
+mkInvocationConnectivityParametersProperty resourceParameters
+  = InvocationConnectivityParametersProperty
+      {haddock_workaround_ = (), resourceParameters = resourceParameters}
+instance ToResourceProperties InvocationConnectivityParametersProperty where
+  toResourceProperties InvocationConnectivityParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.InvocationConnectivityParameters",
+         supportsTags = Prelude.False,
+         properties = ["ResourceParameters" JSON..= resourceParameters]}
+instance JSON.ToJSON InvocationConnectivityParametersProperty where
+  toJSON InvocationConnectivityParametersProperty {..}
+    = JSON.object ["ResourceParameters" JSON..= resourceParameters]
+instance Property "ResourceParameters" InvocationConnectivityParametersProperty where
+  type PropertyType "ResourceParameters" InvocationConnectivityParametersProperty = ResourceParametersProperty
+  set newValue InvocationConnectivityParametersProperty {..}
+    = InvocationConnectivityParametersProperty
+        {resourceParameters = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/InvocationConnectivityParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.InvocationConnectivityParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InvocationConnectivityParametersProperty :: Prelude.Type
+instance ToResourceProperties InvocationConnectivityParametersProperty
+instance Prelude.Eq InvocationConnectivityParametersProperty
+instance Prelude.Show InvocationConnectivityParametersProperty
+instance JSON.ToJSON InvocationConnectivityParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs b/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs
@@ -0,0 +1,77 @@
+module Stratosphere.Events.Connection.OAuthParametersProperty (
+        module Exports, OAuthParametersProperty(..),
+        mkOAuthParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Connection.ClientParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Connection.ConnectionHttpParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OAuthParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-oauthparameters.html>
+    OAuthParametersProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-oauthparameters.html#cfn-events-connection-oauthparameters-authorizationendpoint>
+                             authorizationEndpoint :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-oauthparameters.html#cfn-events-connection-oauthparameters-clientparameters>
+                             clientParameters :: ClientParametersProperty,
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-oauthparameters.html#cfn-events-connection-oauthparameters-httpmethod>
+                             httpMethod :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-oauthparameters.html#cfn-events-connection-oauthparameters-oauthhttpparameters>
+                             oAuthHttpParameters :: (Prelude.Maybe ConnectionHttpParametersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOAuthParametersProperty ::
+  Value Prelude.Text
+  -> ClientParametersProperty
+     -> Value Prelude.Text -> OAuthParametersProperty
+mkOAuthParametersProperty
+  authorizationEndpoint
+  clientParameters
+  httpMethod
+  = OAuthParametersProperty
+      {haddock_workaround_ = (),
+       authorizationEndpoint = authorizationEndpoint,
+       clientParameters = clientParameters, httpMethod = httpMethod,
+       oAuthHttpParameters = Prelude.Nothing}
+instance ToResourceProperties OAuthParametersProperty where
+  toResourceProperties OAuthParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.OAuthParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AuthorizationEndpoint" JSON..= authorizationEndpoint,
+                            "ClientParameters" JSON..= clientParameters,
+                            "HttpMethod" JSON..= httpMethod]
+                           (Prelude.catMaybes
+                              [(JSON..=) "OAuthHttpParameters"
+                                 Prelude.<$> oAuthHttpParameters]))}
+instance JSON.ToJSON OAuthParametersProperty where
+  toJSON OAuthParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AuthorizationEndpoint" JSON..= authorizationEndpoint,
+               "ClientParameters" JSON..= clientParameters,
+               "HttpMethod" JSON..= httpMethod]
+              (Prelude.catMaybes
+                 [(JSON..=) "OAuthHttpParameters"
+                    Prelude.<$> oAuthHttpParameters])))
+instance Property "AuthorizationEndpoint" OAuthParametersProperty where
+  type PropertyType "AuthorizationEndpoint" OAuthParametersProperty = Value Prelude.Text
+  set newValue OAuthParametersProperty {..}
+    = OAuthParametersProperty {authorizationEndpoint = newValue, ..}
+instance Property "ClientParameters" OAuthParametersProperty where
+  type PropertyType "ClientParameters" OAuthParametersProperty = ClientParametersProperty
+  set newValue OAuthParametersProperty {..}
+    = OAuthParametersProperty {clientParameters = newValue, ..}
+instance Property "HttpMethod" OAuthParametersProperty where
+  type PropertyType "HttpMethod" OAuthParametersProperty = Value Prelude.Text
+  set newValue OAuthParametersProperty {..}
+    = OAuthParametersProperty {httpMethod = newValue, ..}
+instance Property "OAuthHttpParameters" OAuthParametersProperty where
+  type PropertyType "OAuthHttpParameters" OAuthParametersProperty = ConnectionHttpParametersProperty
+  set newValue OAuthParametersProperty {..}
+    = OAuthParametersProperty
+        {oAuthHttpParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/OAuthParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.OAuthParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OAuthParametersProperty :: Prelude.Type
+instance ToResourceProperties OAuthParametersProperty
+instance Prelude.Eq OAuthParametersProperty
+instance Prelude.Show OAuthParametersProperty
+instance JSON.ToJSON OAuthParametersProperty
diff --git a/gen/Stratosphere/Events/Connection/ParameterProperty.hs b/gen/Stratosphere/Events/Connection/ParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ParameterProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.Events.Connection.ParameterProperty (
+        ParameterProperty(..), mkParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-parameter.html>
+    ParameterProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-parameter.html#cfn-events-connection-parameter-isvaluesecret>
+                       isValueSecret :: (Prelude.Maybe (Value Prelude.Bool)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-parameter.html#cfn-events-connection-parameter-key>
+                       key :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-parameter.html#cfn-events-connection-parameter-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ParameterProperty
+mkParameterProperty key value
+  = ParameterProperty
+      {haddock_workaround_ = (), key = key, value = value,
+       isValueSecret = Prelude.Nothing}
+instance ToResourceProperties ParameterProperty where
+  toResourceProperties ParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.Parameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Key" JSON..= key, "Value" JSON..= value]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IsValueSecret" Prelude.<$> isValueSecret]))}
+instance JSON.ToJSON ParameterProperty where
+  toJSON ParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Key" JSON..= key, "Value" JSON..= value]
+              (Prelude.catMaybes
+                 [(JSON..=) "IsValueSecret" Prelude.<$> isValueSecret])))
+instance Property "IsValueSecret" ParameterProperty where
+  type PropertyType "IsValueSecret" ParameterProperty = Value Prelude.Bool
+  set newValue ParameterProperty {..}
+    = ParameterProperty {isValueSecret = Prelude.pure newValue, ..}
+instance Property "Key" ParameterProperty where
+  type PropertyType "Key" ParameterProperty = Value Prelude.Text
+  set newValue ParameterProperty {..}
+    = ParameterProperty {key = newValue, ..}
+instance Property "Value" ParameterProperty where
+  type PropertyType "Value" ParameterProperty = Value Prelude.Text
+  set newValue ParameterProperty {..}
+    = ParameterProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ParameterProperty.hs-boot b/gen/Stratosphere/Events/Connection/ParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterProperty :: Prelude.Type
+instance ToResourceProperties ParameterProperty
+instance Prelude.Eq ParameterProperty
+instance Prelude.Show ParameterProperty
+instance JSON.ToJSON ParameterProperty
diff --git a/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs b/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.Events.Connection.ResourceParametersProperty (
+        ResourceParametersProperty(..), mkResourceParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ResourceParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-resourceparameters.html>
+    ResourceParametersProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-resourceparameters.html#cfn-events-connection-resourceparameters-resourceassociationarn>
+                                resourceAssociationArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-connection-resourceparameters.html#cfn-events-connection-resourceparameters-resourceconfigurationarn>
+                                resourceConfigurationArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkResourceParametersProperty ::
+  Value Prelude.Text -> ResourceParametersProperty
+mkResourceParametersProperty resourceConfigurationArn
+  = ResourceParametersProperty
+      {haddock_workaround_ = (),
+       resourceConfigurationArn = resourceConfigurationArn,
+       resourceAssociationArn = Prelude.Nothing}
+instance ToResourceProperties ResourceParametersProperty where
+  toResourceProperties ResourceParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Connection.ResourceParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ResourceConfigurationArn" JSON..= resourceConfigurationArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceAssociationArn"
+                                 Prelude.<$> resourceAssociationArn]))}
+instance JSON.ToJSON ResourceParametersProperty where
+  toJSON ResourceParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ResourceConfigurationArn" JSON..= resourceConfigurationArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceAssociationArn"
+                    Prelude.<$> resourceAssociationArn])))
+instance Property "ResourceAssociationArn" ResourceParametersProperty where
+  type PropertyType "ResourceAssociationArn" ResourceParametersProperty = Value Prelude.Text
+  set newValue ResourceParametersProperty {..}
+    = ResourceParametersProperty
+        {resourceAssociationArn = Prelude.pure newValue, ..}
+instance Property "ResourceConfigurationArn" ResourceParametersProperty where
+  type PropertyType "ResourceConfigurationArn" ResourceParametersProperty = Value Prelude.Text
+  set newValue ResourceParametersProperty {..}
+    = ResourceParametersProperty
+        {resourceConfigurationArn = newValue, ..}
diff --git a/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs-boot b/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Connection/ResourceParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Connection.ResourceParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ResourceParametersProperty :: Prelude.Type
+instance ToResourceProperties ResourceParametersProperty
+instance Prelude.Eq ResourceParametersProperty
+instance Prelude.Show ResourceParametersProperty
+instance JSON.ToJSON ResourceParametersProperty
diff --git a/gen/Stratosphere/Events/Endpoint.hs b/gen/Stratosphere/Events/Endpoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint.hs
@@ -0,0 +1,83 @@
+module Stratosphere.Events.Endpoint (
+        module Exports, Endpoint(..), mkEndpoint
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.EndpointEventBusProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.ReplicationConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.RoutingConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Endpoint
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html>
+    Endpoint {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-description>
+              description :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-eventbuses>
+              eventBuses :: [EndpointEventBusProperty],
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-name>
+              name :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-replicationconfig>
+              replicationConfig :: (Prelude.Maybe ReplicationConfigProperty),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-rolearn>
+              roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-endpoint.html#cfn-events-endpoint-routingconfig>
+              routingConfig :: RoutingConfigProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEndpoint ::
+  [EndpointEventBusProperty] -> RoutingConfigProperty -> Endpoint
+mkEndpoint eventBuses routingConfig
+  = Endpoint
+      {haddock_workaround_ = (), eventBuses = eventBuses,
+       routingConfig = routingConfig, description = Prelude.Nothing,
+       name = Prelude.Nothing, replicationConfig = Prelude.Nothing,
+       roleArn = Prelude.Nothing}
+instance ToResourceProperties Endpoint where
+  toResourceProperties Endpoint {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint", supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["EventBuses" JSON..= eventBuses,
+                            "RoutingConfig" JSON..= routingConfig]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "ReplicationConfig" Prelude.<$> replicationConfig,
+                               (JSON..=) "RoleArn" Prelude.<$> roleArn]))}
+instance JSON.ToJSON Endpoint where
+  toJSON Endpoint {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["EventBuses" JSON..= eventBuses,
+               "RoutingConfig" JSON..= routingConfig]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "ReplicationConfig" Prelude.<$> replicationConfig,
+                  (JSON..=) "RoleArn" Prelude.<$> roleArn])))
+instance Property "Description" Endpoint where
+  type PropertyType "Description" Endpoint = Value Prelude.Text
+  set newValue Endpoint {..}
+    = Endpoint {description = Prelude.pure newValue, ..}
+instance Property "EventBuses" Endpoint where
+  type PropertyType "EventBuses" Endpoint = [EndpointEventBusProperty]
+  set newValue Endpoint {..} = Endpoint {eventBuses = newValue, ..}
+instance Property "Name" Endpoint where
+  type PropertyType "Name" Endpoint = Value Prelude.Text
+  set newValue Endpoint {..}
+    = Endpoint {name = Prelude.pure newValue, ..}
+instance Property "ReplicationConfig" Endpoint where
+  type PropertyType "ReplicationConfig" Endpoint = ReplicationConfigProperty
+  set newValue Endpoint {..}
+    = Endpoint {replicationConfig = Prelude.pure newValue, ..}
+instance Property "RoleArn" Endpoint where
+  type PropertyType "RoleArn" Endpoint = Value Prelude.Text
+  set newValue Endpoint {..}
+    = Endpoint {roleArn = Prelude.pure newValue, ..}
+instance Property "RoutingConfig" Endpoint where
+  type PropertyType "RoutingConfig" Endpoint = RoutingConfigProperty
+  set newValue Endpoint {..}
+    = Endpoint {routingConfig = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs b/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Events.Endpoint.EndpointEventBusProperty (
+        EndpointEventBusProperty(..), mkEndpointEventBusProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EndpointEventBusProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-endpointeventbus.html>
+    EndpointEventBusProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-endpointeventbus.html#cfn-events-endpoint-endpointeventbus-eventbusarn>
+                              eventBusArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEndpointEventBusProperty ::
+  Value Prelude.Text -> EndpointEventBusProperty
+mkEndpointEventBusProperty eventBusArn
+  = EndpointEventBusProperty
+      {haddock_workaround_ = (), eventBusArn = eventBusArn}
+instance ToResourceProperties EndpointEventBusProperty where
+  toResourceProperties EndpointEventBusProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.EndpointEventBus",
+         supportsTags = Prelude.False,
+         properties = ["EventBusArn" JSON..= eventBusArn]}
+instance JSON.ToJSON EndpointEventBusProperty where
+  toJSON EndpointEventBusProperty {..}
+    = JSON.object ["EventBusArn" JSON..= eventBusArn]
+instance Property "EventBusArn" EndpointEventBusProperty where
+  type PropertyType "EventBusArn" EndpointEventBusProperty = Value Prelude.Text
+  set newValue EndpointEventBusProperty {..}
+    = EndpointEventBusProperty {eventBusArn = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/EndpointEventBusProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.EndpointEventBusProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EndpointEventBusProperty :: Prelude.Type
+instance ToResourceProperties EndpointEventBusProperty
+instance Prelude.Eq EndpointEventBusProperty
+instance Prelude.Show EndpointEventBusProperty
+instance JSON.ToJSON EndpointEventBusProperty
diff --git a/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs b/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.Events.Endpoint.FailoverConfigProperty (
+        module Exports, FailoverConfigProperty(..),
+        mkFailoverConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.PrimaryProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.SecondaryProperty as Exports
+import Stratosphere.ResourceProperties
+data FailoverConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-failoverconfig.html>
+    FailoverConfigProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-failoverconfig.html#cfn-events-endpoint-failoverconfig-primary>
+                            primary :: PrimaryProperty,
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-failoverconfig.html#cfn-events-endpoint-failoverconfig-secondary>
+                            secondary :: SecondaryProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFailoverConfigProperty ::
+  PrimaryProperty -> SecondaryProperty -> FailoverConfigProperty
+mkFailoverConfigProperty primary secondary
+  = FailoverConfigProperty
+      {haddock_workaround_ = (), primary = primary,
+       secondary = secondary}
+instance ToResourceProperties FailoverConfigProperty where
+  toResourceProperties FailoverConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.FailoverConfig",
+         supportsTags = Prelude.False,
+         properties = ["Primary" JSON..= primary,
+                       "Secondary" JSON..= secondary]}
+instance JSON.ToJSON FailoverConfigProperty where
+  toJSON FailoverConfigProperty {..}
+    = JSON.object
+        ["Primary" JSON..= primary, "Secondary" JSON..= secondary]
+instance Property "Primary" FailoverConfigProperty where
+  type PropertyType "Primary" FailoverConfigProperty = PrimaryProperty
+  set newValue FailoverConfigProperty {..}
+    = FailoverConfigProperty {primary = newValue, ..}
+instance Property "Secondary" FailoverConfigProperty where
+  type PropertyType "Secondary" FailoverConfigProperty = SecondaryProperty
+  set newValue FailoverConfigProperty {..}
+    = FailoverConfigProperty {secondary = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/FailoverConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.FailoverConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FailoverConfigProperty :: Prelude.Type
+instance ToResourceProperties FailoverConfigProperty
+instance Prelude.Eq FailoverConfigProperty
+instance Prelude.Show FailoverConfigProperty
+instance JSON.ToJSON FailoverConfigProperty
diff --git a/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs b/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Events.Endpoint.PrimaryProperty (
+        PrimaryProperty(..), mkPrimaryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PrimaryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-primary.html>
+    PrimaryProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-primary.html#cfn-events-endpoint-primary-healthcheck>
+                     healthCheck :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPrimaryProperty :: Value Prelude.Text -> PrimaryProperty
+mkPrimaryProperty healthCheck
+  = PrimaryProperty
+      {haddock_workaround_ = (), healthCheck = healthCheck}
+instance ToResourceProperties PrimaryProperty where
+  toResourceProperties PrimaryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.Primary",
+         supportsTags = Prelude.False,
+         properties = ["HealthCheck" JSON..= healthCheck]}
+instance JSON.ToJSON PrimaryProperty where
+  toJSON PrimaryProperty {..}
+    = JSON.object ["HealthCheck" JSON..= healthCheck]
+instance Property "HealthCheck" PrimaryProperty where
+  type PropertyType "HealthCheck" PrimaryProperty = Value Prelude.Text
+  set newValue PrimaryProperty {..}
+    = PrimaryProperty {healthCheck = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/PrimaryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.PrimaryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PrimaryProperty :: Prelude.Type
+instance ToResourceProperties PrimaryProperty
+instance Prelude.Eq PrimaryProperty
+instance Prelude.Show PrimaryProperty
+instance JSON.ToJSON PrimaryProperty
diff --git a/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs b/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.Events.Endpoint.ReplicationConfigProperty (
+        ReplicationConfigProperty(..), mkReplicationConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ReplicationConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-replicationconfig.html>
+    ReplicationConfigProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-replicationconfig.html#cfn-events-endpoint-replicationconfig-state>
+                               state :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkReplicationConfigProperty ::
+  Value Prelude.Text -> ReplicationConfigProperty
+mkReplicationConfigProperty state
+  = ReplicationConfigProperty
+      {haddock_workaround_ = (), state = state}
+instance ToResourceProperties ReplicationConfigProperty where
+  toResourceProperties ReplicationConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.ReplicationConfig",
+         supportsTags = Prelude.False, properties = ["State" JSON..= state]}
+instance JSON.ToJSON ReplicationConfigProperty where
+  toJSON ReplicationConfigProperty {..}
+    = JSON.object ["State" JSON..= state]
+instance Property "State" ReplicationConfigProperty where
+  type PropertyType "State" ReplicationConfigProperty = Value Prelude.Text
+  set newValue ReplicationConfigProperty {..}
+    = ReplicationConfigProperty {state = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/ReplicationConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.ReplicationConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ReplicationConfigProperty :: Prelude.Type
+instance ToResourceProperties ReplicationConfigProperty
+instance Prelude.Eq ReplicationConfigProperty
+instance Prelude.Show ReplicationConfigProperty
+instance JSON.ToJSON ReplicationConfigProperty
diff --git a/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs b/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Events.Endpoint.RoutingConfigProperty (
+        module Exports, RoutingConfigProperty(..), mkRoutingConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Endpoint.FailoverConfigProperty as Exports
+import Stratosphere.ResourceProperties
+data RoutingConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-routingconfig.html>
+    RoutingConfigProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-routingconfig.html#cfn-events-endpoint-routingconfig-failoverconfig>
+                           failoverConfig :: FailoverConfigProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingConfigProperty ::
+  FailoverConfigProperty -> RoutingConfigProperty
+mkRoutingConfigProperty failoverConfig
+  = RoutingConfigProperty
+      {haddock_workaround_ = (), failoverConfig = failoverConfig}
+instance ToResourceProperties RoutingConfigProperty where
+  toResourceProperties RoutingConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.RoutingConfig",
+         supportsTags = Prelude.False,
+         properties = ["FailoverConfig" JSON..= failoverConfig]}
+instance JSON.ToJSON RoutingConfigProperty where
+  toJSON RoutingConfigProperty {..}
+    = JSON.object ["FailoverConfig" JSON..= failoverConfig]
+instance Property "FailoverConfig" RoutingConfigProperty where
+  type PropertyType "FailoverConfig" RoutingConfigProperty = FailoverConfigProperty
+  set newValue RoutingConfigProperty {..}
+    = RoutingConfigProperty {failoverConfig = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/RoutingConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.RoutingConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RoutingConfigProperty :: Prelude.Type
+instance ToResourceProperties RoutingConfigProperty
+instance Prelude.Eq RoutingConfigProperty
+instance Prelude.Show RoutingConfigProperty
+instance JSON.ToJSON RoutingConfigProperty
diff --git a/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs b/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs
@@ -0,0 +1,28 @@
+module Stratosphere.Events.Endpoint.SecondaryProperty (
+        SecondaryProperty(..), mkSecondaryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SecondaryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-secondary.html>
+    SecondaryProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-endpoint-secondary.html#cfn-events-endpoint-secondary-route>
+                       route :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSecondaryProperty :: Value Prelude.Text -> SecondaryProperty
+mkSecondaryProperty route
+  = SecondaryProperty {haddock_workaround_ = (), route = route}
+instance ToResourceProperties SecondaryProperty where
+  toResourceProperties SecondaryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Endpoint.Secondary",
+         supportsTags = Prelude.False, properties = ["Route" JSON..= route]}
+instance JSON.ToJSON SecondaryProperty where
+  toJSON SecondaryProperty {..} = JSON.object ["Route" JSON..= route]
+instance Property "Route" SecondaryProperty where
+  type PropertyType "Route" SecondaryProperty = Value Prelude.Text
+  set newValue SecondaryProperty {..}
+    = SecondaryProperty {route = newValue, ..}
diff --git a/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs-boot b/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Endpoint/SecondaryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Endpoint.SecondaryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SecondaryProperty :: Prelude.Type
+instance ToResourceProperties SecondaryProperty
+instance Prelude.Eq SecondaryProperty
+instance Prelude.Show SecondaryProperty
+instance JSON.ToJSON SecondaryProperty
diff --git a/gen/Stratosphere/Events/EventBus.hs b/gen/Stratosphere/Events/EventBus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBus.hs
@@ -0,0 +1,99 @@
+module Stratosphere.Events.EventBus (
+        module Exports, EventBus(..), mkEventBus
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.EventBus.DeadLetterConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.EventBus.LogConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EventBus
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html>
+    EventBus {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-deadletterconfig>
+              deadLetterConfig :: (Prelude.Maybe DeadLetterConfigProperty),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-description>
+              description :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-eventsourcename>
+              eventSourceName :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-kmskeyidentifier>
+              kmsKeyIdentifier :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-logconfig>
+              logConfig :: (Prelude.Maybe LogConfigProperty),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-name>
+              name :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-policy>
+              policy :: (Prelude.Maybe JSON.Object),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbus.html#cfn-events-eventbus-tags>
+              tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventBus :: Value Prelude.Text -> EventBus
+mkEventBus name
+  = EventBus
+      {haddock_workaround_ = (), name = name,
+       deadLetterConfig = Prelude.Nothing, description = Prelude.Nothing,
+       eventSourceName = Prelude.Nothing,
+       kmsKeyIdentifier = Prelude.Nothing, logConfig = Prelude.Nothing,
+       policy = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties EventBus where
+  toResourceProperties EventBus {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::EventBus", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DeadLetterConfig" Prelude.<$> deadLetterConfig,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "EventSourceName" Prelude.<$> eventSourceName,
+                               (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                               (JSON..=) "LogConfig" Prelude.<$> logConfig,
+                               (JSON..=) "Policy" Prelude.<$> policy,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON EventBus where
+  toJSON EventBus {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "DeadLetterConfig" Prelude.<$> deadLetterConfig,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "EventSourceName" Prelude.<$> eventSourceName,
+                  (JSON..=) "KmsKeyIdentifier" Prelude.<$> kmsKeyIdentifier,
+                  (JSON..=) "LogConfig" Prelude.<$> logConfig,
+                  (JSON..=) "Policy" Prelude.<$> policy,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DeadLetterConfig" EventBus where
+  type PropertyType "DeadLetterConfig" EventBus = DeadLetterConfigProperty
+  set newValue EventBus {..}
+    = EventBus {deadLetterConfig = Prelude.pure newValue, ..}
+instance Property "Description" EventBus where
+  type PropertyType "Description" EventBus = Value Prelude.Text
+  set newValue EventBus {..}
+    = EventBus {description = Prelude.pure newValue, ..}
+instance Property "EventSourceName" EventBus where
+  type PropertyType "EventSourceName" EventBus = Value Prelude.Text
+  set newValue EventBus {..}
+    = EventBus {eventSourceName = Prelude.pure newValue, ..}
+instance Property "KmsKeyIdentifier" EventBus where
+  type PropertyType "KmsKeyIdentifier" EventBus = Value Prelude.Text
+  set newValue EventBus {..}
+    = EventBus {kmsKeyIdentifier = Prelude.pure newValue, ..}
+instance Property "LogConfig" EventBus where
+  type PropertyType "LogConfig" EventBus = LogConfigProperty
+  set newValue EventBus {..}
+    = EventBus {logConfig = Prelude.pure newValue, ..}
+instance Property "Name" EventBus where
+  type PropertyType "Name" EventBus = Value Prelude.Text
+  set newValue EventBus {..} = EventBus {name = newValue, ..}
+instance Property "Policy" EventBus where
+  type PropertyType "Policy" EventBus = JSON.Object
+  set newValue EventBus {..}
+    = EventBus {policy = Prelude.pure newValue, ..}
+instance Property "Tags" EventBus where
+  type PropertyType "Tags" EventBus = [Tag]
+  set newValue EventBus {..}
+    = EventBus {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs b/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Events.EventBus.DeadLetterConfigProperty (
+        DeadLetterConfigProperty(..), mkDeadLetterConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeadLetterConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbus-deadletterconfig.html>
+    DeadLetterConfigProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbus-deadletterconfig.html#cfn-events-eventbus-deadletterconfig-arn>
+                              arn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeadLetterConfigProperty :: DeadLetterConfigProperty
+mkDeadLetterConfigProperty
+  = DeadLetterConfigProperty
+      {haddock_workaround_ = (), arn = Prelude.Nothing}
+instance ToResourceProperties DeadLetterConfigProperty where
+  toResourceProperties DeadLetterConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::EventBus.DeadLetterConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn])}
+instance JSON.ToJSON DeadLetterConfigProperty where
+  toJSON DeadLetterConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn]))
+instance Property "Arn" DeadLetterConfigProperty where
+  type PropertyType "Arn" DeadLetterConfigProperty = Value Prelude.Text
+  set newValue DeadLetterConfigProperty {..}
+    = DeadLetterConfigProperty {arn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs-boot b/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBus/DeadLetterConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.EventBus.DeadLetterConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DeadLetterConfigProperty :: Prelude.Type
+instance ToResourceProperties DeadLetterConfigProperty
+instance Prelude.Eq DeadLetterConfigProperty
+instance Prelude.Show DeadLetterConfigProperty
+instance JSON.ToJSON DeadLetterConfigProperty
diff --git a/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs b/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.Events.EventBus.LogConfigProperty (
+        LogConfigProperty(..), mkLogConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LogConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbus-logconfig.html>
+    LogConfigProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbus-logconfig.html#cfn-events-eventbus-logconfig-includedetail>
+                       includeDetail :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbus-logconfig.html#cfn-events-eventbus-logconfig-level>
+                       level :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLogConfigProperty :: LogConfigProperty
+mkLogConfigProperty
+  = LogConfigProperty
+      {haddock_workaround_ = (), includeDetail = Prelude.Nothing,
+       level = Prelude.Nothing}
+instance ToResourceProperties LogConfigProperty where
+  toResourceProperties LogConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::EventBus.LogConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "IncludeDetail" Prelude.<$> includeDetail,
+                            (JSON..=) "Level" Prelude.<$> level])}
+instance JSON.ToJSON LogConfigProperty where
+  toJSON LogConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "IncludeDetail" Prelude.<$> includeDetail,
+               (JSON..=) "Level" Prelude.<$> level]))
+instance Property "IncludeDetail" LogConfigProperty where
+  type PropertyType "IncludeDetail" LogConfigProperty = Value Prelude.Text
+  set newValue LogConfigProperty {..}
+    = LogConfigProperty {includeDetail = Prelude.pure newValue, ..}
+instance Property "Level" LogConfigProperty where
+  type PropertyType "Level" LogConfigProperty = Value Prelude.Text
+  set newValue LogConfigProperty {..}
+    = LogConfigProperty {level = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs-boot b/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBus/LogConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.EventBus.LogConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LogConfigProperty :: Prelude.Type
+instance ToResourceProperties LogConfigProperty
+instance Prelude.Eq LogConfigProperty
+instance Prelude.Show LogConfigProperty
+instance JSON.ToJSON LogConfigProperty
diff --git a/gen/Stratosphere/Events/EventBusPolicy.hs b/gen/Stratosphere/Events/EventBusPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/EventBusPolicy.hs
@@ -0,0 +1,55 @@
+module Stratosphere.Events.EventBusPolicy (
+        EventBusPolicy(..), mkEventBusPolicy
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EventBusPolicy
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html>
+    EventBusPolicy {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-eventbusname>
+                    eventBusName :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statement>
+                    statement :: (Prelude.Maybe JSON.Object),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statementid>
+                    statementId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEventBusPolicy :: Value Prelude.Text -> EventBusPolicy
+mkEventBusPolicy statementId
+  = EventBusPolicy
+      {haddock_workaround_ = (), statementId = statementId,
+       eventBusName = Prelude.Nothing, statement = Prelude.Nothing}
+instance ToResourceProperties EventBusPolicy where
+  toResourceProperties EventBusPolicy {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::EventBusPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["StatementId" JSON..= statementId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "EventBusName" Prelude.<$> eventBusName,
+                               (JSON..=) "Statement" Prelude.<$> statement]))}
+instance JSON.ToJSON EventBusPolicy where
+  toJSON EventBusPolicy {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["StatementId" JSON..= statementId]
+              (Prelude.catMaybes
+                 [(JSON..=) "EventBusName" Prelude.<$> eventBusName,
+                  (JSON..=) "Statement" Prelude.<$> statement])))
+instance Property "EventBusName" EventBusPolicy where
+  type PropertyType "EventBusName" EventBusPolicy = Value Prelude.Text
+  set newValue EventBusPolicy {..}
+    = EventBusPolicy {eventBusName = Prelude.pure newValue, ..}
+instance Property "Statement" EventBusPolicy where
+  type PropertyType "Statement" EventBusPolicy = JSON.Object
+  set newValue EventBusPolicy {..}
+    = EventBusPolicy {statement = Prelude.pure newValue, ..}
+instance Property "StatementId" EventBusPolicy where
+  type PropertyType "StatementId" EventBusPolicy = Value Prelude.Text
+  set newValue EventBusPolicy {..}
+    = EventBusPolicy {statementId = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule.hs b/gen/Stratosphere/Events/Rule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule.hs
@@ -0,0 +1,100 @@
+module Stratosphere.Events.Rule (
+        module Exports, Rule(..), mkRule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.TargetProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Rule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html>
+    Rule {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description>
+          description :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventbusname>
+          eventBusName :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern>
+          eventPattern :: (Prelude.Maybe JSON.Object),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name>
+          name :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn>
+          roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression>
+          scheduleExpression :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state>
+          state :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-tags>
+          tags :: (Prelude.Maybe [Tag]),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets>
+          targets :: (Prelude.Maybe [TargetProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRule :: Rule
+mkRule
+  = Rule
+      {haddock_workaround_ = (), description = Prelude.Nothing,
+       eventBusName = Prelude.Nothing, eventPattern = Prelude.Nothing,
+       name = Prelude.Nothing, roleArn = Prelude.Nothing,
+       scheduleExpression = Prelude.Nothing, state = Prelude.Nothing,
+       tags = Prelude.Nothing, targets = Prelude.Nothing}
+instance ToResourceProperties Rule where
+  toResourceProperties Rule {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "EventBusName" Prelude.<$> eventBusName,
+                            (JSON..=) "EventPattern" Prelude.<$> eventPattern,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                            (JSON..=) "ScheduleExpression" Prelude.<$> scheduleExpression,
+                            (JSON..=) "State" Prelude.<$> state,
+                            (JSON..=) "Tags" Prelude.<$> tags,
+                            (JSON..=) "Targets" Prelude.<$> targets])}
+instance JSON.ToJSON Rule where
+  toJSON Rule {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "EventBusName" Prelude.<$> eventBusName,
+               (JSON..=) "EventPattern" Prelude.<$> eventPattern,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "RoleArn" Prelude.<$> roleArn,
+               (JSON..=) "ScheduleExpression" Prelude.<$> scheduleExpression,
+               (JSON..=) "State" Prelude.<$> state,
+               (JSON..=) "Tags" Prelude.<$> tags,
+               (JSON..=) "Targets" Prelude.<$> targets]))
+instance Property "Description" Rule where
+  type PropertyType "Description" Rule = Value Prelude.Text
+  set newValue Rule {..}
+    = Rule {description = Prelude.pure newValue, ..}
+instance Property "EventBusName" Rule where
+  type PropertyType "EventBusName" Rule = Value Prelude.Text
+  set newValue Rule {..}
+    = Rule {eventBusName = Prelude.pure newValue, ..}
+instance Property "EventPattern" Rule where
+  type PropertyType "EventPattern" Rule = JSON.Object
+  set newValue Rule {..}
+    = Rule {eventPattern = Prelude.pure newValue, ..}
+instance Property "Name" Rule where
+  type PropertyType "Name" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {name = Prelude.pure newValue, ..}
+instance Property "RoleArn" Rule where
+  type PropertyType "RoleArn" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {roleArn = Prelude.pure newValue, ..}
+instance Property "ScheduleExpression" Rule where
+  type PropertyType "ScheduleExpression" Rule = Value Prelude.Text
+  set newValue Rule {..}
+    = Rule {scheduleExpression = Prelude.pure newValue, ..}
+instance Property "State" Rule where
+  type PropertyType "State" Rule = Value Prelude.Text
+  set newValue Rule {..} = Rule {state = Prelude.pure newValue, ..}
+instance Property "Tags" Rule where
+  type PropertyType "Tags" Rule = [Tag]
+  set newValue Rule {..} = Rule {tags = Prelude.pure newValue, ..}
+instance Property "Targets" Rule where
+  type PropertyType "Targets" Rule = [TargetProperty]
+  set newValue Rule {..} = Rule {targets = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs b/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Events.Rule.AppSyncParametersProperty (
+        AppSyncParametersProperty(..), mkAppSyncParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AppSyncParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-appsyncparameters.html>
+    AppSyncParametersProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-appsyncparameters.html#cfn-events-rule-appsyncparameters-graphqloperation>
+                               graphQLOperation :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAppSyncParametersProperty ::
+  Value Prelude.Text -> AppSyncParametersProperty
+mkAppSyncParametersProperty graphQLOperation
+  = AppSyncParametersProperty
+      {haddock_workaround_ = (), graphQLOperation = graphQLOperation}
+instance ToResourceProperties AppSyncParametersProperty where
+  toResourceProperties AppSyncParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.AppSyncParameters",
+         supportsTags = Prelude.False,
+         properties = ["GraphQLOperation" JSON..= graphQLOperation]}
+instance JSON.ToJSON AppSyncParametersProperty where
+  toJSON AppSyncParametersProperty {..}
+    = JSON.object ["GraphQLOperation" JSON..= graphQLOperation]
+instance Property "GraphQLOperation" AppSyncParametersProperty where
+  type PropertyType "GraphQLOperation" AppSyncParametersProperty = Value Prelude.Text
+  set newValue AppSyncParametersProperty {..}
+    = AppSyncParametersProperty {graphQLOperation = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/AppSyncParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.AppSyncParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AppSyncParametersProperty :: Prelude.Type
+instance ToResourceProperties AppSyncParametersProperty
+instance Prelude.Eq AppSyncParametersProperty
+instance Prelude.Show AppSyncParametersProperty
+instance JSON.ToJSON AppSyncParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs b/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.Events.Rule.AwsVpcConfigurationProperty (
+        AwsVpcConfigurationProperty(..), mkAwsVpcConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AwsVpcConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-awsvpcconfiguration.html>
+    AwsVpcConfigurationProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-awsvpcconfiguration.html#cfn-events-rule-awsvpcconfiguration-assignpublicip>
+                                 assignPublicIp :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-awsvpcconfiguration.html#cfn-events-rule-awsvpcconfiguration-securitygroups>
+                                 securityGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-awsvpcconfiguration.html#cfn-events-rule-awsvpcconfiguration-subnets>
+                                 subnets :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAwsVpcConfigurationProperty ::
+  ValueList Prelude.Text -> AwsVpcConfigurationProperty
+mkAwsVpcConfigurationProperty subnets
+  = AwsVpcConfigurationProperty
+      {haddock_workaround_ = (), subnets = subnets,
+       assignPublicIp = Prelude.Nothing, securityGroups = Prelude.Nothing}
+instance ToResourceProperties AwsVpcConfigurationProperty where
+  toResourceProperties AwsVpcConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.AwsVpcConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Subnets" JSON..= subnets]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AssignPublicIp" Prelude.<$> assignPublicIp,
+                               (JSON..=) "SecurityGroups" Prelude.<$> securityGroups]))}
+instance JSON.ToJSON AwsVpcConfigurationProperty where
+  toJSON AwsVpcConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Subnets" JSON..= subnets]
+              (Prelude.catMaybes
+                 [(JSON..=) "AssignPublicIp" Prelude.<$> assignPublicIp,
+                  (JSON..=) "SecurityGroups" Prelude.<$> securityGroups])))
+instance Property "AssignPublicIp" AwsVpcConfigurationProperty where
+  type PropertyType "AssignPublicIp" AwsVpcConfigurationProperty = Value Prelude.Text
+  set newValue AwsVpcConfigurationProperty {..}
+    = AwsVpcConfigurationProperty
+        {assignPublicIp = Prelude.pure newValue, ..}
+instance Property "SecurityGroups" AwsVpcConfigurationProperty where
+  type PropertyType "SecurityGroups" AwsVpcConfigurationProperty = ValueList Prelude.Text
+  set newValue AwsVpcConfigurationProperty {..}
+    = AwsVpcConfigurationProperty
+        {securityGroups = Prelude.pure newValue, ..}
+instance Property "Subnets" AwsVpcConfigurationProperty where
+  type PropertyType "Subnets" AwsVpcConfigurationProperty = ValueList Prelude.Text
+  set newValue AwsVpcConfigurationProperty {..}
+    = AwsVpcConfigurationProperty {subnets = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs-boot b/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/AwsVpcConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.AwsVpcConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AwsVpcConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AwsVpcConfigurationProperty
+instance Prelude.Eq AwsVpcConfigurationProperty
+instance Prelude.Show AwsVpcConfigurationProperty
+instance JSON.ToJSON AwsVpcConfigurationProperty
diff --git a/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs b/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Events.Rule.BatchArrayPropertiesProperty (
+        BatchArrayPropertiesProperty(..), mkBatchArrayPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BatchArrayPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batcharrayproperties.html>
+    BatchArrayPropertiesProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batcharrayproperties.html#cfn-events-rule-batcharrayproperties-size>
+                                  size :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBatchArrayPropertiesProperty :: BatchArrayPropertiesProperty
+mkBatchArrayPropertiesProperty
+  = BatchArrayPropertiesProperty
+      {haddock_workaround_ = (), size = Prelude.Nothing}
+instance ToResourceProperties BatchArrayPropertiesProperty where
+  toResourceProperties BatchArrayPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.BatchArrayProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Size" Prelude.<$> size])}
+instance JSON.ToJSON BatchArrayPropertiesProperty where
+  toJSON BatchArrayPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Size" Prelude.<$> size]))
+instance Property "Size" BatchArrayPropertiesProperty where
+  type PropertyType "Size" BatchArrayPropertiesProperty = Value Prelude.Integer
+  set newValue BatchArrayPropertiesProperty {..}
+    = BatchArrayPropertiesProperty {size = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs-boot b/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchArrayPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.BatchArrayPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BatchArrayPropertiesProperty :: Prelude.Type
+instance ToResourceProperties BatchArrayPropertiesProperty
+instance Prelude.Eq BatchArrayPropertiesProperty
+instance Prelude.Show BatchArrayPropertiesProperty
+instance JSON.ToJSON BatchArrayPropertiesProperty
diff --git a/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs b/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.Events.Rule.BatchParametersProperty (
+        module Exports, BatchParametersProperty(..),
+        mkBatchParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.BatchArrayPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.BatchRetryStrategyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BatchParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchparameters.html>
+    BatchParametersProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchparameters.html#cfn-events-rule-batchparameters-arrayproperties>
+                             arrayProperties :: (Prelude.Maybe BatchArrayPropertiesProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchparameters.html#cfn-events-rule-batchparameters-jobdefinition>
+                             jobDefinition :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchparameters.html#cfn-events-rule-batchparameters-jobname>
+                             jobName :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchparameters.html#cfn-events-rule-batchparameters-retrystrategy>
+                             retryStrategy :: (Prelude.Maybe BatchRetryStrategyProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBatchParametersProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> BatchParametersProperty
+mkBatchParametersProperty jobDefinition jobName
+  = BatchParametersProperty
+      {haddock_workaround_ = (), jobDefinition = jobDefinition,
+       jobName = jobName, arrayProperties = Prelude.Nothing,
+       retryStrategy = Prelude.Nothing}
+instance ToResourceProperties BatchParametersProperty where
+  toResourceProperties BatchParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.BatchParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["JobDefinition" JSON..= jobDefinition, "JobName" JSON..= jobName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ArrayProperties" Prelude.<$> arrayProperties,
+                               (JSON..=) "RetryStrategy" Prelude.<$> retryStrategy]))}
+instance JSON.ToJSON BatchParametersProperty where
+  toJSON BatchParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["JobDefinition" JSON..= jobDefinition, "JobName" JSON..= jobName]
+              (Prelude.catMaybes
+                 [(JSON..=) "ArrayProperties" Prelude.<$> arrayProperties,
+                  (JSON..=) "RetryStrategy" Prelude.<$> retryStrategy])))
+instance Property "ArrayProperties" BatchParametersProperty where
+  type PropertyType "ArrayProperties" BatchParametersProperty = BatchArrayPropertiesProperty
+  set newValue BatchParametersProperty {..}
+    = BatchParametersProperty
+        {arrayProperties = Prelude.pure newValue, ..}
+instance Property "JobDefinition" BatchParametersProperty where
+  type PropertyType "JobDefinition" BatchParametersProperty = Value Prelude.Text
+  set newValue BatchParametersProperty {..}
+    = BatchParametersProperty {jobDefinition = newValue, ..}
+instance Property "JobName" BatchParametersProperty where
+  type PropertyType "JobName" BatchParametersProperty = Value Prelude.Text
+  set newValue BatchParametersProperty {..}
+    = BatchParametersProperty {jobName = newValue, ..}
+instance Property "RetryStrategy" BatchParametersProperty where
+  type PropertyType "RetryStrategy" BatchParametersProperty = BatchRetryStrategyProperty
+  set newValue BatchParametersProperty {..}
+    = BatchParametersProperty
+        {retryStrategy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.BatchParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BatchParametersProperty :: Prelude.Type
+instance ToResourceProperties BatchParametersProperty
+instance Prelude.Eq BatchParametersProperty
+instance Prelude.Show BatchParametersProperty
+instance JSON.ToJSON BatchParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs b/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Events.Rule.BatchRetryStrategyProperty (
+        BatchRetryStrategyProperty(..), mkBatchRetryStrategyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BatchRetryStrategyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchretrystrategy.html>
+    BatchRetryStrategyProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-batchretrystrategy.html#cfn-events-rule-batchretrystrategy-attempts>
+                                attempts :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBatchRetryStrategyProperty :: BatchRetryStrategyProperty
+mkBatchRetryStrategyProperty
+  = BatchRetryStrategyProperty
+      {haddock_workaround_ = (), attempts = Prelude.Nothing}
+instance ToResourceProperties BatchRetryStrategyProperty where
+  toResourceProperties BatchRetryStrategyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.BatchRetryStrategy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Attempts" Prelude.<$> attempts])}
+instance JSON.ToJSON BatchRetryStrategyProperty where
+  toJSON BatchRetryStrategyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Attempts" Prelude.<$> attempts]))
+instance Property "Attempts" BatchRetryStrategyProperty where
+  type PropertyType "Attempts" BatchRetryStrategyProperty = Value Prelude.Integer
+  set newValue BatchRetryStrategyProperty {..}
+    = BatchRetryStrategyProperty {attempts = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs-boot b/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/BatchRetryStrategyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.BatchRetryStrategyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BatchRetryStrategyProperty :: Prelude.Type
+instance ToResourceProperties BatchRetryStrategyProperty
+instance Prelude.Eq BatchRetryStrategyProperty
+instance Prelude.Show BatchRetryStrategyProperty
+instance JSON.ToJSON BatchRetryStrategyProperty
diff --git a/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs b/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.Events.Rule.CapacityProviderStrategyItemProperty (
+        CapacityProviderStrategyItemProperty(..),
+        mkCapacityProviderStrategyItemProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CapacityProviderStrategyItemProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-capacityproviderstrategyitem.html>
+    CapacityProviderStrategyItemProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-capacityproviderstrategyitem.html#cfn-events-rule-capacityproviderstrategyitem-base>
+                                          base :: (Prelude.Maybe (Value Prelude.Integer)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-capacityproviderstrategyitem.html#cfn-events-rule-capacityproviderstrategyitem-capacityprovider>
+                                          capacityProvider :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-capacityproviderstrategyitem.html#cfn-events-rule-capacityproviderstrategyitem-weight>
+                                          weight :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapacityProviderStrategyItemProperty ::
+  Value Prelude.Text -> CapacityProviderStrategyItemProperty
+mkCapacityProviderStrategyItemProperty capacityProvider
+  = CapacityProviderStrategyItemProperty
+      {haddock_workaround_ = (), capacityProvider = capacityProvider,
+       base = Prelude.Nothing, weight = Prelude.Nothing}
+instance ToResourceProperties CapacityProviderStrategyItemProperty where
+  toResourceProperties CapacityProviderStrategyItemProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.CapacityProviderStrategyItem",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["CapacityProvider" JSON..= capacityProvider]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Base" Prelude.<$> base,
+                               (JSON..=) "Weight" Prelude.<$> weight]))}
+instance JSON.ToJSON CapacityProviderStrategyItemProperty where
+  toJSON CapacityProviderStrategyItemProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["CapacityProvider" JSON..= capacityProvider]
+              (Prelude.catMaybes
+                 [(JSON..=) "Base" Prelude.<$> base,
+                  (JSON..=) "Weight" Prelude.<$> weight])))
+instance Property "Base" CapacityProviderStrategyItemProperty where
+  type PropertyType "Base" CapacityProviderStrategyItemProperty = Value Prelude.Integer
+  set newValue CapacityProviderStrategyItemProperty {..}
+    = CapacityProviderStrategyItemProperty
+        {base = Prelude.pure newValue, ..}
+instance Property "CapacityProvider" CapacityProviderStrategyItemProperty where
+  type PropertyType "CapacityProvider" CapacityProviderStrategyItemProperty = Value Prelude.Text
+  set newValue CapacityProviderStrategyItemProperty {..}
+    = CapacityProviderStrategyItemProperty
+        {capacityProvider = newValue, ..}
+instance Property "Weight" CapacityProviderStrategyItemProperty where
+  type PropertyType "Weight" CapacityProviderStrategyItemProperty = Value Prelude.Integer
+  set newValue CapacityProviderStrategyItemProperty {..}
+    = CapacityProviderStrategyItemProperty
+        {weight = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs-boot b/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/CapacityProviderStrategyItemProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.CapacityProviderStrategyItemProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CapacityProviderStrategyItemProperty :: Prelude.Type
+instance ToResourceProperties CapacityProviderStrategyItemProperty
+instance Prelude.Eq CapacityProviderStrategyItemProperty
+instance Prelude.Show CapacityProviderStrategyItemProperty
+instance JSON.ToJSON CapacityProviderStrategyItemProperty
diff --git a/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs b/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.Events.Rule.DeadLetterConfigProperty (
+        DeadLetterConfigProperty(..), mkDeadLetterConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeadLetterConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-deadletterconfig.html>
+    DeadLetterConfigProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-deadletterconfig.html#cfn-events-rule-deadletterconfig-arn>
+                              arn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeadLetterConfigProperty :: DeadLetterConfigProperty
+mkDeadLetterConfigProperty
+  = DeadLetterConfigProperty
+      {haddock_workaround_ = (), arn = Prelude.Nothing}
+instance ToResourceProperties DeadLetterConfigProperty where
+  toResourceProperties DeadLetterConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.DeadLetterConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn])}
+instance JSON.ToJSON DeadLetterConfigProperty where
+  toJSON DeadLetterConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Arn" Prelude.<$> arn]))
+instance Property "Arn" DeadLetterConfigProperty where
+  type PropertyType "Arn" DeadLetterConfigProperty = Value Prelude.Text
+  set newValue DeadLetterConfigProperty {..}
+    = DeadLetterConfigProperty {arn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs-boot b/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/DeadLetterConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.DeadLetterConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DeadLetterConfigProperty :: Prelude.Type
+instance ToResourceProperties DeadLetterConfigProperty
+instance Prelude.Eq DeadLetterConfigProperty
+instance Prelude.Show DeadLetterConfigProperty
+instance JSON.ToJSON DeadLetterConfigProperty
diff --git a/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs b/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs
@@ -0,0 +1,167 @@
+module Stratosphere.Events.Rule.EcsParametersProperty (
+        module Exports, EcsParametersProperty(..), mkEcsParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.CapacityProviderStrategyItemProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.NetworkConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.PlacementConstraintProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.PlacementStrategyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data EcsParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html>
+    EcsParametersProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-capacityproviderstrategy>
+                           capacityProviderStrategy :: (Prelude.Maybe [CapacityProviderStrategyItemProperty]),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-enableecsmanagedtags>
+                           enableECSManagedTags :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-enableexecutecommand>
+                           enableExecuteCommand :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-group>
+                           group :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-launchtype>
+                           launchType :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-networkconfiguration>
+                           networkConfiguration :: (Prelude.Maybe NetworkConfigurationProperty),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-placementconstraints>
+                           placementConstraints :: (Prelude.Maybe [PlacementConstraintProperty]),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-placementstrategies>
+                           placementStrategies :: (Prelude.Maybe [PlacementStrategyProperty]),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-platformversion>
+                           platformVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-propagatetags>
+                           propagateTags :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-referenceid>
+                           referenceId :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taglist>
+                           tagList :: (Prelude.Maybe [Tag]),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskcount>
+                           taskCount :: (Prelude.Maybe (Value Prelude.Integer)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskdefinitionarn>
+                           taskDefinitionArn :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEcsParametersProperty ::
+  Value Prelude.Text -> EcsParametersProperty
+mkEcsParametersProperty taskDefinitionArn
+  = EcsParametersProperty
+      {haddock_workaround_ = (), taskDefinitionArn = taskDefinitionArn,
+       capacityProviderStrategy = Prelude.Nothing,
+       enableECSManagedTags = Prelude.Nothing,
+       enableExecuteCommand = Prelude.Nothing, group = Prelude.Nothing,
+       launchType = Prelude.Nothing,
+       networkConfiguration = Prelude.Nothing,
+       placementConstraints = Prelude.Nothing,
+       placementStrategies = Prelude.Nothing,
+       platformVersion = Prelude.Nothing, propagateTags = Prelude.Nothing,
+       referenceId = Prelude.Nothing, tagList = Prelude.Nothing,
+       taskCount = Prelude.Nothing}
+instance ToResourceProperties EcsParametersProperty where
+  toResourceProperties EcsParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.EcsParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TaskDefinitionArn" JSON..= taskDefinitionArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapacityProviderStrategy"
+                                 Prelude.<$> capacityProviderStrategy,
+                               (JSON..=) "EnableECSManagedTags" Prelude.<$> enableECSManagedTags,
+                               (JSON..=) "EnableExecuteCommand" Prelude.<$> enableExecuteCommand,
+                               (JSON..=) "Group" Prelude.<$> group,
+                               (JSON..=) "LaunchType" Prelude.<$> launchType,
+                               (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration,
+                               (JSON..=) "PlacementConstraints" Prelude.<$> placementConstraints,
+                               (JSON..=) "PlacementStrategies" Prelude.<$> placementStrategies,
+                               (JSON..=) "PlatformVersion" Prelude.<$> platformVersion,
+                               (JSON..=) "PropagateTags" Prelude.<$> propagateTags,
+                               (JSON..=) "ReferenceId" Prelude.<$> referenceId,
+                               (JSON..=) "TagList" Prelude.<$> tagList,
+                               (JSON..=) "TaskCount" Prelude.<$> taskCount]))}
+instance JSON.ToJSON EcsParametersProperty where
+  toJSON EcsParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TaskDefinitionArn" JSON..= taskDefinitionArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapacityProviderStrategy"
+                    Prelude.<$> capacityProviderStrategy,
+                  (JSON..=) "EnableECSManagedTags" Prelude.<$> enableECSManagedTags,
+                  (JSON..=) "EnableExecuteCommand" Prelude.<$> enableExecuteCommand,
+                  (JSON..=) "Group" Prelude.<$> group,
+                  (JSON..=) "LaunchType" Prelude.<$> launchType,
+                  (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration,
+                  (JSON..=) "PlacementConstraints" Prelude.<$> placementConstraints,
+                  (JSON..=) "PlacementStrategies" Prelude.<$> placementStrategies,
+                  (JSON..=) "PlatformVersion" Prelude.<$> platformVersion,
+                  (JSON..=) "PropagateTags" Prelude.<$> propagateTags,
+                  (JSON..=) "ReferenceId" Prelude.<$> referenceId,
+                  (JSON..=) "TagList" Prelude.<$> tagList,
+                  (JSON..=) "TaskCount" Prelude.<$> taskCount])))
+instance Property "CapacityProviderStrategy" EcsParametersProperty where
+  type PropertyType "CapacityProviderStrategy" EcsParametersProperty = [CapacityProviderStrategyItemProperty]
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {capacityProviderStrategy = Prelude.pure newValue, ..}
+instance Property "EnableECSManagedTags" EcsParametersProperty where
+  type PropertyType "EnableECSManagedTags" EcsParametersProperty = Value Prelude.Bool
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {enableECSManagedTags = Prelude.pure newValue, ..}
+instance Property "EnableExecuteCommand" EcsParametersProperty where
+  type PropertyType "EnableExecuteCommand" EcsParametersProperty = Value Prelude.Bool
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {enableExecuteCommand = Prelude.pure newValue, ..}
+instance Property "Group" EcsParametersProperty where
+  type PropertyType "Group" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {group = Prelude.pure newValue, ..}
+instance Property "LaunchType" EcsParametersProperty where
+  type PropertyType "LaunchType" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {launchType = Prelude.pure newValue, ..}
+instance Property "NetworkConfiguration" EcsParametersProperty where
+  type PropertyType "NetworkConfiguration" EcsParametersProperty = NetworkConfigurationProperty
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {networkConfiguration = Prelude.pure newValue, ..}
+instance Property "PlacementConstraints" EcsParametersProperty where
+  type PropertyType "PlacementConstraints" EcsParametersProperty = [PlacementConstraintProperty]
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {placementConstraints = Prelude.pure newValue, ..}
+instance Property "PlacementStrategies" EcsParametersProperty where
+  type PropertyType "PlacementStrategies" EcsParametersProperty = [PlacementStrategyProperty]
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {placementStrategies = Prelude.pure newValue, ..}
+instance Property "PlatformVersion" EcsParametersProperty where
+  type PropertyType "PlatformVersion" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty
+        {platformVersion = Prelude.pure newValue, ..}
+instance Property "PropagateTags" EcsParametersProperty where
+  type PropertyType "PropagateTags" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {propagateTags = Prelude.pure newValue, ..}
+instance Property "ReferenceId" EcsParametersProperty where
+  type PropertyType "ReferenceId" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {referenceId = Prelude.pure newValue, ..}
+instance Property "TagList" EcsParametersProperty where
+  type PropertyType "TagList" EcsParametersProperty = [Tag]
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {tagList = Prelude.pure newValue, ..}
+instance Property "TaskCount" EcsParametersProperty where
+  type PropertyType "TaskCount" EcsParametersProperty = Value Prelude.Integer
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {taskCount = Prelude.pure newValue, ..}
+instance Property "TaskDefinitionArn" EcsParametersProperty where
+  type PropertyType "TaskDefinitionArn" EcsParametersProperty = Value Prelude.Text
+  set newValue EcsParametersProperty {..}
+    = EcsParametersProperty {taskDefinitionArn = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/EcsParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.EcsParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EcsParametersProperty :: Prelude.Type
+instance ToResourceProperties EcsParametersProperty
+instance Prelude.Eq EcsParametersProperty
+instance Prelude.Show EcsParametersProperty
+instance JSON.ToJSON EcsParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs b/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.Events.Rule.HttpParametersProperty (
+        HttpParametersProperty(..), mkHttpParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data HttpParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-httpparameters.html>
+    HttpParametersProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-httpparameters.html#cfn-events-rule-httpparameters-headerparameters>
+                            headerParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-httpparameters.html#cfn-events-rule-httpparameters-pathparametervalues>
+                            pathParameterValues :: (Prelude.Maybe (ValueList Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-httpparameters.html#cfn-events-rule-httpparameters-querystringparameters>
+                            queryStringParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkHttpParametersProperty :: HttpParametersProperty
+mkHttpParametersProperty
+  = HttpParametersProperty
+      {haddock_workaround_ = (), headerParameters = Prelude.Nothing,
+       pathParameterValues = Prelude.Nothing,
+       queryStringParameters = Prelude.Nothing}
+instance ToResourceProperties HttpParametersProperty where
+  toResourceProperties HttpParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.HttpParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "HeaderParameters" Prelude.<$> headerParameters,
+                            (JSON..=) "PathParameterValues" Prelude.<$> pathParameterValues,
+                            (JSON..=) "QueryStringParameters"
+                              Prelude.<$> queryStringParameters])}
+instance JSON.ToJSON HttpParametersProperty where
+  toJSON HttpParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "HeaderParameters" Prelude.<$> headerParameters,
+               (JSON..=) "PathParameterValues" Prelude.<$> pathParameterValues,
+               (JSON..=) "QueryStringParameters"
+                 Prelude.<$> queryStringParameters]))
+instance Property "HeaderParameters" HttpParametersProperty where
+  type PropertyType "HeaderParameters" HttpParametersProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue HttpParametersProperty {..}
+    = HttpParametersProperty
+        {headerParameters = Prelude.pure newValue, ..}
+instance Property "PathParameterValues" HttpParametersProperty where
+  type PropertyType "PathParameterValues" HttpParametersProperty = ValueList Prelude.Text
+  set newValue HttpParametersProperty {..}
+    = HttpParametersProperty
+        {pathParameterValues = Prelude.pure newValue, ..}
+instance Property "QueryStringParameters" HttpParametersProperty where
+  type PropertyType "QueryStringParameters" HttpParametersProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue HttpParametersProperty {..}
+    = HttpParametersProperty
+        {queryStringParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/HttpParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.HttpParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data HttpParametersProperty :: Prelude.Type
+instance ToResourceProperties HttpParametersProperty
+instance Prelude.Eq HttpParametersProperty
+instance Prelude.Show HttpParametersProperty
+instance JSON.ToJSON HttpParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs b/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.Events.Rule.InputTransformerProperty (
+        InputTransformerProperty(..), mkInputTransformerProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InputTransformerProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html>
+    InputTransformerProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputpathsmap>
+                              inputPathsMap :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputtemplate>
+                              inputTemplate :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInputTransformerProperty ::
+  Value Prelude.Text -> InputTransformerProperty
+mkInputTransformerProperty inputTemplate
+  = InputTransformerProperty
+      {haddock_workaround_ = (), inputTemplate = inputTemplate,
+       inputPathsMap = Prelude.Nothing}
+instance ToResourceProperties InputTransformerProperty where
+  toResourceProperties InputTransformerProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.InputTransformer",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputTemplate" JSON..= inputTemplate]
+                           (Prelude.catMaybes
+                              [(JSON..=) "InputPathsMap" Prelude.<$> inputPathsMap]))}
+instance JSON.ToJSON InputTransformerProperty where
+  toJSON InputTransformerProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputTemplate" JSON..= inputTemplate]
+              (Prelude.catMaybes
+                 [(JSON..=) "InputPathsMap" Prelude.<$> inputPathsMap])))
+instance Property "InputPathsMap" InputTransformerProperty where
+  type PropertyType "InputPathsMap" InputTransformerProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue InputTransformerProperty {..}
+    = InputTransformerProperty
+        {inputPathsMap = Prelude.pure newValue, ..}
+instance Property "InputTemplate" InputTransformerProperty where
+  type PropertyType "InputTemplate" InputTransformerProperty = Value Prelude.Text
+  set newValue InputTransformerProperty {..}
+    = InputTransformerProperty {inputTemplate = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs-boot b/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/InputTransformerProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.InputTransformerProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InputTransformerProperty :: Prelude.Type
+instance ToResourceProperties InputTransformerProperty
+instance Prelude.Eq InputTransformerProperty
+instance Prelude.Show InputTransformerProperty
+instance JSON.ToJSON InputTransformerProperty
diff --git a/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs b/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Events.Rule.KinesisParametersProperty (
+        KinesisParametersProperty(..), mkKinesisParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data KinesisParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html>
+    KinesisParametersProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html#cfn-events-rule-kinesisparameters-partitionkeypath>
+                               partitionKeyPath :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkKinesisParametersProperty ::
+  Value Prelude.Text -> KinesisParametersProperty
+mkKinesisParametersProperty partitionKeyPath
+  = KinesisParametersProperty
+      {haddock_workaround_ = (), partitionKeyPath = partitionKeyPath}
+instance ToResourceProperties KinesisParametersProperty where
+  toResourceProperties KinesisParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.KinesisParameters",
+         supportsTags = Prelude.False,
+         properties = ["PartitionKeyPath" JSON..= partitionKeyPath]}
+instance JSON.ToJSON KinesisParametersProperty where
+  toJSON KinesisParametersProperty {..}
+    = JSON.object ["PartitionKeyPath" JSON..= partitionKeyPath]
+instance Property "PartitionKeyPath" KinesisParametersProperty where
+  type PropertyType "PartitionKeyPath" KinesisParametersProperty = Value Prelude.Text
+  set newValue KinesisParametersProperty {..}
+    = KinesisParametersProperty {partitionKeyPath = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/KinesisParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.KinesisParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data KinesisParametersProperty :: Prelude.Type
+instance ToResourceProperties KinesisParametersProperty
+instance Prelude.Eq KinesisParametersProperty
+instance Prelude.Show KinesisParametersProperty
+instance JSON.ToJSON KinesisParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs b/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.Events.Rule.NetworkConfigurationProperty (
+        module Exports, NetworkConfigurationProperty(..),
+        mkNetworkConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.AwsVpcConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data NetworkConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-networkconfiguration.html>
+    NetworkConfigurationProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-networkconfiguration.html#cfn-events-rule-networkconfiguration-awsvpcconfiguration>
+                                  awsVpcConfiguration :: (Prelude.Maybe AwsVpcConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNetworkConfigurationProperty :: NetworkConfigurationProperty
+mkNetworkConfigurationProperty
+  = NetworkConfigurationProperty
+      {haddock_workaround_ = (), awsVpcConfiguration = Prelude.Nothing}
+instance ToResourceProperties NetworkConfigurationProperty where
+  toResourceProperties NetworkConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.NetworkConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AwsVpcConfiguration" Prelude.<$> awsVpcConfiguration])}
+instance JSON.ToJSON NetworkConfigurationProperty where
+  toJSON NetworkConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AwsVpcConfiguration" Prelude.<$> awsVpcConfiguration]))
+instance Property "AwsVpcConfiguration" NetworkConfigurationProperty where
+  type PropertyType "AwsVpcConfiguration" NetworkConfigurationProperty = AwsVpcConfigurationProperty
+  set newValue NetworkConfigurationProperty {..}
+    = NetworkConfigurationProperty
+        {awsVpcConfiguration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs-boot b/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/NetworkConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.NetworkConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NetworkConfigurationProperty :: Prelude.Type
+instance ToResourceProperties NetworkConfigurationProperty
+instance Prelude.Eq NetworkConfigurationProperty
+instance Prelude.Show NetworkConfigurationProperty
+instance JSON.ToJSON NetworkConfigurationProperty
diff --git a/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs b/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.Events.Rule.PlacementConstraintProperty (
+        PlacementConstraintProperty(..), mkPlacementConstraintProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PlacementConstraintProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementconstraint.html>
+    PlacementConstraintProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementconstraint.html#cfn-events-rule-placementconstraint-expression>
+                                 expression :: (Prelude.Maybe (Value Prelude.Text)),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementconstraint.html#cfn-events-rule-placementconstraint-type>
+                                 type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPlacementConstraintProperty :: PlacementConstraintProperty
+mkPlacementConstraintProperty
+  = PlacementConstraintProperty
+      {haddock_workaround_ = (), expression = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties PlacementConstraintProperty where
+  toResourceProperties PlacementConstraintProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.PlacementConstraint",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Expression" Prelude.<$> expression,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON PlacementConstraintProperty where
+  toJSON PlacementConstraintProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Expression" Prelude.<$> expression,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "Expression" PlacementConstraintProperty where
+  type PropertyType "Expression" PlacementConstraintProperty = Value Prelude.Text
+  set newValue PlacementConstraintProperty {..}
+    = PlacementConstraintProperty
+        {expression = Prelude.pure newValue, ..}
+instance Property "Type" PlacementConstraintProperty where
+  type PropertyType "Type" PlacementConstraintProperty = Value Prelude.Text
+  set newValue PlacementConstraintProperty {..}
+    = PlacementConstraintProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs-boot b/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/PlacementConstraintProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.PlacementConstraintProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PlacementConstraintProperty :: Prelude.Type
+instance ToResourceProperties PlacementConstraintProperty
+instance Prelude.Eq PlacementConstraintProperty
+instance Prelude.Show PlacementConstraintProperty
+instance JSON.ToJSON PlacementConstraintProperty
diff --git a/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs b/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.Events.Rule.PlacementStrategyProperty (
+        PlacementStrategyProperty(..), mkPlacementStrategyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PlacementStrategyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementstrategy.html>
+    PlacementStrategyProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementstrategy.html#cfn-events-rule-placementstrategy-field>
+                               field :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-placementstrategy.html#cfn-events-rule-placementstrategy-type>
+                               type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPlacementStrategyProperty :: PlacementStrategyProperty
+mkPlacementStrategyProperty
+  = PlacementStrategyProperty
+      {haddock_workaround_ = (), field = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties PlacementStrategyProperty where
+  toResourceProperties PlacementStrategyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.PlacementStrategy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Field" Prelude.<$> field,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON PlacementStrategyProperty where
+  toJSON PlacementStrategyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Field" Prelude.<$> field,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "Field" PlacementStrategyProperty where
+  type PropertyType "Field" PlacementStrategyProperty = Value Prelude.Text
+  set newValue PlacementStrategyProperty {..}
+    = PlacementStrategyProperty {field = Prelude.pure newValue, ..}
+instance Property "Type" PlacementStrategyProperty where
+  type PropertyType "Type" PlacementStrategyProperty = Value Prelude.Text
+  set newValue PlacementStrategyProperty {..}
+    = PlacementStrategyProperty {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs-boot b/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/PlacementStrategyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.PlacementStrategyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PlacementStrategyProperty :: Prelude.Type
+instance ToResourceProperties PlacementStrategyProperty
+instance Prelude.Eq PlacementStrategyProperty
+instance Prelude.Show PlacementStrategyProperty
+instance JSON.ToJSON PlacementStrategyProperty
diff --git a/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs b/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs
@@ -0,0 +1,93 @@
+module Stratosphere.Events.Rule.RedshiftDataParametersProperty (
+        RedshiftDataParametersProperty(..),
+        mkRedshiftDataParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RedshiftDataParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html>
+    RedshiftDataParametersProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-database>
+                                    database :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-dbuser>
+                                    dbUser :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-secretmanagerarn>
+                                    secretManagerArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-sql>
+                                    sql :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-sqls>
+                                    sqls :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-statementname>
+                                    statementName :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-redshiftdataparameters.html#cfn-events-rule-redshiftdataparameters-withevent>
+                                    withEvent :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRedshiftDataParametersProperty ::
+  Value Prelude.Text -> RedshiftDataParametersProperty
+mkRedshiftDataParametersProperty database
+  = RedshiftDataParametersProperty
+      {haddock_workaround_ = (), database = database,
+       dbUser = Prelude.Nothing, secretManagerArn = Prelude.Nothing,
+       sql = Prelude.Nothing, sqls = Prelude.Nothing,
+       statementName = Prelude.Nothing, withEvent = Prelude.Nothing}
+instance ToResourceProperties RedshiftDataParametersProperty where
+  toResourceProperties RedshiftDataParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.RedshiftDataParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Database" JSON..= database]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DbUser" Prelude.<$> dbUser,
+                               (JSON..=) "SecretManagerArn" Prelude.<$> secretManagerArn,
+                               (JSON..=) "Sql" Prelude.<$> sql, (JSON..=) "Sqls" Prelude.<$> sqls,
+                               (JSON..=) "StatementName" Prelude.<$> statementName,
+                               (JSON..=) "WithEvent" Prelude.<$> withEvent]))}
+instance JSON.ToJSON RedshiftDataParametersProperty where
+  toJSON RedshiftDataParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Database" JSON..= database]
+              (Prelude.catMaybes
+                 [(JSON..=) "DbUser" Prelude.<$> dbUser,
+                  (JSON..=) "SecretManagerArn" Prelude.<$> secretManagerArn,
+                  (JSON..=) "Sql" Prelude.<$> sql, (JSON..=) "Sqls" Prelude.<$> sqls,
+                  (JSON..=) "StatementName" Prelude.<$> statementName,
+                  (JSON..=) "WithEvent" Prelude.<$> withEvent])))
+instance Property "Database" RedshiftDataParametersProperty where
+  type PropertyType "Database" RedshiftDataParametersProperty = Value Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty {database = newValue, ..}
+instance Property "DbUser" RedshiftDataParametersProperty where
+  type PropertyType "DbUser" RedshiftDataParametersProperty = Value Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty
+        {dbUser = Prelude.pure newValue, ..}
+instance Property "SecretManagerArn" RedshiftDataParametersProperty where
+  type PropertyType "SecretManagerArn" RedshiftDataParametersProperty = Value Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty
+        {secretManagerArn = Prelude.pure newValue, ..}
+instance Property "Sql" RedshiftDataParametersProperty where
+  type PropertyType "Sql" RedshiftDataParametersProperty = Value Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty {sql = Prelude.pure newValue, ..}
+instance Property "Sqls" RedshiftDataParametersProperty where
+  type PropertyType "Sqls" RedshiftDataParametersProperty = ValueList Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty {sqls = Prelude.pure newValue, ..}
+instance Property "StatementName" RedshiftDataParametersProperty where
+  type PropertyType "StatementName" RedshiftDataParametersProperty = Value Prelude.Text
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty
+        {statementName = Prelude.pure newValue, ..}
+instance Property "WithEvent" RedshiftDataParametersProperty where
+  type PropertyType "WithEvent" RedshiftDataParametersProperty = Value Prelude.Bool
+  set newValue RedshiftDataParametersProperty {..}
+    = RedshiftDataParametersProperty
+        {withEvent = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RedshiftDataParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.RedshiftDataParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RedshiftDataParametersProperty :: Prelude.Type
+instance ToResourceProperties RedshiftDataParametersProperty
+instance Prelude.Eq RedshiftDataParametersProperty
+instance Prelude.Show RedshiftDataParametersProperty
+instance JSON.ToJSON RedshiftDataParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs b/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.Events.Rule.RetryPolicyProperty (
+        RetryPolicyProperty(..), mkRetryPolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RetryPolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-retrypolicy.html>
+    RetryPolicyProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-retrypolicy.html#cfn-events-rule-retrypolicy-maximumeventageinseconds>
+                         maximumEventAgeInSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-retrypolicy.html#cfn-events-rule-retrypolicy-maximumretryattempts>
+                         maximumRetryAttempts :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRetryPolicyProperty :: RetryPolicyProperty
+mkRetryPolicyProperty
+  = RetryPolicyProperty
+      {haddock_workaround_ = (),
+       maximumEventAgeInSeconds = Prelude.Nothing,
+       maximumRetryAttempts = Prelude.Nothing}
+instance ToResourceProperties RetryPolicyProperty where
+  toResourceProperties RetryPolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.RetryPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MaximumEventAgeInSeconds"
+                              Prelude.<$> maximumEventAgeInSeconds,
+                            (JSON..=) "MaximumRetryAttempts"
+                              Prelude.<$> maximumRetryAttempts])}
+instance JSON.ToJSON RetryPolicyProperty where
+  toJSON RetryPolicyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MaximumEventAgeInSeconds"
+                 Prelude.<$> maximumEventAgeInSeconds,
+               (JSON..=) "MaximumRetryAttempts"
+                 Prelude.<$> maximumRetryAttempts]))
+instance Property "MaximumEventAgeInSeconds" RetryPolicyProperty where
+  type PropertyType "MaximumEventAgeInSeconds" RetryPolicyProperty = Value Prelude.Integer
+  set newValue RetryPolicyProperty {..}
+    = RetryPolicyProperty
+        {maximumEventAgeInSeconds = Prelude.pure newValue, ..}
+instance Property "MaximumRetryAttempts" RetryPolicyProperty where
+  type PropertyType "MaximumRetryAttempts" RetryPolicyProperty = Value Prelude.Integer
+  set newValue RetryPolicyProperty {..}
+    = RetryPolicyProperty
+        {maximumRetryAttempts = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs-boot b/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RetryPolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.RetryPolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RetryPolicyProperty :: Prelude.Type
+instance ToResourceProperties RetryPolicyProperty
+instance Prelude.Eq RetryPolicyProperty
+instance Prelude.Show RetryPolicyProperty
+instance JSON.ToJSON RetryPolicyProperty
diff --git a/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs b/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.Events.Rule.RunCommandParametersProperty (
+        module Exports, RunCommandParametersProperty(..),
+        mkRunCommandParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.RunCommandTargetProperty as Exports
+import Stratosphere.ResourceProperties
+data RunCommandParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html>
+    RunCommandParametersProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html#cfn-events-rule-runcommandparameters-runcommandtargets>
+                                  runCommandTargets :: [RunCommandTargetProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRunCommandParametersProperty ::
+  [RunCommandTargetProperty] -> RunCommandParametersProperty
+mkRunCommandParametersProperty runCommandTargets
+  = RunCommandParametersProperty
+      {haddock_workaround_ = (), runCommandTargets = runCommandTargets}
+instance ToResourceProperties RunCommandParametersProperty where
+  toResourceProperties RunCommandParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.RunCommandParameters",
+         supportsTags = Prelude.False,
+         properties = ["RunCommandTargets" JSON..= runCommandTargets]}
+instance JSON.ToJSON RunCommandParametersProperty where
+  toJSON RunCommandParametersProperty {..}
+    = JSON.object ["RunCommandTargets" JSON..= runCommandTargets]
+instance Property "RunCommandTargets" RunCommandParametersProperty where
+  type PropertyType "RunCommandTargets" RunCommandParametersProperty = [RunCommandTargetProperty]
+  set newValue RunCommandParametersProperty {..}
+    = RunCommandParametersProperty {runCommandTargets = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RunCommandParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.RunCommandParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RunCommandParametersProperty :: Prelude.Type
+instance ToResourceProperties RunCommandParametersProperty
+instance Prelude.Eq RunCommandParametersProperty
+instance Prelude.Show RunCommandParametersProperty
+instance JSON.ToJSON RunCommandParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs b/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.Events.Rule.RunCommandTargetProperty (
+        RunCommandTargetProperty(..), mkRunCommandTargetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RunCommandTargetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html>
+    RunCommandTargetProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-key>
+                              key :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-values>
+                              values :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRunCommandTargetProperty ::
+  Value Prelude.Text
+  -> ValueList Prelude.Text -> RunCommandTargetProperty
+mkRunCommandTargetProperty key values
+  = RunCommandTargetProperty
+      {haddock_workaround_ = (), key = key, values = values}
+instance ToResourceProperties RunCommandTargetProperty where
+  toResourceProperties RunCommandTargetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.RunCommandTarget",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Values" JSON..= values]}
+instance JSON.ToJSON RunCommandTargetProperty where
+  toJSON RunCommandTargetProperty {..}
+    = JSON.object ["Key" JSON..= key, "Values" JSON..= values]
+instance Property "Key" RunCommandTargetProperty where
+  type PropertyType "Key" RunCommandTargetProperty = Value Prelude.Text
+  set newValue RunCommandTargetProperty {..}
+    = RunCommandTargetProperty {key = newValue, ..}
+instance Property "Values" RunCommandTargetProperty where
+  type PropertyType "Values" RunCommandTargetProperty = ValueList Prelude.Text
+  set newValue RunCommandTargetProperty {..}
+    = RunCommandTargetProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs-boot b/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/RunCommandTargetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.RunCommandTargetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RunCommandTargetProperty :: Prelude.Type
+instance ToResourceProperties RunCommandTargetProperty
+instance Prelude.Eq RunCommandTargetProperty
+instance Prelude.Show RunCommandTargetProperty
+instance JSON.ToJSON RunCommandTargetProperty
diff --git a/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs b/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.Events.Rule.SageMakerPipelineParameterProperty (
+        SageMakerPipelineParameterProperty(..),
+        mkSageMakerPipelineParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SageMakerPipelineParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sagemakerpipelineparameter.html>
+    SageMakerPipelineParameterProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sagemakerpipelineparameter.html#cfn-events-rule-sagemakerpipelineparameter-name>
+                                        name :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sagemakerpipelineparameter.html#cfn-events-rule-sagemakerpipelineparameter-value>
+                                        value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSageMakerPipelineParameterProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> SageMakerPipelineParameterProperty
+mkSageMakerPipelineParameterProperty name value
+  = SageMakerPipelineParameterProperty
+      {haddock_workaround_ = (), name = name, value = value}
+instance ToResourceProperties SageMakerPipelineParameterProperty where
+  toResourceProperties SageMakerPipelineParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.SageMakerPipelineParameter",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Value" JSON..= value]}
+instance JSON.ToJSON SageMakerPipelineParameterProperty where
+  toJSON SageMakerPipelineParameterProperty {..}
+    = JSON.object ["Name" JSON..= name, "Value" JSON..= value]
+instance Property "Name" SageMakerPipelineParameterProperty where
+  type PropertyType "Name" SageMakerPipelineParameterProperty = Value Prelude.Text
+  set newValue SageMakerPipelineParameterProperty {..}
+    = SageMakerPipelineParameterProperty {name = newValue, ..}
+instance Property "Value" SageMakerPipelineParameterProperty where
+  type PropertyType "Value" SageMakerPipelineParameterProperty = Value Prelude.Text
+  set newValue SageMakerPipelineParameterProperty {..}
+    = SageMakerPipelineParameterProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs-boot b/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SageMakerPipelineParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.SageMakerPipelineParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SageMakerPipelineParameterProperty :: Prelude.Type
+instance ToResourceProperties SageMakerPipelineParameterProperty
+instance Prelude.Eq SageMakerPipelineParameterProperty
+instance Prelude.Show SageMakerPipelineParameterProperty
+instance JSON.ToJSON SageMakerPipelineParameterProperty
diff --git a/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs b/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.Events.Rule.SageMakerPipelineParametersProperty (
+        module Exports, SageMakerPipelineParametersProperty(..),
+        mkSageMakerPipelineParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.SageMakerPipelineParameterProperty as Exports
+import Stratosphere.ResourceProperties
+data SageMakerPipelineParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sagemakerpipelineparameters.html>
+    SageMakerPipelineParametersProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sagemakerpipelineparameters.html#cfn-events-rule-sagemakerpipelineparameters-pipelineparameterlist>
+                                         pipelineParameterList :: (Prelude.Maybe [SageMakerPipelineParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSageMakerPipelineParametersProperty ::
+  SageMakerPipelineParametersProperty
+mkSageMakerPipelineParametersProperty
+  = SageMakerPipelineParametersProperty
+      {haddock_workaround_ = (), pipelineParameterList = Prelude.Nothing}
+instance ToResourceProperties SageMakerPipelineParametersProperty where
+  toResourceProperties SageMakerPipelineParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.SageMakerPipelineParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "PipelineParameterList"
+                              Prelude.<$> pipelineParameterList])}
+instance JSON.ToJSON SageMakerPipelineParametersProperty where
+  toJSON SageMakerPipelineParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "PipelineParameterList"
+                 Prelude.<$> pipelineParameterList]))
+instance Property "PipelineParameterList" SageMakerPipelineParametersProperty where
+  type PropertyType "PipelineParameterList" SageMakerPipelineParametersProperty = [SageMakerPipelineParameterProperty]
+  set newValue SageMakerPipelineParametersProperty {..}
+    = SageMakerPipelineParametersProperty
+        {pipelineParameterList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SageMakerPipelineParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.SageMakerPipelineParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SageMakerPipelineParametersProperty :: Prelude.Type
+instance ToResourceProperties SageMakerPipelineParametersProperty
+instance Prelude.Eq SageMakerPipelineParametersProperty
+instance Prelude.Show SageMakerPipelineParametersProperty
+instance JSON.ToJSON SageMakerPipelineParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs b/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.Events.Rule.SqsParametersProperty (
+        SqsParametersProperty(..), mkSqsParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SqsParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html>
+    SqsParametersProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html#cfn-events-rule-sqsparameters-messagegroupid>
+                           messageGroupId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSqsParametersProperty ::
+  Value Prelude.Text -> SqsParametersProperty
+mkSqsParametersProperty messageGroupId
+  = SqsParametersProperty
+      {haddock_workaround_ = (), messageGroupId = messageGroupId}
+instance ToResourceProperties SqsParametersProperty where
+  toResourceProperties SqsParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.SqsParameters",
+         supportsTags = Prelude.False,
+         properties = ["MessageGroupId" JSON..= messageGroupId]}
+instance JSON.ToJSON SqsParametersProperty where
+  toJSON SqsParametersProperty {..}
+    = JSON.object ["MessageGroupId" JSON..= messageGroupId]
+instance Property "MessageGroupId" SqsParametersProperty where
+  type PropertyType "MessageGroupId" SqsParametersProperty = Value Prelude.Text
+  set newValue SqsParametersProperty {..}
+    = SqsParametersProperty {messageGroupId = newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs-boot b/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/SqsParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.SqsParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SqsParametersProperty :: Prelude.Type
+instance ToResourceProperties SqsParametersProperty
+instance Prelude.Eq SqsParametersProperty
+instance Prelude.Show SqsParametersProperty
+instance JSON.ToJSON SqsParametersProperty
diff --git a/gen/Stratosphere/Events/Rule/TargetProperty.hs b/gen/Stratosphere/Events/Rule/TargetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/TargetProperty.hs
@@ -0,0 +1,195 @@
+module Stratosphere.Events.Rule.TargetProperty (
+        module Exports, TargetProperty(..), mkTargetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.Events.Rule.AppSyncParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.BatchParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.DeadLetterConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.EcsParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.HttpParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.InputTransformerProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.KinesisParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.RedshiftDataParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.RetryPolicyProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.RunCommandParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.SageMakerPipelineParametersProperty as Exports
+import {-# SOURCE #-} Stratosphere.Events.Rule.SqsParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html>
+    TargetProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-appsyncparameters>
+                    appSyncParameters :: (Prelude.Maybe AppSyncParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-arn>
+                    arn :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-batchparameters>
+                    batchParameters :: (Prelude.Maybe BatchParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-deadletterconfig>
+                    deadLetterConfig :: (Prelude.Maybe DeadLetterConfigProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-ecsparameters>
+                    ecsParameters :: (Prelude.Maybe EcsParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-httpparameters>
+                    httpParameters :: (Prelude.Maybe HttpParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-id>
+                    id :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-input>
+                    input :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputpath>
+                    inputPath :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputtransformer>
+                    inputTransformer :: (Prelude.Maybe InputTransformerProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-kinesisparameters>
+                    kinesisParameters :: (Prelude.Maybe KinesisParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-redshiftdataparameters>
+                    redshiftDataParameters :: (Prelude.Maybe RedshiftDataParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-retrypolicy>
+                    retryPolicy :: (Prelude.Maybe RetryPolicyProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-rolearn>
+                    roleArn :: (Prelude.Maybe (Value Prelude.Text)),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-runcommandparameters>
+                    runCommandParameters :: (Prelude.Maybe RunCommandParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-sagemakerpipelineparameters>
+                    sageMakerPipelineParameters :: (Prelude.Maybe SageMakerPipelineParametersProperty),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-sqsparameters>
+                    sqsParameters :: (Prelude.Maybe SqsParametersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TargetProperty
+mkTargetProperty arn id
+  = TargetProperty
+      {haddock_workaround_ = (), arn = arn, id = id,
+       appSyncParameters = Prelude.Nothing,
+       batchParameters = Prelude.Nothing,
+       deadLetterConfig = Prelude.Nothing,
+       ecsParameters = Prelude.Nothing, httpParameters = Prelude.Nothing,
+       input = Prelude.Nothing, inputPath = Prelude.Nothing,
+       inputTransformer = Prelude.Nothing,
+       kinesisParameters = Prelude.Nothing,
+       redshiftDataParameters = Prelude.Nothing,
+       retryPolicy = Prelude.Nothing, roleArn = Prelude.Nothing,
+       runCommandParameters = Prelude.Nothing,
+       sageMakerPipelineParameters = Prelude.Nothing,
+       sqsParameters = Prelude.Nothing}
+instance ToResourceProperties TargetProperty where
+  toResourceProperties TargetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::Events::Rule.Target",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Arn" JSON..= arn, "Id" JSON..= id]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AppSyncParameters" Prelude.<$> appSyncParameters,
+                               (JSON..=) "BatchParameters" Prelude.<$> batchParameters,
+                               (JSON..=) "DeadLetterConfig" Prelude.<$> deadLetterConfig,
+                               (JSON..=) "EcsParameters" Prelude.<$> ecsParameters,
+                               (JSON..=) "HttpParameters" Prelude.<$> httpParameters,
+                               (JSON..=) "Input" Prelude.<$> input,
+                               (JSON..=) "InputPath" Prelude.<$> inputPath,
+                               (JSON..=) "InputTransformer" Prelude.<$> inputTransformer,
+                               (JSON..=) "KinesisParameters" Prelude.<$> kinesisParameters,
+                               (JSON..=) "RedshiftDataParameters"
+                                 Prelude.<$> redshiftDataParameters,
+                               (JSON..=) "RetryPolicy" Prelude.<$> retryPolicy,
+                               (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                               (JSON..=) "RunCommandParameters" Prelude.<$> runCommandParameters,
+                               (JSON..=) "SageMakerPipelineParameters"
+                                 Prelude.<$> sageMakerPipelineParameters,
+                               (JSON..=) "SqsParameters" Prelude.<$> sqsParameters]))}
+instance JSON.ToJSON TargetProperty where
+  toJSON TargetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Arn" JSON..= arn, "Id" JSON..= id]
+              (Prelude.catMaybes
+                 [(JSON..=) "AppSyncParameters" Prelude.<$> appSyncParameters,
+                  (JSON..=) "BatchParameters" Prelude.<$> batchParameters,
+                  (JSON..=) "DeadLetterConfig" Prelude.<$> deadLetterConfig,
+                  (JSON..=) "EcsParameters" Prelude.<$> ecsParameters,
+                  (JSON..=) "HttpParameters" Prelude.<$> httpParameters,
+                  (JSON..=) "Input" Prelude.<$> input,
+                  (JSON..=) "InputPath" Prelude.<$> inputPath,
+                  (JSON..=) "InputTransformer" Prelude.<$> inputTransformer,
+                  (JSON..=) "KinesisParameters" Prelude.<$> kinesisParameters,
+                  (JSON..=) "RedshiftDataParameters"
+                    Prelude.<$> redshiftDataParameters,
+                  (JSON..=) "RetryPolicy" Prelude.<$> retryPolicy,
+                  (JSON..=) "RoleArn" Prelude.<$> roleArn,
+                  (JSON..=) "RunCommandParameters" Prelude.<$> runCommandParameters,
+                  (JSON..=) "SageMakerPipelineParameters"
+                    Prelude.<$> sageMakerPipelineParameters,
+                  (JSON..=) "SqsParameters" Prelude.<$> sqsParameters])))
+instance Property "AppSyncParameters" TargetProperty where
+  type PropertyType "AppSyncParameters" TargetProperty = AppSyncParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {appSyncParameters = Prelude.pure newValue, ..}
+instance Property "Arn" TargetProperty where
+  type PropertyType "Arn" TargetProperty = Value Prelude.Text
+  set newValue TargetProperty {..}
+    = TargetProperty {arn = newValue, ..}
+instance Property "BatchParameters" TargetProperty where
+  type PropertyType "BatchParameters" TargetProperty = BatchParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {batchParameters = Prelude.pure newValue, ..}
+instance Property "DeadLetterConfig" TargetProperty where
+  type PropertyType "DeadLetterConfig" TargetProperty = DeadLetterConfigProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {deadLetterConfig = Prelude.pure newValue, ..}
+instance Property "EcsParameters" TargetProperty where
+  type PropertyType "EcsParameters" TargetProperty = EcsParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {ecsParameters = Prelude.pure newValue, ..}
+instance Property "HttpParameters" TargetProperty where
+  type PropertyType "HttpParameters" TargetProperty = HttpParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {httpParameters = Prelude.pure newValue, ..}
+instance Property "Id" TargetProperty where
+  type PropertyType "Id" TargetProperty = Value Prelude.Text
+  set newValue TargetProperty {..}
+    = TargetProperty {id = newValue, ..}
+instance Property "Input" TargetProperty where
+  type PropertyType "Input" TargetProperty = Value Prelude.Text
+  set newValue TargetProperty {..}
+    = TargetProperty {input = Prelude.pure newValue, ..}
+instance Property "InputPath" TargetProperty where
+  type PropertyType "InputPath" TargetProperty = Value Prelude.Text
+  set newValue TargetProperty {..}
+    = TargetProperty {inputPath = Prelude.pure newValue, ..}
+instance Property "InputTransformer" TargetProperty where
+  type PropertyType "InputTransformer" TargetProperty = InputTransformerProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {inputTransformer = Prelude.pure newValue, ..}
+instance Property "KinesisParameters" TargetProperty where
+  type PropertyType "KinesisParameters" TargetProperty = KinesisParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {kinesisParameters = Prelude.pure newValue, ..}
+instance Property "RedshiftDataParameters" TargetProperty where
+  type PropertyType "RedshiftDataParameters" TargetProperty = RedshiftDataParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty
+        {redshiftDataParameters = Prelude.pure newValue, ..}
+instance Property "RetryPolicy" TargetProperty where
+  type PropertyType "RetryPolicy" TargetProperty = RetryPolicyProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {retryPolicy = Prelude.pure newValue, ..}
+instance Property "RoleArn" TargetProperty where
+  type PropertyType "RoleArn" TargetProperty = Value Prelude.Text
+  set newValue TargetProperty {..}
+    = TargetProperty {roleArn = Prelude.pure newValue, ..}
+instance Property "RunCommandParameters" TargetProperty where
+  type PropertyType "RunCommandParameters" TargetProperty = RunCommandParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {runCommandParameters = Prelude.pure newValue, ..}
+instance Property "SageMakerPipelineParameters" TargetProperty where
+  type PropertyType "SageMakerPipelineParameters" TargetProperty = SageMakerPipelineParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty
+        {sageMakerPipelineParameters = Prelude.pure newValue, ..}
+instance Property "SqsParameters" TargetProperty where
+  type PropertyType "SqsParameters" TargetProperty = SqsParametersProperty
+  set newValue TargetProperty {..}
+    = TargetProperty {sqsParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/Events/Rule/TargetProperty.hs-boot b/gen/Stratosphere/Events/Rule/TargetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/Events/Rule/TargetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.Events.Rule.TargetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetProperty :: Prelude.Type
+instance ToResourceProperties TargetProperty
+instance Prelude.Eq TargetProperty
+instance Prelude.Show TargetProperty
+instance JSON.ToJSON TargetProperty
diff --git a/stratosphere-events.cabal b/stratosphere-events.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-events.cabal
@@ -0,0 +1,119 @@
+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-events
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS Events.
+description:    Integration into stratosphere to generate resources and properties for AWS Events
+category:       AWS, Cloud, Events
+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.Events.ApiDestination
+      Stratosphere.Events.Archive
+      Stratosphere.Events.Connection
+      Stratosphere.Events.Connection.ApiKeyAuthParametersProperty
+      Stratosphere.Events.Connection.AuthParametersProperty
+      Stratosphere.Events.Connection.BasicAuthParametersProperty
+      Stratosphere.Events.Connection.ClientParametersProperty
+      Stratosphere.Events.Connection.ConnectionHttpParametersProperty
+      Stratosphere.Events.Connection.ConnectivityParametersProperty
+      Stratosphere.Events.Connection.InvocationConnectivityParametersProperty
+      Stratosphere.Events.Connection.OAuthParametersProperty
+      Stratosphere.Events.Connection.ParameterProperty
+      Stratosphere.Events.Connection.ResourceParametersProperty
+      Stratosphere.Events.Endpoint
+      Stratosphere.Events.Endpoint.EndpointEventBusProperty
+      Stratosphere.Events.Endpoint.FailoverConfigProperty
+      Stratosphere.Events.Endpoint.PrimaryProperty
+      Stratosphere.Events.Endpoint.ReplicationConfigProperty
+      Stratosphere.Events.Endpoint.RoutingConfigProperty
+      Stratosphere.Events.Endpoint.SecondaryProperty
+      Stratosphere.Events.EventBus
+      Stratosphere.Events.EventBus.DeadLetterConfigProperty
+      Stratosphere.Events.EventBus.LogConfigProperty
+      Stratosphere.Events.EventBusPolicy
+      Stratosphere.Events.Rule
+      Stratosphere.Events.Rule.AppSyncParametersProperty
+      Stratosphere.Events.Rule.AwsVpcConfigurationProperty
+      Stratosphere.Events.Rule.BatchArrayPropertiesProperty
+      Stratosphere.Events.Rule.BatchParametersProperty
+      Stratosphere.Events.Rule.BatchRetryStrategyProperty
+      Stratosphere.Events.Rule.CapacityProviderStrategyItemProperty
+      Stratosphere.Events.Rule.DeadLetterConfigProperty
+      Stratosphere.Events.Rule.EcsParametersProperty
+      Stratosphere.Events.Rule.HttpParametersProperty
+      Stratosphere.Events.Rule.InputTransformerProperty
+      Stratosphere.Events.Rule.KinesisParametersProperty
+      Stratosphere.Events.Rule.NetworkConfigurationProperty
+      Stratosphere.Events.Rule.PlacementConstraintProperty
+      Stratosphere.Events.Rule.PlacementStrategyProperty
+      Stratosphere.Events.Rule.RedshiftDataParametersProperty
+      Stratosphere.Events.Rule.RetryPolicyProperty
+      Stratosphere.Events.Rule.RunCommandParametersProperty
+      Stratosphere.Events.Rule.RunCommandTargetProperty
+      Stratosphere.Events.Rule.SageMakerPipelineParameterProperty
+      Stratosphere.Events.Rule.SageMakerPipelineParametersProperty
+      Stratosphere.Events.Rule.SqsParametersProperty
+      Stratosphere.Events.Rule.TargetProperty
+  other-modules:
+      Paths_stratosphere_events
+  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
