diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
 # Change Log
 
+## 0.22.2
+
+* Update resource specification document to version 2.2.0
+
+## 0.22.1
+
+* Update resource specification document to version 2.1.0
+
+## 0.22.0
+
+* Bug fix: `AWSTemplateFormatVersion` was being formatted incorrectly in JSON.
+
 ## 0.21.0
 
 * Update resource specification document to some new unspecified version.
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncGraphQLApiOpenIDConnectConfig.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncGraphQLApiOpenIDConnectConfig. See
+-- 'appSyncGraphQLApiOpenIDConnectConfig' for a more convenient constructor.
+data AppSyncGraphQLApiOpenIDConnectConfig =
+  AppSyncGraphQLApiOpenIDConnectConfig
+  { _appSyncGraphQLApiOpenIDConnectConfigAuthTTL :: Maybe (Val Double)
+  , _appSyncGraphQLApiOpenIDConnectConfigClientId :: Maybe (Val Text)
+  , _appSyncGraphQLApiOpenIDConnectConfigIatTTL :: Maybe (Val Double)
+  , _appSyncGraphQLApiOpenIDConnectConfigIssuer :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncGraphQLApiOpenIDConnectConfig where
+  toJSON AppSyncGraphQLApiOpenIDConnectConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("AuthTTL",) . toJSON . fmap Double') _appSyncGraphQLApiOpenIDConnectConfigAuthTTL
+    , fmap (("ClientId",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfigClientId
+    , fmap (("IatTTL",) . toJSON . fmap Double') _appSyncGraphQLApiOpenIDConnectConfigIatTTL
+    , fmap (("Issuer",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfigIssuer
+    ]
+
+instance FromJSON AppSyncGraphQLApiOpenIDConnectConfig where
+  parseJSON (Object obj) =
+    AppSyncGraphQLApiOpenIDConnectConfig <$>
+      fmap (fmap (fmap unDouble')) (obj .:? "AuthTTL") <*>
+      (obj .:? "ClientId") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "IatTTL") <*>
+      (obj .:? "Issuer")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncGraphQLApiOpenIDConnectConfig' containing
+-- required fields as arguments.
+appSyncGraphQLApiOpenIDConnectConfig
+  :: AppSyncGraphQLApiOpenIDConnectConfig
+appSyncGraphQLApiOpenIDConnectConfig  =
+  AppSyncGraphQLApiOpenIDConnectConfig
+  { _appSyncGraphQLApiOpenIDConnectConfigAuthTTL = Nothing
+  , _appSyncGraphQLApiOpenIDConnectConfigClientId = Nothing
+  , _appSyncGraphQLApiOpenIDConnectConfigIatTTL = Nothing
+  , _appSyncGraphQLApiOpenIDConnectConfigIssuer = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html#cfn-appsync-graphqlapi-openidconnectconfig-authttl
+asgqlaoidccAuthTTL :: Lens' AppSyncGraphQLApiOpenIDConnectConfig (Maybe (Val Double))
+asgqlaoidccAuthTTL = lens _appSyncGraphQLApiOpenIDConnectConfigAuthTTL (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfigAuthTTL = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html#cfn-appsync-graphqlapi-openidconnectconfig-clientid
+asgqlaoidccClientId :: Lens' AppSyncGraphQLApiOpenIDConnectConfig (Maybe (Val Text))
+asgqlaoidccClientId = lens _appSyncGraphQLApiOpenIDConnectConfigClientId (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfigClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html#cfn-appsync-graphqlapi-openidconnectconfig-iatttl
+asgqlaoidccIatTTL :: Lens' AppSyncGraphQLApiOpenIDConnectConfig (Maybe (Val Double))
+asgqlaoidccIatTTL = lens _appSyncGraphQLApiOpenIDConnectConfigIatTTL (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfigIatTTL = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-openidconnectconfig.html#cfn-appsync-graphqlapi-openidconnectconfig-issuer
+asgqlaoidccIssuer :: Lens' AppSyncGraphQLApiOpenIDConnectConfig (Maybe (Val Text))
+asgqlaoidccIssuer = lens _appSyncGraphQLApiOpenIDConnectConfigIssuer (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfigIssuer = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterCondition.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html
+
+module Stratosphere.ResourceProperties.GuardDutyFilterCondition where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for GuardDutyFilterCondition. See
+-- 'guardDutyFilterCondition' for a more convenient constructor.
+data GuardDutyFilterCondition =
+  GuardDutyFilterCondition
+  { _guardDutyFilterConditionEq :: Maybe (ValList Text)
+  , _guardDutyFilterConditionGte :: Maybe (Val Integer)
+  , _guardDutyFilterConditionLt :: Maybe (Val Integer)
+  , _guardDutyFilterConditionLte :: Maybe (Val Integer)
+  , _guardDutyFilterConditionNeq :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GuardDutyFilterCondition where
+  toJSON GuardDutyFilterCondition{..} =
+    object $
+    catMaybes
+    [ fmap (("Eq",) . toJSON) _guardDutyFilterConditionEq
+    , fmap (("Gte",) . toJSON . fmap Integer') _guardDutyFilterConditionGte
+    , fmap (("Lt",) . toJSON . fmap Integer') _guardDutyFilterConditionLt
+    , fmap (("Lte",) . toJSON . fmap Integer') _guardDutyFilterConditionLte
+    , fmap (("Neq",) . toJSON) _guardDutyFilterConditionNeq
+    ]
+
+instance FromJSON GuardDutyFilterCondition where
+  parseJSON (Object obj) =
+    GuardDutyFilterCondition <$>
+      (obj .:? "Eq") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Gte") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Lt") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Lte") <*>
+      (obj .:? "Neq")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GuardDutyFilterCondition' containing required fields as
+-- arguments.
+guardDutyFilterCondition
+  :: GuardDutyFilterCondition
+guardDutyFilterCondition  =
+  GuardDutyFilterCondition
+  { _guardDutyFilterConditionEq = Nothing
+  , _guardDutyFilterConditionGte = Nothing
+  , _guardDutyFilterConditionLt = Nothing
+  , _guardDutyFilterConditionLte = Nothing
+  , _guardDutyFilterConditionNeq = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html#cfn-guardduty-filter-condition-eq
+gdfcEq :: Lens' GuardDutyFilterCondition (Maybe (ValList Text))
+gdfcEq = lens _guardDutyFilterConditionEq (\s a -> s { _guardDutyFilterConditionEq = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html#cfn-guardduty-filter-condition-gte
+gdfcGte :: Lens' GuardDutyFilterCondition (Maybe (Val Integer))
+gdfcGte = lens _guardDutyFilterConditionGte (\s a -> s { _guardDutyFilterConditionGte = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html#cfn-guardduty-filter-condition-lt
+gdfcLt :: Lens' GuardDutyFilterCondition (Maybe (Val Integer))
+gdfcLt = lens _guardDutyFilterConditionLt (\s a -> s { _guardDutyFilterConditionLt = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html#cfn-guardduty-filter-condition-lte
+gdfcLte :: Lens' GuardDutyFilterCondition (Maybe (Val Integer))
+gdfcLte = lens _guardDutyFilterConditionLte (\s a -> s { _guardDutyFilterConditionLte = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-condition.html#cfn-guardduty-filter-condition-neq
+gdfcNeq :: Lens' GuardDutyFilterCondition (Maybe (ValList Text))
+gdfcNeq = lens _guardDutyFilterConditionNeq (\s a -> s { _guardDutyFilterConditionNeq = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GuardDutyFilterFindingCriteria.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-findingcriteria.html
+
+module Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.GuardDutyFilterCondition
+
+-- | Full data type definition for GuardDutyFilterFindingCriteria. See
+-- 'guardDutyFilterFindingCriteria' for a more convenient constructor.
+data GuardDutyFilterFindingCriteria =
+  GuardDutyFilterFindingCriteria
+  { _guardDutyFilterFindingCriteriaCriterion :: Maybe Object
+  , _guardDutyFilterFindingCriteriaItemType :: Maybe GuardDutyFilterCondition
+  } deriving (Show, Eq)
+
+instance ToJSON GuardDutyFilterFindingCriteria where
+  toJSON GuardDutyFilterFindingCriteria{..} =
+    object $
+    catMaybes
+    [ fmap (("Criterion",) . toJSON) _guardDutyFilterFindingCriteriaCriterion
+    , fmap (("ItemType",) . toJSON) _guardDutyFilterFindingCriteriaItemType
+    ]
+
+instance FromJSON GuardDutyFilterFindingCriteria where
+  parseJSON (Object obj) =
+    GuardDutyFilterFindingCriteria <$>
+      (obj .:? "Criterion") <*>
+      (obj .:? "ItemType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GuardDutyFilterFindingCriteria' containing required
+-- fields as arguments.
+guardDutyFilterFindingCriteria
+  :: GuardDutyFilterFindingCriteria
+guardDutyFilterFindingCriteria  =
+  GuardDutyFilterFindingCriteria
+  { _guardDutyFilterFindingCriteriaCriterion = Nothing
+  , _guardDutyFilterFindingCriteriaItemType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-findingcriteria.html#cfn-guardduty-filter-findingcriteria-criterion
+gdffcCriterion :: Lens' GuardDutyFilterFindingCriteria (Maybe Object)
+gdffcCriterion = lens _guardDutyFilterFindingCriteriaCriterion (\s a -> s { _guardDutyFilterFindingCriteriaCriterion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-guardduty-filter-findingcriteria.html#cfn-guardduty-filter-findingcriteria-itemtype
+gdffcItemType :: Lens' GuardDutyFilterFindingCriteria (Maybe GuardDutyFilterCondition)
+gdffcItemType = lens _guardDutyFilterFindingCriteriaItemType (\s a -> s { _guardDutyFilterFindingCriteriaItemType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProvisionedProductProvisioningParameter.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html
+
+module Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ServiceCatalogCloudFormationProvisionedProductProvisioningParameter. See
+-- 'serviceCatalogCloudFormationProvisionedProductProvisioningParameter' for
+-- a more convenient constructor.
+data ServiceCatalogCloudFormationProvisionedProductProvisioningParameter =
+  ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
+  { _serviceCatalogCloudFormationProvisionedProductProvisioningParameterKey :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningParameterValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogCloudFormationProvisionedProductProvisioningParameter where
+  toJSON ServiceCatalogCloudFormationProvisionedProductProvisioningParameter{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningParameterKey
+    , fmap (("Value",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningParameterValue
+    ]
+
+instance FromJSON ServiceCatalogCloudFormationProvisionedProductProvisioningParameter where
+  parseJSON (Object obj) =
+    ServiceCatalogCloudFormationProvisionedProductProvisioningParameter <$>
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ServiceCatalogCloudFormationProvisionedProductProvisioningParameter'
+-- containing required fields as arguments.
+serviceCatalogCloudFormationProvisionedProductProvisioningParameter
+  :: ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
+serviceCatalogCloudFormationProvisionedProductProvisioningParameter  =
+  ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
+  { _serviceCatalogCloudFormationProvisionedProductProvisioningParameterKey = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningParameterValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-key
+sccfppppKey :: Lens' ServiceCatalogCloudFormationProvisionedProductProvisioningParameter (Maybe (Val Text))
+sccfppppKey = lens _serviceCatalogCloudFormationProvisionedProductProvisioningParameterKey (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisioningParameterKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-value
+sccfppppValue :: Lens' ServiceCatalogCloudFormationProvisionedProductProvisioningParameter (Maybe (Val Text))
+sccfppppValue = lens _serviceCatalogCloudFormationProvisionedProductProvisioningParameterValue (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisioningParameterValue = a })
diff --git a/library-gen/Stratosphere/Resources.hs b/library-gen/Stratosphere/Resources.hs
--- a/library-gen/Stratosphere/Resources.hs
+++ b/library-gen/Stratosphere/Resources.hs
@@ -206,6 +206,7 @@
 import Stratosphere.Resources.GlueTable as X
 import Stratosphere.Resources.GlueTrigger as X
 import Stratosphere.Resources.GuardDutyDetector as X
+import Stratosphere.Resources.GuardDutyFilter as X
 import Stratosphere.Resources.GuardDutyIPSet as X
 import Stratosphere.Resources.GuardDutyMaster as X
 import Stratosphere.Resources.GuardDutyMember as X
@@ -288,6 +289,7 @@
 import Stratosphere.Resources.SSMMaintenanceWindowTask as X
 import Stratosphere.Resources.SSMParameter as X
 import Stratosphere.Resources.SSMPatchBaseline as X
+import Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct as X
 import Stratosphere.Resources.ServiceDiscoveryInstance as X
 import Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace as X
 import Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace as X
@@ -328,6 +330,7 @@
 import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig as X
+import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction as X
@@ -641,6 +644,8 @@
 import Stratosphere.ResourceProperties.GlueTriggerAction as X
 import Stratosphere.ResourceProperties.GlueTriggerCondition as X
 import Stratosphere.ResourceProperties.GlueTriggerPredicate as X
+import Stratosphere.ResourceProperties.GuardDutyFilterCondition as X
+import Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria as X
 import Stratosphere.ResourceProperties.IAMGroupPolicy as X
 import Stratosphere.ResourceProperties.IAMRolePolicy as X
 import Stratosphere.ResourceProperties.IAMUserLoginProfile as X
@@ -816,6 +821,7 @@
 import Stratosphere.ResourceProperties.SSMPatchBaselinePatchSource as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig as X
@@ -1014,6 +1020,7 @@
   | GlueTableProperties GlueTable
   | GlueTriggerProperties GlueTrigger
   | GuardDutyDetectorProperties GuardDutyDetector
+  | GuardDutyFilterProperties GuardDutyFilter
   | GuardDutyIPSetProperties GuardDutyIPSet
   | GuardDutyMasterProperties GuardDutyMaster
   | GuardDutyMemberProperties GuardDutyMember
@@ -1096,6 +1103,7 @@
   | SSMMaintenanceWindowTaskProperties SSMMaintenanceWindowTask
   | SSMParameterProperties SSMParameter
   | SSMPatchBaselineProperties SSMPatchBaseline
+  | ServiceCatalogCloudFormationProvisionedProductProperties ServiceCatalogCloudFormationProvisionedProduct
   | ServiceDiscoveryInstanceProperties ServiceDiscoveryInstance
   | ServiceDiscoveryPrivateDnsNamespaceProperties ServiceDiscoveryPrivateDnsNamespace
   | ServiceDiscoveryPublicDnsNamespaceProperties ServiceDiscoveryPublicDnsNamespace
@@ -1491,6 +1499,8 @@
   [ "Type" .= ("AWS::Glue::Trigger" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (GuardDutyDetectorProperties x) =
   [ "Type" .= ("AWS::GuardDuty::Detector" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GuardDutyFilterProperties x) =
+  [ "Type" .= ("AWS::GuardDuty::Filter" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (GuardDutyIPSetProperties x) =
   [ "Type" .= ("AWS::GuardDuty::IPSet" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (GuardDutyMasterProperties x) =
@@ -1655,6 +1665,8 @@
   [ "Type" .= ("AWS::SSM::Parameter" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (SSMPatchBaselineProperties x) =
   [ "Type" .= ("AWS::SSM::PatchBaseline" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogCloudFormationProvisionedProductProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::CloudFormationProvisionedProduct" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceDiscoveryInstanceProperties x) =
   [ "Type" .= ("AWS::ServiceDiscovery::Instance" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceDiscoveryPrivateDnsNamespaceProperties x) =
@@ -1864,6 +1876,7 @@
          "AWS::Glue::Table" -> GlueTableProperties <$> (o .: "Properties")
          "AWS::Glue::Trigger" -> GlueTriggerProperties <$> (o .: "Properties")
          "AWS::GuardDuty::Detector" -> GuardDutyDetectorProperties <$> (o .: "Properties")
+         "AWS::GuardDuty::Filter" -> GuardDutyFilterProperties <$> (o .: "Properties")
          "AWS::GuardDuty::IPSet" -> GuardDutyIPSetProperties <$> (o .: "Properties")
          "AWS::GuardDuty::Master" -> GuardDutyMasterProperties <$> (o .: "Properties")
          "AWS::GuardDuty::Member" -> GuardDutyMemberProperties <$> (o .: "Properties")
@@ -1946,6 +1959,7 @@
          "AWS::SSM::MaintenanceWindowTask" -> SSMMaintenanceWindowTaskProperties <$> (o .: "Properties")
          "AWS::SSM::Parameter" -> SSMParameterProperties <$> (o .: "Properties")
          "AWS::SSM::PatchBaseline" -> SSMPatchBaselineProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::CloudFormationProvisionedProduct" -> ServiceCatalogCloudFormationProvisionedProductProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::Instance" -> ServiceDiscoveryInstanceProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::PrivateDnsNamespace" -> ServiceDiscoveryPrivateDnsNamespaceProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::PublicDnsNamespace" -> ServiceDiscoveryPublicDnsNamespaceProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
--- a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
@@ -8,6 +8,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig
+import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig
 
 -- | Full data type definition for AppSyncGraphQLApi. See 'appSyncGraphQLApi'
@@ -17,6 +18,7 @@
   { _appSyncGraphQLApiAuthenticationType :: Val Text
   , _appSyncGraphQLApiLogConfig :: Maybe AppSyncGraphQLApiLogConfig
   , _appSyncGraphQLApiName :: Val Text
+  , _appSyncGraphQLApiOpenIDConnectConfig :: Maybe AppSyncGraphQLApiOpenIDConnectConfig
   , _appSyncGraphQLApiUserPoolConfig :: Maybe AppSyncGraphQLApiUserPoolConfig
   } deriving (Show, Eq)
 
@@ -27,6 +29,7 @@
     [ (Just . ("AuthenticationType",) . toJSON) _appSyncGraphQLApiAuthenticationType
     , fmap (("LogConfig",) . toJSON) _appSyncGraphQLApiLogConfig
     , (Just . ("Name",) . toJSON) _appSyncGraphQLApiName
+    , fmap (("OpenIDConnectConfig",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfig
     , fmap (("UserPoolConfig",) . toJSON) _appSyncGraphQLApiUserPoolConfig
     ]
 
@@ -36,6 +39,7 @@
       (obj .: "AuthenticationType") <*>
       (obj .:? "LogConfig") <*>
       (obj .: "Name") <*>
+      (obj .:? "OpenIDConnectConfig") <*>
       (obj .:? "UserPoolConfig")
   parseJSON _ = mempty
 
@@ -50,6 +54,7 @@
   { _appSyncGraphQLApiAuthenticationType = authenticationTypearg
   , _appSyncGraphQLApiLogConfig = Nothing
   , _appSyncGraphQLApiName = namearg
+  , _appSyncGraphQLApiOpenIDConnectConfig = Nothing
   , _appSyncGraphQLApiUserPoolConfig = Nothing
   }
 
@@ -64,6 +69,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-name
 asgqlaName :: Lens' AppSyncGraphQLApi (Val Text)
 asgqlaName = lens _appSyncGraphQLApiName (\s a -> s { _appSyncGraphQLApiName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-openidconnectconfig
+asgqlaOpenIDConnectConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiOpenIDConnectConfig)
+asgqlaOpenIDConnectConfig = lens _appSyncGraphQLApiOpenIDConnectConfig (\s a -> s { _appSyncGraphQLApiOpenIDConnectConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig
 asgqlaUserPoolConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiUserPoolConfig)
diff --git a/library-gen/Stratosphere/Resources/GuardDutyFilter.hs b/library-gen/Stratosphere/Resources/GuardDutyFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GuardDutyFilter.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html
+
+module Stratosphere.Resources.GuardDutyFilter where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria
+
+-- | Full data type definition for GuardDutyFilter. See 'guardDutyFilter' for
+-- a more convenient constructor.
+data GuardDutyFilter =
+  GuardDutyFilter
+  { _guardDutyFilterAction :: Val Text
+  , _guardDutyFilterDescription :: Val Text
+  , _guardDutyFilterDetectorId :: Val Text
+  , _guardDutyFilterFindingCriteria :: GuardDutyFilterFindingCriteria
+  , _guardDutyFilterName :: Maybe (Val Text)
+  , _guardDutyFilterRank :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON GuardDutyFilter where
+  toJSON GuardDutyFilter{..} =
+    object $
+    catMaybes
+    [ (Just . ("Action",) . toJSON) _guardDutyFilterAction
+    , (Just . ("Description",) . toJSON) _guardDutyFilterDescription
+    , (Just . ("DetectorId",) . toJSON) _guardDutyFilterDetectorId
+    , (Just . ("FindingCriteria",) . toJSON) _guardDutyFilterFindingCriteria
+    , fmap (("Name",) . toJSON) _guardDutyFilterName
+    , (Just . ("Rank",) . toJSON . fmap Integer') _guardDutyFilterRank
+    ]
+
+instance FromJSON GuardDutyFilter where
+  parseJSON (Object obj) =
+    GuardDutyFilter <$>
+      (obj .: "Action") <*>
+      (obj .: "Description") <*>
+      (obj .: "DetectorId") <*>
+      (obj .: "FindingCriteria") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap unInteger') (obj .: "Rank")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GuardDutyFilter' containing required fields as
+-- arguments.
+guardDutyFilter
+  :: Val Text -- ^ 'gdfAction'
+  -> Val Text -- ^ 'gdfDescription'
+  -> Val Text -- ^ 'gdfDetectorId'
+  -> GuardDutyFilterFindingCriteria -- ^ 'gdfFindingCriteria'
+  -> Val Integer -- ^ 'gdfRank'
+  -> GuardDutyFilter
+guardDutyFilter actionarg descriptionarg detectorIdarg findingCriteriaarg rankarg =
+  GuardDutyFilter
+  { _guardDutyFilterAction = actionarg
+  , _guardDutyFilterDescription = descriptionarg
+  , _guardDutyFilterDetectorId = detectorIdarg
+  , _guardDutyFilterFindingCriteria = findingCriteriaarg
+  , _guardDutyFilterName = Nothing
+  , _guardDutyFilterRank = rankarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-action
+gdfAction :: Lens' GuardDutyFilter (Val Text)
+gdfAction = lens _guardDutyFilterAction (\s a -> s { _guardDutyFilterAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-description
+gdfDescription :: Lens' GuardDutyFilter (Val Text)
+gdfDescription = lens _guardDutyFilterDescription (\s a -> s { _guardDutyFilterDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-detectorid
+gdfDetectorId :: Lens' GuardDutyFilter (Val Text)
+gdfDetectorId = lens _guardDutyFilterDetectorId (\s a -> s { _guardDutyFilterDetectorId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-findingcriteria
+gdfFindingCriteria :: Lens' GuardDutyFilter GuardDutyFilterFindingCriteria
+gdfFindingCriteria = lens _guardDutyFilterFindingCriteria (\s a -> s { _guardDutyFilterFindingCriteria = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-name
+gdfName :: Lens' GuardDutyFilter (Maybe (Val Text))
+gdfName = lens _guardDutyFilterName (\s a -> s { _guardDutyFilterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-filter.html#cfn-guardduty-filter-rank
+gdfRank :: Lens' GuardDutyFilter (Val Integer)
+gdfRank = lens _guardDutyFilterRank (\s a -> s { _guardDutyFilterRank = a })
diff --git a/library-gen/Stratosphere/Resources/GuardDutyMember.hs b/library-gen/Stratosphere/Resources/GuardDutyMember.hs
--- a/library-gen/Stratosphere/Resources/GuardDutyMember.hs
+++ b/library-gen/Stratosphere/Resources/GuardDutyMember.hs
@@ -14,6 +14,7 @@
 data GuardDutyMember =
   GuardDutyMember
   { _guardDutyMemberDetectorId :: Val Text
+  , _guardDutyMemberDisableEmailNotification :: Maybe (Val Bool)
   , _guardDutyMemberEmail :: Val Text
   , _guardDutyMemberMemberId :: Val Text
   , _guardDutyMemberMessage :: Maybe (Val Text)
@@ -25,6 +26,7 @@
     object $
     catMaybes
     [ (Just . ("DetectorId",) . toJSON) _guardDutyMemberDetectorId
+    , fmap (("DisableEmailNotification",) . toJSON . fmap Bool') _guardDutyMemberDisableEmailNotification
     , (Just . ("Email",) . toJSON) _guardDutyMemberEmail
     , (Just . ("MemberId",) . toJSON) _guardDutyMemberMemberId
     , fmap (("Message",) . toJSON) _guardDutyMemberMessage
@@ -35,6 +37,7 @@
   parseJSON (Object obj) =
     GuardDutyMember <$>
       (obj .: "DetectorId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableEmailNotification") <*>
       (obj .: "Email") <*>
       (obj .: "MemberId") <*>
       (obj .:? "Message") <*>
@@ -51,6 +54,7 @@
 guardDutyMember detectorIdarg emailarg memberIdarg =
   GuardDutyMember
   { _guardDutyMemberDetectorId = detectorIdarg
+  , _guardDutyMemberDisableEmailNotification = Nothing
   , _guardDutyMemberEmail = emailarg
   , _guardDutyMemberMemberId = memberIdarg
   , _guardDutyMemberMessage = Nothing
@@ -60,6 +64,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-member.html#cfn-guardduty-member-detectorid
 gdmeDetectorId :: Lens' GuardDutyMember (Val Text)
 gdmeDetectorId = lens _guardDutyMemberDetectorId (\s a -> s { _guardDutyMemberDetectorId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-member.html#cfn-guardduty-member-disableemailnotification
+gdmeDisableEmailNotification :: Lens' GuardDutyMember (Maybe (Val Bool))
+gdmeDisableEmailNotification = lens _guardDutyMemberDisableEmailNotification (\s a -> s { _guardDutyMemberDisableEmailNotification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-member.html#cfn-guardduty-member-email
 gdmeEmail :: Lens' GuardDutyMember (Val Text)
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProvisionedProduct.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html
+
+module Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for
+-- ServiceCatalogCloudFormationProvisionedProduct. See
+-- 'serviceCatalogCloudFormationProvisionedProduct' for a more convenient
+-- constructor.
+data ServiceCatalogCloudFormationProvisionedProduct =
+  ServiceCatalogCloudFormationProvisionedProduct
+  { _serviceCatalogCloudFormationProvisionedProductAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductNotificationArns :: Maybe (ValList Text)
+  , _serviceCatalogCloudFormationProvisionedProductPathId :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProductId :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProductName :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProvisionedProductName :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningParameters :: Maybe [ServiceCatalogCloudFormationProvisionedProductProvisioningParameter]
+  , _serviceCatalogCloudFormationProvisionedProductTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogCloudFormationProvisionedProduct where
+  toJSON ServiceCatalogCloudFormationProvisionedProduct{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProvisionedProductAcceptLanguage
+    , fmap (("NotificationArns",) . toJSON) _serviceCatalogCloudFormationProvisionedProductNotificationArns
+    , fmap (("PathId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductPathId
+    , fmap (("ProductId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductId
+    , fmap (("ProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProductName
+    , fmap (("ProvisionedProductName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisionedProductName
+    , fmap (("ProvisioningArtifactId",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId
+    , fmap (("ProvisioningArtifactName",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName
+    , fmap (("ProvisioningParameters",) . toJSON) _serviceCatalogCloudFormationProvisionedProductProvisioningParameters
+    , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProvisionedProductTags
+    ]
+
+instance FromJSON ServiceCatalogCloudFormationProvisionedProduct where
+  parseJSON (Object obj) =
+    ServiceCatalogCloudFormationProvisionedProduct <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "NotificationArns") <*>
+      (obj .:? "PathId") <*>
+      (obj .:? "ProductId") <*>
+      (obj .:? "ProductName") <*>
+      (obj .:? "ProvisionedProductName") <*>
+      (obj .:? "ProvisioningArtifactId") <*>
+      (obj .:? "ProvisioningArtifactName") <*>
+      (obj .:? "ProvisioningParameters") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogCloudFormationProvisionedProduct'
+-- containing required fields as arguments.
+serviceCatalogCloudFormationProvisionedProduct
+  :: ServiceCatalogCloudFormationProvisionedProduct
+serviceCatalogCloudFormationProvisionedProduct  =
+  ServiceCatalogCloudFormationProvisionedProduct
+  { _serviceCatalogCloudFormationProvisionedProductAcceptLanguage = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductNotificationArns = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductPathId = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProductId = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProductName = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProvisionedProductName = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductProvisioningParameters = Nothing
+  , _serviceCatalogCloudFormationProvisionedProductTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-acceptlanguage
+sccfppAcceptLanguage :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppAcceptLanguage = lens _serviceCatalogCloudFormationProvisionedProductAcceptLanguage (\s a -> s { _serviceCatalogCloudFormationProvisionedProductAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-notificationarns
+sccfppNotificationArns :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (ValList Text))
+sccfppNotificationArns = lens _serviceCatalogCloudFormationProvisionedProductNotificationArns (\s a -> s { _serviceCatalogCloudFormationProvisionedProductNotificationArns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-pathid
+sccfppPathId :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppPathId = lens _serviceCatalogCloudFormationProvisionedProductPathId (\s a -> s { _serviceCatalogCloudFormationProvisionedProductPathId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-productid
+sccfppProductId :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppProductId = lens _serviceCatalogCloudFormationProvisionedProductProductId (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProductId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-productname
+sccfppProductName :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppProductName = lens _serviceCatalogCloudFormationProvisionedProductProductName (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProductName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisionedproductname
+sccfppProvisionedProductName :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppProvisionedProductName = lens _serviceCatalogCloudFormationProvisionedProductProvisionedProductName (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisionedProductName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningartifactid
+sccfppProvisioningArtifactId :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppProvisioningArtifactId = lens _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningartifactname
+sccfppProvisioningArtifactName :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe (Val Text))
+sccfppProvisioningArtifactName = lens _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisioningArtifactName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameters
+sccfppProvisioningParameters :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe [ServiceCatalogCloudFormationProvisionedProductProvisioningParameter])
+sccfppProvisioningParameters = lens _serviceCatalogCloudFormationProvisionedProductProvisioningParameters (\s a -> s { _serviceCatalogCloudFormationProvisionedProductProvisioningParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-tags
+sccfppTags :: Lens' ServiceCatalogCloudFormationProvisionedProduct (Maybe [Tag])
+sccfppTags = lens _serviceCatalogCloudFormationProvisionedProductTags (\s a -> s { _serviceCatalogCloudFormationProvisionedProductTags = a })
diff --git a/library/Stratosphere/Helpers.hs b/library/Stratosphere/Helpers.hs
--- a/library/Stratosphere/Helpers.hs
+++ b/library/Stratosphere/Helpers.hs
@@ -44,7 +44,7 @@
 -- | Used for the JSON instances in Template. It is put here because it must be
 -- in a separate module.
 modTemplateJSONField :: String -> String
-modTemplateJSONField "templateFormatVersion" = "AWSTemplateFormatVersion"
+modTemplateJSONField "_templateFormatVersion" = "AWSTemplateFormatVersion"
 modTemplateJSONField s = drop 9 s
 
 
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -1,11 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
+-- This file has been generated from package.yaml by hpack version 0.28.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 8aebbd10d21f3b866d891fb4a07cbd63cdef2fa3ab045a59255fdfd6fc01fd15
+-- hash: 88bc9da050ccf97518f28040a3775ca65a1c24d42ad191fa1404302ba59c81b3
 
 name:           stratosphere
-version:        0.21.0
+version:        0.22.2
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -17,7 +17,6 @@
 license-file:   LICENSE.md
 build-type:     Simple
 cabal-version:  >= 1.10
-
 extra-source-files:
     CHANGELOG.md
     README.md
@@ -89,6 +88,7 @@
       Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig
+      Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection
@@ -394,6 +394,8 @@
       Stratosphere.ResourceProperties.GlueTriggerAction
       Stratosphere.ResourceProperties.GlueTriggerCondition
       Stratosphere.ResourceProperties.GlueTriggerPredicate
+      Stratosphere.ResourceProperties.GuardDutyFilterCondition
+      Stratosphere.ResourceProperties.GuardDutyFilterFindingCriteria
       Stratosphere.ResourceProperties.IAMGroupPolicy
       Stratosphere.ResourceProperties.IAMRolePolicy
       Stratosphere.ResourceProperties.IAMUserLoginProfile
@@ -537,6 +539,7 @@
       Stratosphere.ResourceProperties.S3BucketTransition
       Stratosphere.ResourceProperties.S3BucketVersioningConfiguration
       Stratosphere.ResourceProperties.S3BucketWebsiteConfiguration
+      Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig
@@ -757,6 +760,7 @@
       Stratosphere.Resources.GlueTable
       Stratosphere.Resources.GlueTrigger
       Stratosphere.Resources.GuardDutyDetector
+      Stratosphere.Resources.GuardDutyFilter
       Stratosphere.Resources.GuardDutyIPSet
       Stratosphere.Resources.GuardDutyMaster
       Stratosphere.Resources.GuardDutyMember
@@ -823,6 +827,7 @@
       Stratosphere.Resources.S3Bucket
       Stratosphere.Resources.S3BucketPolicy
       Stratosphere.Resources.SDBDomain
+      Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct
       Stratosphere.Resources.ServiceDiscoveryInstance
       Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace
       Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace
