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/CertificateManager/Account.hs b/gen/Stratosphere/CertificateManager/Account.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Account.hs
@@ -0,0 +1,34 @@
+module Stratosphere.CertificateManager.Account (
+        module Exports, Account(..), mkAccount
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CertificateManager.Account.ExpiryEventsConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data Account
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-account.html>
+    Account {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-account.html#cfn-certificatemanager-account-expiryeventsconfiguration>
+             expiryEventsConfiguration :: ExpiryEventsConfigurationProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAccount :: ExpiryEventsConfigurationProperty -> Account
+mkAccount expiryEventsConfiguration
+  = Account
+      {haddock_workaround_ = (),
+       expiryEventsConfiguration = expiryEventsConfiguration}
+instance ToResourceProperties Account where
+  toResourceProperties Account {..}
+    = ResourceProperties
+        {awsType = "AWS::CertificateManager::Account",
+         supportsTags = Prelude.False,
+         properties = ["ExpiryEventsConfiguration"
+                         JSON..= expiryEventsConfiguration]}
+instance JSON.ToJSON Account where
+  toJSON Account {..}
+    = JSON.object
+        ["ExpiryEventsConfiguration" JSON..= expiryEventsConfiguration]
+instance Property "ExpiryEventsConfiguration" Account where
+  type PropertyType "ExpiryEventsConfiguration" Account = ExpiryEventsConfigurationProperty
+  set newValue Account {..}
+    = Account {expiryEventsConfiguration = newValue, ..}
diff --git a/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs b/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CertificateManager.Account.ExpiryEventsConfigurationProperty (
+        ExpiryEventsConfigurationProperty(..),
+        mkExpiryEventsConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ExpiryEventsConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-account-expiryeventsconfiguration.html>
+    ExpiryEventsConfigurationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-account-expiryeventsconfiguration.html#cfn-certificatemanager-account-expiryeventsconfiguration-daysbeforeexpiry>
+                                       daysBeforeExpiry :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkExpiryEventsConfigurationProperty ::
+  ExpiryEventsConfigurationProperty
+mkExpiryEventsConfigurationProperty
+  = ExpiryEventsConfigurationProperty
+      {haddock_workaround_ = (), daysBeforeExpiry = Prelude.Nothing}
+instance ToResourceProperties ExpiryEventsConfigurationProperty where
+  toResourceProperties ExpiryEventsConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CertificateManager::Account.ExpiryEventsConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DaysBeforeExpiry" Prelude.<$> daysBeforeExpiry])}
+instance JSON.ToJSON ExpiryEventsConfigurationProperty where
+  toJSON ExpiryEventsConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DaysBeforeExpiry" Prelude.<$> daysBeforeExpiry]))
+instance Property "DaysBeforeExpiry" ExpiryEventsConfigurationProperty where
+  type PropertyType "DaysBeforeExpiry" ExpiryEventsConfigurationProperty = Value Prelude.Integer
+  set newValue ExpiryEventsConfigurationProperty {..}
+    = ExpiryEventsConfigurationProperty
+        {daysBeforeExpiry = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs-boot b/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Account/ExpiryEventsConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CertificateManager.Account.ExpiryEventsConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ExpiryEventsConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ExpiryEventsConfigurationProperty
+instance Prelude.Eq ExpiryEventsConfigurationProperty
+instance Prelude.Show ExpiryEventsConfigurationProperty
+instance JSON.ToJSON ExpiryEventsConfigurationProperty
diff --git a/gen/Stratosphere/CertificateManager/Certificate.hs b/gen/Stratosphere/CertificateManager/Certificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Certificate.hs
@@ -0,0 +1,121 @@
+module Stratosphere.CertificateManager.Certificate (
+        module Exports, Certificate(..), mkCertificate
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CertificateManager.Certificate.DomainValidationOptionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Certificate
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html>
+    Certificate {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-certificateauthorityarn>
+                 certificateAuthorityArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-certificateexport>
+                 certificateExport :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-certificatetransparencyloggingpreference>
+                 certificateTransparencyLoggingPreference :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-domainname>
+                 domainName :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-domainvalidationoptions>
+                 domainValidationOptions :: (Prelude.Maybe [DomainValidationOptionProperty]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-keyalgorithm>
+                 keyAlgorithm :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-subjectalternativenames>
+                 subjectAlternativeNames :: (Prelude.Maybe (ValueList Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-tags>
+                 tags :: (Prelude.Maybe [Tag]),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-validationmethod>
+                 validationMethod :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCertificate :: Value Prelude.Text -> Certificate
+mkCertificate domainName
+  = Certificate
+      {haddock_workaround_ = (), domainName = domainName,
+       certificateAuthorityArn = Prelude.Nothing,
+       certificateExport = Prelude.Nothing,
+       certificateTransparencyLoggingPreference = Prelude.Nothing,
+       domainValidationOptions = Prelude.Nothing,
+       keyAlgorithm = Prelude.Nothing,
+       subjectAlternativeNames = Prelude.Nothing, tags = Prelude.Nothing,
+       validationMethod = Prelude.Nothing}
+instance ToResourceProperties Certificate where
+  toResourceProperties Certificate {..}
+    = ResourceProperties
+        {awsType = "AWS::CertificateManager::Certificate",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CertificateAuthorityArn"
+                                 Prelude.<$> certificateAuthorityArn,
+                               (JSON..=) "CertificateExport" Prelude.<$> certificateExport,
+                               (JSON..=) "CertificateTransparencyLoggingPreference"
+                                 Prelude.<$> certificateTransparencyLoggingPreference,
+                               (JSON..=) "DomainValidationOptions"
+                                 Prelude.<$> domainValidationOptions,
+                               (JSON..=) "KeyAlgorithm" Prelude.<$> keyAlgorithm,
+                               (JSON..=) "SubjectAlternativeNames"
+                                 Prelude.<$> subjectAlternativeNames,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "ValidationMethod" Prelude.<$> validationMethod]))}
+instance JSON.ToJSON Certificate where
+  toJSON Certificate {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName]
+              (Prelude.catMaybes
+                 [(JSON..=) "CertificateAuthorityArn"
+                    Prelude.<$> certificateAuthorityArn,
+                  (JSON..=) "CertificateExport" Prelude.<$> certificateExport,
+                  (JSON..=) "CertificateTransparencyLoggingPreference"
+                    Prelude.<$> certificateTransparencyLoggingPreference,
+                  (JSON..=) "DomainValidationOptions"
+                    Prelude.<$> domainValidationOptions,
+                  (JSON..=) "KeyAlgorithm" Prelude.<$> keyAlgorithm,
+                  (JSON..=) "SubjectAlternativeNames"
+                    Prelude.<$> subjectAlternativeNames,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "ValidationMethod" Prelude.<$> validationMethod])))
+instance Property "CertificateAuthorityArn" Certificate where
+  type PropertyType "CertificateAuthorityArn" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {certificateAuthorityArn = Prelude.pure newValue, ..}
+instance Property "CertificateExport" Certificate where
+  type PropertyType "CertificateExport" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {certificateExport = Prelude.pure newValue, ..}
+instance Property "CertificateTransparencyLoggingPreference" Certificate where
+  type PropertyType "CertificateTransparencyLoggingPreference" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate
+        {certificateTransparencyLoggingPreference = Prelude.pure newValue,
+         ..}
+instance Property "DomainName" Certificate where
+  type PropertyType "DomainName" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {domainName = newValue, ..}
+instance Property "DomainValidationOptions" Certificate where
+  type PropertyType "DomainValidationOptions" Certificate = [DomainValidationOptionProperty]
+  set newValue Certificate {..}
+    = Certificate {domainValidationOptions = Prelude.pure newValue, ..}
+instance Property "KeyAlgorithm" Certificate where
+  type PropertyType "KeyAlgorithm" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {keyAlgorithm = Prelude.pure newValue, ..}
+instance Property "SubjectAlternativeNames" Certificate where
+  type PropertyType "SubjectAlternativeNames" Certificate = ValueList Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {subjectAlternativeNames = Prelude.pure newValue, ..}
+instance Property "Tags" Certificate where
+  type PropertyType "Tags" Certificate = [Tag]
+  set newValue Certificate {..}
+    = Certificate {tags = Prelude.pure newValue, ..}
+instance Property "ValidationMethod" Certificate where
+  type PropertyType "ValidationMethod" Certificate = Value Prelude.Text
+  set newValue Certificate {..}
+    = Certificate {validationMethod = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs b/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.CertificateManager.Certificate.DomainValidationOptionProperty (
+        DomainValidationOptionProperty(..),
+        mkDomainValidationOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainValidationOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html>
+    DomainValidationOptionProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html#cfn-certificatemanager-certificate-domainvalidationoptions-domainname>
+                                    domainName :: (Value Prelude.Text),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html#cfn-certificatemanager-certificate-domainvalidationoption-hostedzoneid>
+                                    hostedZoneId :: (Prelude.Maybe (Value Prelude.Text)),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html#cfn-certificatemanager-certificate-domainvalidationoption-validationdomain>
+                                    validationDomain :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainValidationOptionProperty ::
+  Value Prelude.Text -> DomainValidationOptionProperty
+mkDomainValidationOptionProperty domainName
+  = DomainValidationOptionProperty
+      {haddock_workaround_ = (), domainName = domainName,
+       hostedZoneId = Prelude.Nothing, validationDomain = Prelude.Nothing}
+instance ToResourceProperties DomainValidationOptionProperty where
+  toResourceProperties DomainValidationOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CertificateManager::Certificate.DomainValidationOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "HostedZoneId" Prelude.<$> hostedZoneId,
+                               (JSON..=) "ValidationDomain" Prelude.<$> validationDomain]))}
+instance JSON.ToJSON DomainValidationOptionProperty where
+  toJSON DomainValidationOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName]
+              (Prelude.catMaybes
+                 [(JSON..=) "HostedZoneId" Prelude.<$> hostedZoneId,
+                  (JSON..=) "ValidationDomain" Prelude.<$> validationDomain])))
+instance Property "DomainName" DomainValidationOptionProperty where
+  type PropertyType "DomainName" DomainValidationOptionProperty = Value Prelude.Text
+  set newValue DomainValidationOptionProperty {..}
+    = DomainValidationOptionProperty {domainName = newValue, ..}
+instance Property "HostedZoneId" DomainValidationOptionProperty where
+  type PropertyType "HostedZoneId" DomainValidationOptionProperty = Value Prelude.Text
+  set newValue DomainValidationOptionProperty {..}
+    = DomainValidationOptionProperty
+        {hostedZoneId = Prelude.pure newValue, ..}
+instance Property "ValidationDomain" DomainValidationOptionProperty where
+  type PropertyType "ValidationDomain" DomainValidationOptionProperty = Value Prelude.Text
+  set newValue DomainValidationOptionProperty {..}
+    = DomainValidationOptionProperty
+        {validationDomain = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs-boot b/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CertificateManager/Certificate/DomainValidationOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CertificateManager.Certificate.DomainValidationOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainValidationOptionProperty :: Prelude.Type
+instance ToResourceProperties DomainValidationOptionProperty
+instance Prelude.Eq DomainValidationOptionProperty
+instance Prelude.Show DomainValidationOptionProperty
+instance JSON.ToJSON DomainValidationOptionProperty
diff --git a/stratosphere-certificatemanager.cabal b/stratosphere-certificatemanager.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-certificatemanager.cabal
@@ -0,0 +1,76 @@
+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-certificatemanager
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS CertificateManager.
+description:    Integration into stratosphere to generate resources and properties for AWS CertificateManager
+category:       AWS, Cloud, CertificateManager
+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.CertificateManager.Account
+      Stratosphere.CertificateManager.Account.ExpiryEventsConfigurationProperty
+      Stratosphere.CertificateManager.Certificate
+      Stratosphere.CertificateManager.Certificate.DomainValidationOptionProperty
+  other-modules:
+      Paths_stratosphere_certificatemanager
+  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
