diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Change Log
 
+## 0.49.0
+
+* Fixed `ImportValue` not allowing `Val` as argument (thanks @mbj!)
+* Update resource specification document to version 10.4.0
+
 ## 0.48.0
 
 * Update resource specification document to version 10.3.0
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAccountRecoverySetting.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAccountRecoverySetting.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAccountRecoverySetting.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-accountrecoverysetting.html
+
+module Stratosphere.ResourceProperties.CognitoUserPoolAccountRecoverySetting where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.CognitoUserPoolRecoveryOption
+
+-- | Full data type definition for CognitoUserPoolAccountRecoverySetting. See
+-- 'cognitoUserPoolAccountRecoverySetting' for a more convenient
+-- constructor.
+data CognitoUserPoolAccountRecoverySetting =
+  CognitoUserPoolAccountRecoverySetting
+  { _cognitoUserPoolAccountRecoverySettingRecoveryMechanisms :: Maybe [CognitoUserPoolRecoveryOption]
+  } deriving (Show, Eq)
+
+instance ToJSON CognitoUserPoolAccountRecoverySetting where
+  toJSON CognitoUserPoolAccountRecoverySetting{..} =
+    object $
+    catMaybes
+    [ fmap (("RecoveryMechanisms",) . toJSON) _cognitoUserPoolAccountRecoverySettingRecoveryMechanisms
+    ]
+
+-- | Constructor for 'CognitoUserPoolAccountRecoverySetting' containing
+-- required fields as arguments.
+cognitoUserPoolAccountRecoverySetting
+  :: CognitoUserPoolAccountRecoverySetting
+cognitoUserPoolAccountRecoverySetting  =
+  CognitoUserPoolAccountRecoverySetting
+  { _cognitoUserPoolAccountRecoverySettingRecoveryMechanisms = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-accountrecoverysetting.html#cfn-cognito-userpool-accountrecoverysetting-recoverymechanisms
+cuparsRecoveryMechanisms :: Lens' CognitoUserPoolAccountRecoverySetting (Maybe [CognitoUserPoolRecoveryOption])
+cuparsRecoveryMechanisms = lens _cognitoUserPoolAccountRecoverySettingRecoveryMechanisms (\s a -> s { _cognitoUserPoolAccountRecoverySettingRecoveryMechanisms = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolRecoveryOption.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolRecoveryOption.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolRecoveryOption.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html
+
+module Stratosphere.ResourceProperties.CognitoUserPoolRecoveryOption where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CognitoUserPoolRecoveryOption. See
+-- 'cognitoUserPoolRecoveryOption' for a more convenient constructor.
+data CognitoUserPoolRecoveryOption =
+  CognitoUserPoolRecoveryOption
+  { _cognitoUserPoolRecoveryOptionName :: Maybe (Val Text)
+  , _cognitoUserPoolRecoveryOptionPriority :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON CognitoUserPoolRecoveryOption where
+  toJSON CognitoUserPoolRecoveryOption{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _cognitoUserPoolRecoveryOptionName
+    , fmap (("Priority",) . toJSON) _cognitoUserPoolRecoveryOptionPriority
+    ]
+
+-- | Constructor for 'CognitoUserPoolRecoveryOption' containing required
+-- fields as arguments.
+cognitoUserPoolRecoveryOption
+  :: CognitoUserPoolRecoveryOption
+cognitoUserPoolRecoveryOption  =
+  CognitoUserPoolRecoveryOption
+  { _cognitoUserPoolRecoveryOptionName = Nothing
+  , _cognitoUserPoolRecoveryOptionPriority = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html#cfn-cognito-userpool-recoveryoption-name
+cuproName :: Lens' CognitoUserPoolRecoveryOption (Maybe (Val Text))
+cuproName = lens _cognitoUserPoolRecoveryOptionName (\s a -> s { _cognitoUserPoolRecoveryOptionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html#cfn-cognito-userpool-recoveryoption-priority
+cuproPriority :: Lens' CognitoUserPoolRecoveryOption (Maybe (Val Integer))
+cuproPriority = lens _cognitoUserPoolRecoveryOptionPriority (\s a -> s { _cognitoUserPoolRecoveryOptionPriority = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
@@ -17,6 +17,7 @@
   { _sageMakerModelContainerDefinitionContainerHostname :: Maybe (Val Text)
   , _sageMakerModelContainerDefinitionEnvironment :: Maybe Object
   , _sageMakerModelContainerDefinitionImage :: Val Text
+  , _sageMakerModelContainerDefinitionMode :: Maybe (Val Text)
   , _sageMakerModelContainerDefinitionModelDataUrl :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -27,6 +28,7 @@
     [ fmap (("ContainerHostname",) . toJSON) _sageMakerModelContainerDefinitionContainerHostname
     , fmap (("Environment",) . toJSON) _sageMakerModelContainerDefinitionEnvironment
     , (Just . ("Image",) . toJSON) _sageMakerModelContainerDefinitionImage
+    , fmap (("Mode",) . toJSON) _sageMakerModelContainerDefinitionMode
     , fmap (("ModelDataUrl",) . toJSON) _sageMakerModelContainerDefinitionModelDataUrl
     ]
 
@@ -40,6 +42,7 @@
   { _sageMakerModelContainerDefinitionContainerHostname = Nothing
   , _sageMakerModelContainerDefinitionEnvironment = Nothing
   , _sageMakerModelContainerDefinitionImage = imagearg
+  , _sageMakerModelContainerDefinitionMode = Nothing
   , _sageMakerModelContainerDefinitionModelDataUrl = Nothing
   }
 
@@ -54,6 +57,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-image
 smmcdImage :: Lens' SageMakerModelContainerDefinition (Val Text)
 smmcdImage = lens _sageMakerModelContainerDefinitionImage (\s a -> s { _sageMakerModelContainerDefinitionImage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-mode
+smmcdMode :: Lens' SageMakerModelContainerDefinition (Maybe (Val Text))
+smmcdMode = lens _sageMakerModelContainerDefinitionMode (\s a -> s { _sageMakerModelContainerDefinitionMode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-modeldataurl
 smmcdModelDataUrl :: Lens' SageMakerModelContainerDefinition (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/TransferServerEndpointDetails.hs b/library-gen/Stratosphere/ResourceProperties/TransferServerEndpointDetails.hs
--- a/library-gen/Stratosphere/ResourceProperties/TransferServerEndpointDetails.hs
+++ b/library-gen/Stratosphere/ResourceProperties/TransferServerEndpointDetails.hs
@@ -14,26 +14,46 @@
 -- 'transferServerEndpointDetails' for a more convenient constructor.
 data TransferServerEndpointDetails =
   TransferServerEndpointDetails
-  { _transferServerEndpointDetailsVpcEndpointId :: Val Text
+  { _transferServerEndpointDetailsAddressAllocationIds :: Maybe (ValList Text)
+  , _transferServerEndpointDetailsSubnetIds :: Maybe (ValList Text)
+  , _transferServerEndpointDetailsVpcEndpointId :: Maybe (Val Text)
+  , _transferServerEndpointDetailsVpcId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON TransferServerEndpointDetails where
   toJSON TransferServerEndpointDetails{..} =
     object $
     catMaybes
-    [ (Just . ("VpcEndpointId",) . toJSON) _transferServerEndpointDetailsVpcEndpointId
+    [ fmap (("AddressAllocationIds",) . toJSON) _transferServerEndpointDetailsAddressAllocationIds
+    , fmap (("SubnetIds",) . toJSON) _transferServerEndpointDetailsSubnetIds
+    , fmap (("VpcEndpointId",) . toJSON) _transferServerEndpointDetailsVpcEndpointId
+    , fmap (("VpcId",) . toJSON) _transferServerEndpointDetailsVpcId
     ]
 
 -- | Constructor for 'TransferServerEndpointDetails' containing required
 -- fields as arguments.
 transferServerEndpointDetails
-  :: Val Text -- ^ 'tsedVpcEndpointId'
-  -> TransferServerEndpointDetails
-transferServerEndpointDetails vpcEndpointIdarg =
+  :: TransferServerEndpointDetails
+transferServerEndpointDetails  =
   TransferServerEndpointDetails
-  { _transferServerEndpointDetailsVpcEndpointId = vpcEndpointIdarg
+  { _transferServerEndpointDetailsAddressAllocationIds = Nothing
+  , _transferServerEndpointDetailsSubnetIds = Nothing
+  , _transferServerEndpointDetailsVpcEndpointId = Nothing
+  , _transferServerEndpointDetailsVpcId = Nothing
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-addressallocationids
+tsedAddressAllocationIds :: Lens' TransferServerEndpointDetails (Maybe (ValList Text))
+tsedAddressAllocationIds = lens _transferServerEndpointDetailsAddressAllocationIds (\s a -> s { _transferServerEndpointDetailsAddressAllocationIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-subnetids
+tsedSubnetIds :: Lens' TransferServerEndpointDetails (Maybe (ValList Text))
+tsedSubnetIds = lens _transferServerEndpointDetailsSubnetIds (\s a -> s { _transferServerEndpointDetailsSubnetIds = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-vpcendpointid
-tsedVpcEndpointId :: Lens' TransferServerEndpointDetails (Val Text)
+tsedVpcEndpointId :: Lens' TransferServerEndpointDetails (Maybe (Val Text))
 tsedVpcEndpointId = lens _transferServerEndpointDetailsVpcEndpointId (\s a -> s { _transferServerEndpointDetailsVpcEndpointId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-vpcid
+tsedVpcId :: Lens' TransferServerEndpointDetails (Maybe (Val Text))
+tsedVpcId = lens _transferServerEndpointDetailsVpcId (\s a -> s { _transferServerEndpointDetailsVpcId = 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
@@ -44,6 +44,9 @@
 import GHC.Exts (IsList(..))
 import GHC.Generics (Generic)
 
+import Stratosphere.Resources.ACMPCACertificate as X
+import Stratosphere.Resources.ACMPCACertificateAuthority as X
+import Stratosphere.Resources.ACMPCACertificateAuthorityActivation as X
 import Stratosphere.Resources.AccessAnalyzerAnalyzer as X
 import Stratosphere.Resources.AmazonMQBroker as X
 import Stratosphere.Resources.AmazonMQConfiguration as X
@@ -798,6 +801,7 @@
 import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentMappingRule as X
 import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRoleMapping as X
 import Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRulesConfigurationType as X
+import Stratosphere.ResourceProperties.CognitoUserPoolAccountRecoverySetting as X
 import Stratosphere.ResourceProperties.CognitoUserPoolAdminCreateUserConfig as X
 import Stratosphere.ResourceProperties.CognitoUserPoolDeviceConfiguration as X
 import Stratosphere.ResourceProperties.CognitoUserPoolEmailConfiguration as X
@@ -806,6 +810,7 @@
 import Stratosphere.ResourceProperties.CognitoUserPoolNumberAttributeConstraints as X
 import Stratosphere.ResourceProperties.CognitoUserPoolPasswordPolicy as X
 import Stratosphere.ResourceProperties.CognitoUserPoolPolicies as X
+import Stratosphere.ResourceProperties.CognitoUserPoolRecoveryOption as X
 import Stratosphere.ResourceProperties.CognitoUserPoolSchemaAttribute as X
 import Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration as X
 import Stratosphere.ResourceProperties.CognitoUserPoolStringAttributeConstraints as X
diff --git a/library-gen/Stratosphere/Resources/ACMPCACertificate.hs b/library-gen/Stratosphere/Resources/ACMPCACertificate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ACMPCACertificate.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html
+
+module Stratosphere.Resources.ACMPCACertificate where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ACMPCACertificate. See 'acmpcaCertificate'
+-- for a more convenient constructor.
+data ACMPCACertificate =
+  ACMPCACertificate
+  { _aCMPCACertificateCertificateAuthorityArn :: Val Text
+  , _aCMPCACertificateCertificateSigningRequest :: Val Text
+  , _aCMPCACertificateSigningAlgorithm :: Val Text
+  , _aCMPCACertificateTemplateArn :: Maybe (Val Text)
+  , _aCMPCACertificateValidity :: Object
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ACMPCACertificate where
+  toResourceProperties ACMPCACertificate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ACMPCA::Certificate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("CertificateAuthorityArn",) . toJSON) _aCMPCACertificateCertificateAuthorityArn
+        , (Just . ("CertificateSigningRequest",) . toJSON) _aCMPCACertificateCertificateSigningRequest
+        , (Just . ("SigningAlgorithm",) . toJSON) _aCMPCACertificateSigningAlgorithm
+        , fmap (("TemplateArn",) . toJSON) _aCMPCACertificateTemplateArn
+        , (Just . ("Validity",) . toJSON) _aCMPCACertificateValidity
+        ]
+    }
+
+-- | Constructor for 'ACMPCACertificate' containing required fields as
+-- arguments.
+acmpcaCertificate
+  :: Val Text -- ^ 'acmpcacCertificateAuthorityArn'
+  -> Val Text -- ^ 'acmpcacCertificateSigningRequest'
+  -> Val Text -- ^ 'acmpcacSigningAlgorithm'
+  -> Object -- ^ 'acmpcacValidity'
+  -> ACMPCACertificate
+acmpcaCertificate certificateAuthorityArnarg certificateSigningRequestarg signingAlgorithmarg validityarg =
+  ACMPCACertificate
+  { _aCMPCACertificateCertificateAuthorityArn = certificateAuthorityArnarg
+  , _aCMPCACertificateCertificateSigningRequest = certificateSigningRequestarg
+  , _aCMPCACertificateSigningAlgorithm = signingAlgorithmarg
+  , _aCMPCACertificateTemplateArn = Nothing
+  , _aCMPCACertificateValidity = validityarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-certificateauthorityarn
+acmpcacCertificateAuthorityArn :: Lens' ACMPCACertificate (Val Text)
+acmpcacCertificateAuthorityArn = lens _aCMPCACertificateCertificateAuthorityArn (\s a -> s { _aCMPCACertificateCertificateAuthorityArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-certificatesigningrequest
+acmpcacCertificateSigningRequest :: Lens' ACMPCACertificate (Val Text)
+acmpcacCertificateSigningRequest = lens _aCMPCACertificateCertificateSigningRequest (\s a -> s { _aCMPCACertificateCertificateSigningRequest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-signingalgorithm
+acmpcacSigningAlgorithm :: Lens' ACMPCACertificate (Val Text)
+acmpcacSigningAlgorithm = lens _aCMPCACertificateSigningAlgorithm (\s a -> s { _aCMPCACertificateSigningAlgorithm = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-templatearn
+acmpcacTemplateArn :: Lens' ACMPCACertificate (Maybe (Val Text))
+acmpcacTemplateArn = lens _aCMPCACertificateTemplateArn (\s a -> s { _aCMPCACertificateTemplateArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-validity
+acmpcacValidity :: Lens' ACMPCACertificate Object
+acmpcacValidity = lens _aCMPCACertificateValidity (\s a -> s { _aCMPCACertificateValidity = a })
diff --git a/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html
+
+module Stratosphere.Resources.ACMPCACertificateAuthority where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for ACMPCACertificateAuthority. See
+-- 'acmpcaCertificateAuthority' for a more convenient constructor.
+data ACMPCACertificateAuthority =
+  ACMPCACertificateAuthority
+  { _aCMPCACertificateAuthorityKeyAlgorithm :: Val Text
+  , _aCMPCACertificateAuthorityRevocationConfiguration :: Maybe Object
+  , _aCMPCACertificateAuthoritySigningAlgorithm :: Val Text
+  , _aCMPCACertificateAuthoritySubject :: Object
+  , _aCMPCACertificateAuthorityTags :: Maybe [Tag]
+  , _aCMPCACertificateAuthorityType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ACMPCACertificateAuthority where
+  toResourceProperties ACMPCACertificateAuthority{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ACMPCA::CertificateAuthority"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("KeyAlgorithm",) . toJSON) _aCMPCACertificateAuthorityKeyAlgorithm
+        , fmap (("RevocationConfiguration",) . toJSON) _aCMPCACertificateAuthorityRevocationConfiguration
+        , (Just . ("SigningAlgorithm",) . toJSON) _aCMPCACertificateAuthoritySigningAlgorithm
+        , (Just . ("Subject",) . toJSON) _aCMPCACertificateAuthoritySubject
+        , fmap (("Tags",) . toJSON) _aCMPCACertificateAuthorityTags
+        , (Just . ("Type",) . toJSON) _aCMPCACertificateAuthorityType
+        ]
+    }
+
+-- | Constructor for 'ACMPCACertificateAuthority' containing required fields
+-- as arguments.
+acmpcaCertificateAuthority
+  :: Val Text -- ^ 'acmpcacaKeyAlgorithm'
+  -> Val Text -- ^ 'acmpcacaSigningAlgorithm'
+  -> Object -- ^ 'acmpcacaSubject'
+  -> Val Text -- ^ 'acmpcacaType'
+  -> ACMPCACertificateAuthority
+acmpcaCertificateAuthority keyAlgorithmarg signingAlgorithmarg subjectarg typearg =
+  ACMPCACertificateAuthority
+  { _aCMPCACertificateAuthorityKeyAlgorithm = keyAlgorithmarg
+  , _aCMPCACertificateAuthorityRevocationConfiguration = Nothing
+  , _aCMPCACertificateAuthoritySigningAlgorithm = signingAlgorithmarg
+  , _aCMPCACertificateAuthoritySubject = subjectarg
+  , _aCMPCACertificateAuthorityTags = Nothing
+  , _aCMPCACertificateAuthorityType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-keyalgorithm
+acmpcacaKeyAlgorithm :: Lens' ACMPCACertificateAuthority (Val Text)
+acmpcacaKeyAlgorithm = lens _aCMPCACertificateAuthorityKeyAlgorithm (\s a -> s { _aCMPCACertificateAuthorityKeyAlgorithm = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-revocationconfiguration
+acmpcacaRevocationConfiguration :: Lens' ACMPCACertificateAuthority (Maybe Object)
+acmpcacaRevocationConfiguration = lens _aCMPCACertificateAuthorityRevocationConfiguration (\s a -> s { _aCMPCACertificateAuthorityRevocationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-signingalgorithm
+acmpcacaSigningAlgorithm :: Lens' ACMPCACertificateAuthority (Val Text)
+acmpcacaSigningAlgorithm = lens _aCMPCACertificateAuthoritySigningAlgorithm (\s a -> s { _aCMPCACertificateAuthoritySigningAlgorithm = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-subject
+acmpcacaSubject :: Lens' ACMPCACertificateAuthority Object
+acmpcacaSubject = lens _aCMPCACertificateAuthoritySubject (\s a -> s { _aCMPCACertificateAuthoritySubject = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-tags
+acmpcacaTags :: Lens' ACMPCACertificateAuthority (Maybe [Tag])
+acmpcacaTags = lens _aCMPCACertificateAuthorityTags (\s a -> s { _aCMPCACertificateAuthorityTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-type
+acmpcacaType :: Lens' ACMPCACertificateAuthority (Val Text)
+acmpcacaType = lens _aCMPCACertificateAuthorityType (\s a -> s { _aCMPCACertificateAuthorityType = a })
diff --git a/library-gen/Stratosphere/Resources/ACMPCACertificateAuthorityActivation.hs b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthorityActivation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthorityActivation.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html
+
+module Stratosphere.Resources.ACMPCACertificateAuthorityActivation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ACMPCACertificateAuthorityActivation. See
+-- 'acmpcaCertificateAuthorityActivation' for a more convenient constructor.
+data ACMPCACertificateAuthorityActivation =
+  ACMPCACertificateAuthorityActivation
+  { _aCMPCACertificateAuthorityActivationCertificate :: Val Text
+  , _aCMPCACertificateAuthorityActivationCertificateAuthorityArn :: Val Text
+  , _aCMPCACertificateAuthorityActivationCertificateChain :: Maybe (Val Text)
+  , _aCMPCACertificateAuthorityActivationStatus :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ACMPCACertificateAuthorityActivation where
+  toResourceProperties ACMPCACertificateAuthorityActivation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::ACMPCA::CertificateAuthorityActivation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Certificate",) . toJSON) _aCMPCACertificateAuthorityActivationCertificate
+        , (Just . ("CertificateAuthorityArn",) . toJSON) _aCMPCACertificateAuthorityActivationCertificateAuthorityArn
+        , fmap (("CertificateChain",) . toJSON) _aCMPCACertificateAuthorityActivationCertificateChain
+        , fmap (("Status",) . toJSON) _aCMPCACertificateAuthorityActivationStatus
+        ]
+    }
+
+-- | Constructor for 'ACMPCACertificateAuthorityActivation' containing
+-- required fields as arguments.
+acmpcaCertificateAuthorityActivation
+  :: Val Text -- ^ 'acmpcacaaCertificate'
+  -> Val Text -- ^ 'acmpcacaaCertificateAuthorityArn'
+  -> ACMPCACertificateAuthorityActivation
+acmpcaCertificateAuthorityActivation certificatearg certificateAuthorityArnarg =
+  ACMPCACertificateAuthorityActivation
+  { _aCMPCACertificateAuthorityActivationCertificate = certificatearg
+  , _aCMPCACertificateAuthorityActivationCertificateAuthorityArn = certificateAuthorityArnarg
+  , _aCMPCACertificateAuthorityActivationCertificateChain = Nothing
+  , _aCMPCACertificateAuthorityActivationStatus = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificate
+acmpcacaaCertificate :: Lens' ACMPCACertificateAuthorityActivation (Val Text)
+acmpcacaaCertificate = lens _aCMPCACertificateAuthorityActivationCertificate (\s a -> s { _aCMPCACertificateAuthorityActivationCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificateauthorityarn
+acmpcacaaCertificateAuthorityArn :: Lens' ACMPCACertificateAuthorityActivation (Val Text)
+acmpcacaaCertificateAuthorityArn = lens _aCMPCACertificateAuthorityActivationCertificateAuthorityArn (\s a -> s { _aCMPCACertificateAuthorityActivationCertificateAuthorityArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificatechain
+acmpcacaaCertificateChain :: Lens' ACMPCACertificateAuthorityActivation (Maybe (Val Text))
+acmpcacaaCertificateChain = lens _aCMPCACertificateAuthorityActivationCertificateChain (\s a -> s { _aCMPCACertificateAuthorityActivationCertificateChain = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-status
+acmpcacaaStatus :: Lens' ACMPCACertificateAuthorityActivation (Maybe (Val Text))
+acmpcacaaStatus = lens _aCMPCACertificateAuthorityActivationStatus (\s a -> s { _aCMPCACertificateAuthorityActivationStatus = a })
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPool.hs b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
@@ -8,6 +8,7 @@
 module Stratosphere.Resources.CognitoUserPool where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.CognitoUserPoolAccountRecoverySetting
 import Stratosphere.ResourceProperties.CognitoUserPoolAdminCreateUserConfig
 import Stratosphere.ResourceProperties.CognitoUserPoolDeviceConfiguration
 import Stratosphere.ResourceProperties.CognitoUserPoolEmailConfiguration
@@ -22,7 +23,8 @@
 -- a more convenient constructor.
 data CognitoUserPool =
   CognitoUserPool
-  { _cognitoUserPoolAdminCreateUserConfig :: Maybe CognitoUserPoolAdminCreateUserConfig
+  { _cognitoUserPoolAccountRecoverySetting :: Maybe CognitoUserPoolAccountRecoverySetting
+  , _cognitoUserPoolAdminCreateUserConfig :: Maybe CognitoUserPoolAdminCreateUserConfig
   , _cognitoUserPoolAliasAttributes :: Maybe (ValList Text)
   , _cognitoUserPoolAutoVerifiedAttributes :: Maybe (ValList Text)
   , _cognitoUserPoolDeviceConfiguration :: Maybe CognitoUserPoolDeviceConfiguration
@@ -50,7 +52,8 @@
     { resourcePropertiesType = "AWS::Cognito::UserPool"
     , resourcePropertiesProperties =
         hashMapFromList $ catMaybes
-        [ fmap (("AdminCreateUserConfig",) . toJSON) _cognitoUserPoolAdminCreateUserConfig
+        [ fmap (("AccountRecoverySetting",) . toJSON) _cognitoUserPoolAccountRecoverySetting
+        , fmap (("AdminCreateUserConfig",) . toJSON) _cognitoUserPoolAdminCreateUserConfig
         , fmap (("AliasAttributes",) . toJSON) _cognitoUserPoolAliasAttributes
         , fmap (("AutoVerifiedAttributes",) . toJSON) _cognitoUserPoolAutoVerifiedAttributes
         , fmap (("DeviceConfiguration",) . toJSON) _cognitoUserPoolDeviceConfiguration
@@ -79,7 +82,8 @@
   :: CognitoUserPool
 cognitoUserPool  =
   CognitoUserPool
-  { _cognitoUserPoolAdminCreateUserConfig = Nothing
+  { _cognitoUserPoolAccountRecoverySetting = Nothing
+  , _cognitoUserPoolAdminCreateUserConfig = Nothing
   , _cognitoUserPoolAliasAttributes = Nothing
   , _cognitoUserPoolAutoVerifiedAttributes = Nothing
   , _cognitoUserPoolDeviceConfiguration = Nothing
@@ -100,6 +104,10 @@
   , _cognitoUserPoolUsernameAttributes = Nothing
   , _cognitoUserPoolVerificationMessageTemplate = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-accountrecoverysetting
+cupAccountRecoverySetting :: Lens' CognitoUserPool (Maybe CognitoUserPoolAccountRecoverySetting)
+cupAccountRecoverySetting = lens _cognitoUserPoolAccountRecoverySetting (\s a -> s { _cognitoUserPoolAccountRecoverySetting = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-admincreateuserconfig
 cupAdminCreateUserConfig :: Lens' CognitoUserPool (Maybe CognitoUserPoolAdminCreateUserConfig)
diff --git a/library/Stratosphere/Values.hs b/library/Stratosphere/Values.hs
--- a/library/Stratosphere/Values.hs
+++ b/library/Stratosphere/Values.hs
@@ -14,7 +14,7 @@
 import Data.Aeson
 import Data.HashMap.Strict (HashMap)
 import Data.Maybe (fromMaybe)
-import Data.String (IsString (..))
+import Data.String (IsString(..))
 import Data.Text (Text)
 import Data.Typeable
 import GHC.Exts (IsList(..))
@@ -35,7 +35,7 @@
   Join :: Text -> ValList Text -> Val Text
   Select :: Integer -> ValList a -> Val a
   FindInMap :: Val Text -> Val Text -> Val Text -> Val a -- ^ Map name, top level key, and second level key
-  ImportValue :: Text -> Val a -- ^ The account-and-region-unique exported name of the value to import
+  ImportValue :: Val Text -> Val a -- ^ The account-and-region-unique exported name of the value to import
   Sub :: Text -> Maybe (HashMap Text (Val Text)) -> Val Text -- ^ Substitution string and optional map of values
 
 deriving instance (Show a) => Show (Val a)
@@ -89,7 +89,7 @@
 refToJSON :: Text -> Value
 refToJSON ref = object [("Ref", toJSON ref)]
 
-importValueToJSON :: Text -> Value
+importValueToJSON :: Val Text -> Value
 importValueToJSON ref = object [("Fn::ImportValue", toJSON ref)]
 
 mkFunc :: Text -> [Value] -> Value
@@ -102,7 +102,7 @@
 data ValList a
   = ValList [Val a]
   | RefList Text
-  | ImportValueList Text
+  | ImportValueList (Val Text)
   | Split Text (Val a)
   | GetAZs (Val Text)
   deriving (Show, Eq)
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 83dd365e768896c75ba35238ea26c7bac2360246824c514e268216858a98c518
+-- hash: 86fbe8bab846642c04ef17e1c4f57bf87cc8d612b354efd1c2b90e7202dd23d4
 
 name:           stratosphere
-version:        0.48.0
+version:        0.49.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -322,6 +322,7 @@
       Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentMappingRule
       Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRoleMapping
       Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRulesConfigurationType
+      Stratosphere.ResourceProperties.CognitoUserPoolAccountRecoverySetting
       Stratosphere.ResourceProperties.CognitoUserPoolAdminCreateUserConfig
       Stratosphere.ResourceProperties.CognitoUserPoolClientAnalyticsConfiguration
       Stratosphere.ResourceProperties.CognitoUserPoolDeviceConfiguration
@@ -332,6 +333,7 @@
       Stratosphere.ResourceProperties.CognitoUserPoolNumberAttributeConstraints
       Stratosphere.ResourceProperties.CognitoUserPoolPasswordPolicy
       Stratosphere.ResourceProperties.CognitoUserPoolPolicies
+      Stratosphere.ResourceProperties.CognitoUserPoolRecoveryOption
       Stratosphere.ResourceProperties.CognitoUserPoolResourceServerResourceServerScopeType
       Stratosphere.ResourceProperties.CognitoUserPoolRiskConfigurationAttachmentAccountTakeoverActionsType
       Stratosphere.ResourceProperties.CognitoUserPoolRiskConfigurationAttachmentAccountTakeoverActionType
@@ -1221,6 +1223,9 @@
       Stratosphere.ResourceProperties.WorkSpacesWorkspaceWorkspaceProperties
       Stratosphere.Resources
       Stratosphere.Resources.AccessAnalyzerAnalyzer
+      Stratosphere.Resources.ACMPCACertificate
+      Stratosphere.Resources.ACMPCACertificateAuthority
+      Stratosphere.Resources.ACMPCACertificateAuthorityActivation
       Stratosphere.Resources.AmazonMQBroker
       Stratosphere.Resources.AmazonMQConfiguration
       Stratosphere.Resources.AmazonMQConfigurationAssociation
