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/EventSchemas/Discoverer.hs b/gen/Stratosphere/EventSchemas/Discoverer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Discoverer.hs
@@ -0,0 +1,65 @@
+module Stratosphere.EventSchemas.Discoverer (
+        module Exports, Discoverer(..), mkDiscoverer
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EventSchemas.Discoverer.TagsEntryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Discoverer
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-discoverer.html>
+    Discoverer {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-discoverer.html#cfn-eventschemas-discoverer-crossaccount>
+                crossAccount :: (Prelude.Maybe (Value Prelude.Bool)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-discoverer.html#cfn-eventschemas-discoverer-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-discoverer.html#cfn-eventschemas-discoverer-sourcearn>
+                sourceArn :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-discoverer.html#cfn-eventschemas-discoverer-tags>
+                tags :: (Prelude.Maybe [TagsEntryProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDiscoverer :: Value Prelude.Text -> Discoverer
+mkDiscoverer sourceArn
+  = Discoverer
+      {haddock_workaround_ = (), sourceArn = sourceArn,
+       crossAccount = Prelude.Nothing, description = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Discoverer where
+  toResourceProperties Discoverer {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Discoverer",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["SourceArn" JSON..= sourceArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CrossAccount" Prelude.<$> crossAccount,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Discoverer where
+  toJSON Discoverer {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["SourceArn" JSON..= sourceArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "CrossAccount" Prelude.<$> crossAccount,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "CrossAccount" Discoverer where
+  type PropertyType "CrossAccount" Discoverer = Value Prelude.Bool
+  set newValue Discoverer {..}
+    = Discoverer {crossAccount = Prelude.pure newValue, ..}
+instance Property "Description" Discoverer where
+  type PropertyType "Description" Discoverer = Value Prelude.Text
+  set newValue Discoverer {..}
+    = Discoverer {description = Prelude.pure newValue, ..}
+instance Property "SourceArn" Discoverer where
+  type PropertyType "SourceArn" Discoverer = Value Prelude.Text
+  set newValue Discoverer {..}
+    = Discoverer {sourceArn = newValue, ..}
+instance Property "Tags" Discoverer where
+  type PropertyType "Tags" Discoverer = [TagsEntryProperty]
+  set newValue Discoverer {..}
+    = Discoverer {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs b/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.EventSchemas.Discoverer.TagsEntryProperty (
+        TagsEntryProperty(..), mkTagsEntryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagsEntryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-discoverer-tagsentry.html>
+    TagsEntryProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-discoverer-tagsentry.html#cfn-eventschemas-discoverer-tagsentry-key>
+                       key :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-discoverer-tagsentry.html#cfn-eventschemas-discoverer-tagsentry-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagsEntryProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TagsEntryProperty
+mkTagsEntryProperty key value
+  = TagsEntryProperty
+      {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties TagsEntryProperty where
+  toResourceProperties TagsEntryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Discoverer.TagsEntry",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON TagsEntryProperty where
+  toJSON TagsEntryProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" TagsEntryProperty where
+  type PropertyType "Key" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {key = newValue, ..}
+instance Property "Value" TagsEntryProperty where
+  type PropertyType "Value" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs-boot b/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Discoverer/TagsEntryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EventSchemas.Discoverer.TagsEntryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagsEntryProperty :: Prelude.Type
+instance ToResourceProperties TagsEntryProperty
+instance Prelude.Eq TagsEntryProperty
+instance Prelude.Show TagsEntryProperty
+instance JSON.ToJSON TagsEntryProperty
diff --git a/gen/Stratosphere/EventSchemas/Registry.hs b/gen/Stratosphere/EventSchemas/Registry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Registry.hs
@@ -0,0 +1,54 @@
+module Stratosphere.EventSchemas.Registry (
+        module Exports, Registry(..), mkRegistry
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EventSchemas.Registry.TagsEntryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Registry
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registry.html>
+    Registry {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registry.html#cfn-eventschemas-registry-description>
+              description :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registry.html#cfn-eventschemas-registry-registryname>
+              registryName :: (Prelude.Maybe (Value Prelude.Text)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registry.html#cfn-eventschemas-registry-tags>
+              tags :: (Prelude.Maybe [TagsEntryProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegistry :: Registry
+mkRegistry
+  = Registry
+      {haddock_workaround_ = (), description = Prelude.Nothing,
+       registryName = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Registry where
+  toResourceProperties Registry {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Registry",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "RegistryName" Prelude.<$> registryName,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON Registry where
+  toJSON Registry {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "RegistryName" Prelude.<$> registryName,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "Description" Registry where
+  type PropertyType "Description" Registry = Value Prelude.Text
+  set newValue Registry {..}
+    = Registry {description = Prelude.pure newValue, ..}
+instance Property "RegistryName" Registry where
+  type PropertyType "RegistryName" Registry = Value Prelude.Text
+  set newValue Registry {..}
+    = Registry {registryName = Prelude.pure newValue, ..}
+instance Property "Tags" Registry where
+  type PropertyType "Tags" Registry = [TagsEntryProperty]
+  set newValue Registry {..}
+    = Registry {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs b/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.EventSchemas.Registry.TagsEntryProperty (
+        TagsEntryProperty(..), mkTagsEntryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagsEntryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-registry-tagsentry.html>
+    TagsEntryProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-registry-tagsentry.html#cfn-eventschemas-registry-tagsentry-key>
+                       key :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-registry-tagsentry.html#cfn-eventschemas-registry-tagsentry-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagsEntryProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TagsEntryProperty
+mkTagsEntryProperty key value
+  = TagsEntryProperty
+      {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties TagsEntryProperty where
+  toResourceProperties TagsEntryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Registry.TagsEntry",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON TagsEntryProperty where
+  toJSON TagsEntryProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" TagsEntryProperty where
+  type PropertyType "Key" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {key = newValue, ..}
+instance Property "Value" TagsEntryProperty where
+  type PropertyType "Value" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs-boot b/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Registry/TagsEntryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EventSchemas.Registry.TagsEntryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagsEntryProperty :: Prelude.Type
+instance ToResourceProperties TagsEntryProperty
+instance Prelude.Eq TagsEntryProperty
+instance Prelude.Show TagsEntryProperty
+instance JSON.ToJSON TagsEntryProperty
diff --git a/gen/Stratosphere/EventSchemas/RegistryPolicy.hs b/gen/Stratosphere/EventSchemas/RegistryPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/RegistryPolicy.hs
@@ -0,0 +1,54 @@
+module Stratosphere.EventSchemas.RegistryPolicy (
+        RegistryPolicy(..), mkRegistryPolicy
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RegistryPolicy
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registrypolicy.html>
+    RegistryPolicy {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registrypolicy.html#cfn-eventschemas-registrypolicy-policy>
+                    policy :: JSON.Object,
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registrypolicy.html#cfn-eventschemas-registrypolicy-registryname>
+                    registryName :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-registrypolicy.html#cfn-eventschemas-registrypolicy-revisionid>
+                    revisionId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRegistryPolicy ::
+  JSON.Object -> Value Prelude.Text -> RegistryPolicy
+mkRegistryPolicy policy registryName
+  = RegistryPolicy
+      {haddock_workaround_ = (), policy = policy,
+       registryName = registryName, revisionId = Prelude.Nothing}
+instance ToResourceProperties RegistryPolicy where
+  toResourceProperties RegistryPolicy {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::RegistryPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Policy" JSON..= policy, "RegistryName" JSON..= registryName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "RevisionId" Prelude.<$> revisionId]))}
+instance JSON.ToJSON RegistryPolicy where
+  toJSON RegistryPolicy {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Policy" JSON..= policy, "RegistryName" JSON..= registryName]
+              (Prelude.catMaybes
+                 [(JSON..=) "RevisionId" Prelude.<$> revisionId])))
+instance Property "Policy" RegistryPolicy where
+  type PropertyType "Policy" RegistryPolicy = JSON.Object
+  set newValue RegistryPolicy {..}
+    = RegistryPolicy {policy = newValue, ..}
+instance Property "RegistryName" RegistryPolicy where
+  type PropertyType "RegistryName" RegistryPolicy = Value Prelude.Text
+  set newValue RegistryPolicy {..}
+    = RegistryPolicy {registryName = newValue, ..}
+instance Property "RevisionId" RegistryPolicy where
+  type PropertyType "RevisionId" RegistryPolicy = Value Prelude.Text
+  set newValue RegistryPolicy {..}
+    = RegistryPolicy {revisionId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Schema.hs b/gen/Stratosphere/EventSchemas/Schema.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Schema.hs
@@ -0,0 +1,79 @@
+module Stratosphere.EventSchemas.Schema (
+        module Exports, Schema(..), mkSchema
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.EventSchemas.Schema.TagsEntryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Schema
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html>
+    Schema {haddock_workaround_ :: (),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-content>
+            content :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-description>
+            description :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-registryname>
+            registryName :: (Value Prelude.Text),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-schemaname>
+            schemaName :: (Prelude.Maybe (Value Prelude.Text)),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-tags>
+            tags :: (Prelude.Maybe [TagsEntryProperty]),
+            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eventschemas-schema.html#cfn-eventschemas-schema-type>
+            type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSchema ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> Schema
+mkSchema content registryName type'
+  = Schema
+      {haddock_workaround_ = (), content = content,
+       registryName = registryName, type' = type',
+       description = Prelude.Nothing, schemaName = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Schema where
+  toResourceProperties Schema {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Schema",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Content" JSON..= content, "RegistryName" JSON..= registryName,
+                            "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "SchemaName" Prelude.<$> schemaName,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Schema where
+  toJSON Schema {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Content" JSON..= content, "RegistryName" JSON..= registryName,
+               "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "SchemaName" Prelude.<$> schemaName,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Content" Schema where
+  type PropertyType "Content" Schema = Value Prelude.Text
+  set newValue Schema {..} = Schema {content = newValue, ..}
+instance Property "Description" Schema where
+  type PropertyType "Description" Schema = Value Prelude.Text
+  set newValue Schema {..}
+    = Schema {description = Prelude.pure newValue, ..}
+instance Property "RegistryName" Schema where
+  type PropertyType "RegistryName" Schema = Value Prelude.Text
+  set newValue Schema {..} = Schema {registryName = newValue, ..}
+instance Property "SchemaName" Schema where
+  type PropertyType "SchemaName" Schema = Value Prelude.Text
+  set newValue Schema {..}
+    = Schema {schemaName = Prelude.pure newValue, ..}
+instance Property "Tags" Schema where
+  type PropertyType "Tags" Schema = [TagsEntryProperty]
+  set newValue Schema {..}
+    = Schema {tags = Prelude.pure newValue, ..}
+instance Property "Type" Schema where
+  type PropertyType "Type" Schema = Value Prelude.Text
+  set newValue Schema {..} = Schema {type' = newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs b/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.EventSchemas.Schema.TagsEntryProperty (
+        TagsEntryProperty(..), mkTagsEntryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagsEntryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-schema-tagsentry.html>
+    TagsEntryProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-schema-tagsentry.html#cfn-eventschemas-schema-tagsentry-key>
+                       key :: (Value Prelude.Text),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eventschemas-schema-tagsentry.html#cfn-eventschemas-schema-tagsentry-value>
+                       value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagsEntryProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> TagsEntryProperty
+mkTagsEntryProperty key value
+  = TagsEntryProperty
+      {haddock_workaround_ = (), key = key, value = value}
+instance ToResourceProperties TagsEntryProperty where
+  toResourceProperties TagsEntryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::EventSchemas::Schema.TagsEntry",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key, "Value" JSON..= value]}
+instance JSON.ToJSON TagsEntryProperty where
+  toJSON TagsEntryProperty {..}
+    = JSON.object ["Key" JSON..= key, "Value" JSON..= value]
+instance Property "Key" TagsEntryProperty where
+  type PropertyType "Key" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {key = newValue, ..}
+instance Property "Value" TagsEntryProperty where
+  type PropertyType "Value" TagsEntryProperty = Value Prelude.Text
+  set newValue TagsEntryProperty {..}
+    = TagsEntryProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs-boot b/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/EventSchemas/Schema/TagsEntryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.EventSchemas.Schema.TagsEntryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagsEntryProperty :: Prelude.Type
+instance ToResourceProperties TagsEntryProperty
+instance Prelude.Eq TagsEntryProperty
+instance Prelude.Show TagsEntryProperty
+instance JSON.ToJSON TagsEntryProperty
diff --git a/stratosphere-eventschemas.cabal b/stratosphere-eventschemas.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-eventschemas.cabal
@@ -0,0 +1,79 @@
+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-eventschemas
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS EventSchemas.
+description:    Integration into stratosphere to generate resources and properties for AWS EventSchemas
+category:       AWS, Cloud, EventSchemas
+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.EventSchemas.Discoverer
+      Stratosphere.EventSchemas.Discoverer.TagsEntryProperty
+      Stratosphere.EventSchemas.Registry
+      Stratosphere.EventSchemas.Registry.TagsEntryProperty
+      Stratosphere.EventSchemas.RegistryPolicy
+      Stratosphere.EventSchemas.Schema
+      Stratosphere.EventSchemas.Schema.TagsEntryProperty
+  other-modules:
+      Paths_stratosphere_eventschemas
+  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
