diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.22.3
+
+* Update resource specification document to new unspecified version
+
 ## 0.22.2
 
 * Update resource specification document to version 2.2.0
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanApplicationSource.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanApplicationSource where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter
+
+-- | Full data type definition for
+-- AutoScalingPlansScalingPlanApplicationSource. See
+-- 'autoScalingPlansScalingPlanApplicationSource' for a more convenient
+-- constructor.
+data AutoScalingPlansScalingPlanApplicationSource =
+  AutoScalingPlansScalingPlanApplicationSource
+  { _autoScalingPlansScalingPlanApplicationSourceCloudFormationStackARN :: Maybe (Val Text)
+  , _autoScalingPlansScalingPlanApplicationSourceTagFilters :: Maybe [AutoScalingPlansScalingPlanTagFilter]
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanApplicationSource where
+  toJSON AutoScalingPlansScalingPlanApplicationSource{..} =
+    object $
+    catMaybes
+    [ fmap (("CloudFormationStackARN",) . toJSON) _autoScalingPlansScalingPlanApplicationSourceCloudFormationStackARN
+    , fmap (("TagFilters",) . toJSON) _autoScalingPlansScalingPlanApplicationSourceTagFilters
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanApplicationSource where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanApplicationSource <$>
+      (obj .:? "CloudFormationStackARN") <*>
+      (obj .:? "TagFilters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlanApplicationSource' containing
+-- required fields as arguments.
+autoScalingPlansScalingPlanApplicationSource
+  :: AutoScalingPlansScalingPlanApplicationSource
+autoScalingPlansScalingPlanApplicationSource  =
+  AutoScalingPlansScalingPlanApplicationSource
+  { _autoScalingPlansScalingPlanApplicationSourceCloudFormationStackARN = Nothing
+  , _autoScalingPlansScalingPlanApplicationSourceTagFilters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html#cfn-autoscalingplans-scalingplan-applicationsource-cloudformationstackarn
+aspspasCloudFormationStackARN :: Lens' AutoScalingPlansScalingPlanApplicationSource (Maybe (Val Text))
+aspspasCloudFormationStackARN = lens _autoScalingPlansScalingPlanApplicationSourceCloudFormationStackARN (\s a -> s { _autoScalingPlansScalingPlanApplicationSourceCloudFormationStackARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-applicationsource.html#cfn-autoscalingplans-scalingplan-applicationsource-tagfilters
+aspspasTagFilters :: Lens' AutoScalingPlansScalingPlanApplicationSource (Maybe [AutoScalingPlansScalingPlanTagFilter])
+aspspasTagFilters = lens _autoScalingPlansScalingPlanApplicationSourceTagFilters (\s a -> s { _autoScalingPlansScalingPlanApplicationSourceTagFilters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension
+
+-- | Full data type definition for
+-- AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification. See
+-- 'autoScalingPlansScalingPlanCustomizedScalingMetricSpecification' for a
+-- more convenient constructor.
+data AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification =
+  AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+  { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationDimensions :: Maybe [AutoScalingPlansScalingPlanMetricDimension]
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationMetricName :: Val Text
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationNamespace :: Val Text
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationStatistic :: Val Text
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationUnit :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification where
+  toJSON AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("Dimensions",) . toJSON) _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationDimensions
+    , (Just . ("MetricName",) . toJSON) _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationMetricName
+    , (Just . ("Namespace",) . toJSON) _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationNamespace
+    , (Just . ("Statistic",) . toJSON) _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationStatistic
+    , fmap (("Unit",) . toJSON) _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationUnit
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification <$>
+      (obj .:? "Dimensions") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Namespace") <*>
+      (obj .: "Statistic") <*>
+      (obj .:? "Unit")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification'
+-- containing required fields as arguments.
+autoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+  :: Val Text -- ^ 'aspspcsmsMetricName'
+  -> Val Text -- ^ 'aspspcsmsNamespace'
+  -> Val Text -- ^ 'aspspcsmsStatistic'
+  -> AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+autoScalingPlansScalingPlanCustomizedScalingMetricSpecification metricNamearg namespacearg statisticarg =
+  AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+  { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationDimensions = Nothing
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationMetricName = metricNamearg
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationNamespace = namespacearg
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationStatistic = statisticarg
+  , _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationUnit = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-dimensions
+aspspcsmsDimensions :: Lens' AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification (Maybe [AutoScalingPlansScalingPlanMetricDimension])
+aspspcsmsDimensions = lens _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationDimensions (\s a -> s { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationDimensions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-metricname
+aspspcsmsMetricName :: Lens' AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification (Val Text)
+aspspcsmsMetricName = lens _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationMetricName (\s a -> s { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationMetricName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-namespace
+aspspcsmsNamespace :: Lens' AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification (Val Text)
+aspspcsmsNamespace = lens _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationNamespace (\s a -> s { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationNamespace = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-statistic
+aspspcsmsStatistic :: Lens' AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification (Val Text)
+aspspcsmsStatistic = lens _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationStatistic (\s a -> s { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationStatistic = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-customizedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-customizedscalingmetricspecification-unit
+aspspcsmsUnit :: Lens' AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification (Maybe (Val Text))
+aspspcsmsUnit = lens _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationUnit (\s a -> s { _autoScalingPlansScalingPlanCustomizedScalingMetricSpecificationUnit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanMetricDimension.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AutoScalingPlansScalingPlanMetricDimension.
+-- See 'autoScalingPlansScalingPlanMetricDimension' for a more convenient
+-- constructor.
+data AutoScalingPlansScalingPlanMetricDimension =
+  AutoScalingPlansScalingPlanMetricDimension
+  { _autoScalingPlansScalingPlanMetricDimensionName :: Val Text
+  , _autoScalingPlansScalingPlanMetricDimensionValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanMetricDimension where
+  toJSON AutoScalingPlansScalingPlanMetricDimension{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _autoScalingPlansScalingPlanMetricDimensionName
+    , (Just . ("Value",) . toJSON) _autoScalingPlansScalingPlanMetricDimensionValue
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanMetricDimension where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanMetricDimension <$>
+      (obj .: "Name") <*>
+      (obj .: "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlanMetricDimension' containing
+-- required fields as arguments.
+autoScalingPlansScalingPlanMetricDimension
+  :: Val Text -- ^ 'aspspmdName'
+  -> Val Text -- ^ 'aspspmdValue'
+  -> AutoScalingPlansScalingPlanMetricDimension
+autoScalingPlansScalingPlanMetricDimension namearg valuearg =
+  AutoScalingPlansScalingPlanMetricDimension
+  { _autoScalingPlansScalingPlanMetricDimensionName = namearg
+  , _autoScalingPlansScalingPlanMetricDimensionValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html#cfn-autoscalingplans-scalingplan-metricdimension-name
+aspspmdName :: Lens' AutoScalingPlansScalingPlanMetricDimension (Val Text)
+aspspmdName = lens _autoScalingPlansScalingPlanMetricDimensionName (\s a -> s { _autoScalingPlansScalingPlanMetricDimensionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-metricdimension.html#cfn-autoscalingplans-scalingplan-metricdimension-value
+aspspmdValue :: Lens' AutoScalingPlansScalingPlanMetricDimension (Val Text)
+aspspmdValue = lens _autoScalingPlansScalingPlanMetricDimensionValue (\s a -> s { _autoScalingPlansScalingPlanMetricDimensionValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification. See
+-- 'autoScalingPlansScalingPlanPredefinedScalingMetricSpecification' for a
+-- more convenient constructor.
+data AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification =
+  AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+  { _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationPredefinedScalingMetricType :: Val Text
+  , _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationResourceLabel :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification where
+  toJSON AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification{..} =
+    object $
+    catMaybes
+    [ (Just . ("PredefinedScalingMetricType",) . toJSON) _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationPredefinedScalingMetricType
+    , fmap (("ResourceLabel",) . toJSON) _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationResourceLabel
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification <$>
+      (obj .: "PredefinedScalingMetricType") <*>
+      (obj .:? "ResourceLabel")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification'
+-- containing required fields as arguments.
+autoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+  :: Val Text -- ^ 'aspsppsmsPredefinedScalingMetricType'
+  -> AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+autoScalingPlansScalingPlanPredefinedScalingMetricSpecification predefinedScalingMetricTypearg =
+  AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+  { _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationPredefinedScalingMetricType = predefinedScalingMetricTypearg
+  , _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationResourceLabel = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedscalingmetricspecification-predefinedscalingmetrictype
+aspsppsmsPredefinedScalingMetricType :: Lens' AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification (Val Text)
+aspsppsmsPredefinedScalingMetricType = lens _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationPredefinedScalingMetricType (\s a -> s { _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationPredefinedScalingMetricType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-predefinedscalingmetricspecification.html#cfn-autoscalingplans-scalingplan-predefinedscalingmetricspecification-resourcelabel
+aspsppsmsResourceLabel :: Lens' AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification (Maybe (Val Text))
+aspsppsmsResourceLabel = lens _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationResourceLabel (\s a -> s { _autoScalingPlansScalingPlanPredefinedScalingMetricSpecificationResourceLabel = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration
+
+-- | Full data type definition for
+-- AutoScalingPlansScalingPlanScalingInstruction. See
+-- 'autoScalingPlansScalingPlanScalingInstruction' for a more convenient
+-- constructor.
+data AutoScalingPlansScalingPlanScalingInstruction =
+  AutoScalingPlansScalingPlanScalingInstruction
+  { _autoScalingPlansScalingPlanScalingInstructionMaxCapacity :: Val Integer
+  , _autoScalingPlansScalingPlanScalingInstructionMinCapacity :: Val Integer
+  , _autoScalingPlansScalingPlanScalingInstructionResourceId :: Val Text
+  , _autoScalingPlansScalingPlanScalingInstructionScalableDimension :: Val Text
+  , _autoScalingPlansScalingPlanScalingInstructionServiceNamespace :: Val Text
+  , _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations :: [AutoScalingPlansScalingPlanTargetTrackingConfiguration]
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanScalingInstruction where
+  toJSON AutoScalingPlansScalingPlanScalingInstruction{..} =
+    object $
+    catMaybes
+    [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanScalingInstructionMaxCapacity
+    , (Just . ("MinCapacity",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanScalingInstructionMinCapacity
+    , (Just . ("ResourceId",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionResourceId
+    , (Just . ("ScalableDimension",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionScalableDimension
+    , (Just . ("ServiceNamespace",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionServiceNamespace
+    , (Just . ("TargetTrackingConfigurations",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanScalingInstruction where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanScalingInstruction <$>
+      fmap (fmap unInteger') (obj .: "MaxCapacity") <*>
+      fmap (fmap unInteger') (obj .: "MinCapacity") <*>
+      (obj .: "ResourceId") <*>
+      (obj .: "ScalableDimension") <*>
+      (obj .: "ServiceNamespace") <*>
+      (obj .: "TargetTrackingConfigurations")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlanScalingInstruction'
+-- containing required fields as arguments.
+autoScalingPlansScalingPlanScalingInstruction
+  :: Val Integer -- ^ 'aspspsiMaxCapacity'
+  -> Val Integer -- ^ 'aspspsiMinCapacity'
+  -> Val Text -- ^ 'aspspsiResourceId'
+  -> Val Text -- ^ 'aspspsiScalableDimension'
+  -> Val Text -- ^ 'aspspsiServiceNamespace'
+  -> [AutoScalingPlansScalingPlanTargetTrackingConfiguration] -- ^ 'aspspsiTargetTrackingConfigurations'
+  -> AutoScalingPlansScalingPlanScalingInstruction
+autoScalingPlansScalingPlanScalingInstruction maxCapacityarg minCapacityarg resourceIdarg scalableDimensionarg serviceNamespacearg targetTrackingConfigurationsarg =
+  AutoScalingPlansScalingPlanScalingInstruction
+  { _autoScalingPlansScalingPlanScalingInstructionMaxCapacity = maxCapacityarg
+  , _autoScalingPlansScalingPlanScalingInstructionMinCapacity = minCapacityarg
+  , _autoScalingPlansScalingPlanScalingInstructionResourceId = resourceIdarg
+  , _autoScalingPlansScalingPlanScalingInstructionScalableDimension = scalableDimensionarg
+  , _autoScalingPlansScalingPlanScalingInstructionServiceNamespace = serviceNamespacearg
+  , _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations = targetTrackingConfigurationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-maxcapacity
+aspspsiMaxCapacity :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Integer)
+aspspsiMaxCapacity = lens _autoScalingPlansScalingPlanScalingInstructionMaxCapacity (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionMaxCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-mincapacity
+aspspsiMinCapacity :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Integer)
+aspspsiMinCapacity = lens _autoScalingPlansScalingPlanScalingInstructionMinCapacity (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionMinCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-resourceid
+aspspsiResourceId :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
+aspspsiResourceId = lens _autoScalingPlansScalingPlanScalingInstructionResourceId (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionResourceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-scalabledimension
+aspspsiScalableDimension :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
+aspspsiScalableDimension = lens _autoScalingPlansScalingPlanScalingInstructionScalableDimension (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionScalableDimension = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-servicenamespace
+aspspsiServiceNamespace :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
+aspspsiServiceNamespace = lens _autoScalingPlansScalingPlanScalingInstructionServiceNamespace (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionServiceNamespace = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-targettrackingconfigurations
+aspspsiTargetTrackingConfigurations :: Lens' AutoScalingPlansScalingPlanScalingInstruction [AutoScalingPlansScalingPlanTargetTrackingConfiguration]
+aspspsiTargetTrackingConfigurations = lens _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTagFilter.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AutoScalingPlansScalingPlanTagFilter. See
+-- 'autoScalingPlansScalingPlanTagFilter' for a more convenient constructor.
+data AutoScalingPlansScalingPlanTagFilter =
+  AutoScalingPlansScalingPlanTagFilter
+  { _autoScalingPlansScalingPlanTagFilterKey :: Val Text
+  , _autoScalingPlansScalingPlanTagFilterValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanTagFilter where
+  toJSON AutoScalingPlansScalingPlanTagFilter{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _autoScalingPlansScalingPlanTagFilterKey
+    , fmap (("Values",) . toJSON) _autoScalingPlansScalingPlanTagFilterValues
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanTagFilter where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanTagFilter <$>
+      (obj .: "Key") <*>
+      (obj .:? "Values")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlanTagFilter' containing
+-- required fields as arguments.
+autoScalingPlansScalingPlanTagFilter
+  :: Val Text -- ^ 'aspsptfKey'
+  -> AutoScalingPlansScalingPlanTagFilter
+autoScalingPlansScalingPlanTagFilter keyarg =
+  AutoScalingPlansScalingPlanTagFilter
+  { _autoScalingPlansScalingPlanTagFilterKey = keyarg
+  , _autoScalingPlansScalingPlanTagFilterValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html#cfn-autoscalingplans-scalingplan-tagfilter-key
+aspsptfKey :: Lens' AutoScalingPlansScalingPlanTagFilter (Val Text)
+aspsptfKey = lens _autoScalingPlansScalingPlanTagFilterKey (\s a -> s { _autoScalingPlansScalingPlanTagFilterKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-tagfilter.html#cfn-autoscalingplans-scalingplan-tagfilter-values
+aspsptfValues :: Lens' AutoScalingPlansScalingPlanTagFilter (Maybe (ValList Text))
+aspsptfValues = lens _autoScalingPlansScalingPlanTagFilterValues (\s a -> s { _autoScalingPlansScalingPlanTagFilterValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanTargetTrackingConfiguration.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html
+
+module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+
+-- | Full data type definition for
+-- AutoScalingPlansScalingPlanTargetTrackingConfiguration. See
+-- 'autoScalingPlansScalingPlanTargetTrackingConfiguration' for a more
+-- convenient constructor.
+data AutoScalingPlansScalingPlanTargetTrackingConfiguration =
+  AutoScalingPlansScalingPlanTargetTrackingConfiguration
+  { _autoScalingPlansScalingPlanTargetTrackingConfigurationCustomizedScalingMetricSpecification :: Maybe AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationDisableScaleIn :: Maybe (Val Bool)
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationEstimatedInstanceWarmup :: Maybe (Val Integer)
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationPredefinedScalingMetricSpecification :: Maybe AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleInCooldown :: Maybe (Val Integer)
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleOutCooldown :: Maybe (Val Integer)
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationTargetValue :: Val Double
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlanTargetTrackingConfiguration where
+  toJSON AutoScalingPlansScalingPlanTargetTrackingConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CustomizedScalingMetricSpecification",) . toJSON) _autoScalingPlansScalingPlanTargetTrackingConfigurationCustomizedScalingMetricSpecification
+    , fmap (("DisableScaleIn",) . toJSON . fmap Bool') _autoScalingPlansScalingPlanTargetTrackingConfigurationDisableScaleIn
+    , fmap (("EstimatedInstanceWarmup",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanTargetTrackingConfigurationEstimatedInstanceWarmup
+    , fmap (("PredefinedScalingMetricSpecification",) . toJSON) _autoScalingPlansScalingPlanTargetTrackingConfigurationPredefinedScalingMetricSpecification
+    , fmap (("ScaleInCooldown",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleInCooldown
+    , fmap (("ScaleOutCooldown",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleOutCooldown
+    , (Just . ("TargetValue",) . toJSON . fmap Double') _autoScalingPlansScalingPlanTargetTrackingConfigurationTargetValue
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlanTargetTrackingConfiguration where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlanTargetTrackingConfiguration <$>
+      (obj .:? "CustomizedScalingMetricSpecification") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableScaleIn") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "EstimatedInstanceWarmup") <*>
+      (obj .:? "PredefinedScalingMetricSpecification") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ScaleInCooldown") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ScaleOutCooldown") <*>
+      fmap (fmap unDouble') (obj .: "TargetValue")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlanTargetTrackingConfiguration'
+-- containing required fields as arguments.
+autoScalingPlansScalingPlanTargetTrackingConfiguration
+  :: Val Double -- ^ 'aspspttcTargetValue'
+  -> AutoScalingPlansScalingPlanTargetTrackingConfiguration
+autoScalingPlansScalingPlanTargetTrackingConfiguration targetValuearg =
+  AutoScalingPlansScalingPlanTargetTrackingConfiguration
+  { _autoScalingPlansScalingPlanTargetTrackingConfigurationCustomizedScalingMetricSpecification = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationDisableScaleIn = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationEstimatedInstanceWarmup = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationPredefinedScalingMetricSpecification = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleInCooldown = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleOutCooldown = Nothing
+  , _autoScalingPlansScalingPlanTargetTrackingConfigurationTargetValue = targetValuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-customizedscalingmetricspecification
+aspspttcCustomizedScalingMetricSpecification :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification)
+aspspttcCustomizedScalingMetricSpecification = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationCustomizedScalingMetricSpecification (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationCustomizedScalingMetricSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-disablescalein
+aspspttcDisableScaleIn :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe (Val Bool))
+aspspttcDisableScaleIn = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationDisableScaleIn (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationDisableScaleIn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-estimatedinstancewarmup
+aspspttcEstimatedInstanceWarmup :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe (Val Integer))
+aspspttcEstimatedInstanceWarmup = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationEstimatedInstanceWarmup (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationEstimatedInstanceWarmup = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-predefinedscalingmetricspecification
+aspspttcPredefinedScalingMetricSpecification :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification)
+aspspttcPredefinedScalingMetricSpecification = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationPredefinedScalingMetricSpecification (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationPredefinedScalingMetricSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-scaleincooldown
+aspspttcScaleInCooldown :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe (Val Integer))
+aspspttcScaleInCooldown = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleInCooldown (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleInCooldown = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-scaleoutcooldown
+aspspttcScaleOutCooldown :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Maybe (Val Integer))
+aspspttcScaleOutCooldown = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleOutCooldown (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationScaleOutCooldown = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-targettrackingconfiguration.html#cfn-autoscalingplans-scalingplan-targettrackingconfiguration-targetvalue
+aspspttcTargetValue :: Lens' AutoScalingPlansScalingPlanTargetTrackingConfiguration (Val Double)
+aspspttcTargetValue = lens _autoScalingPlansScalingPlanTargetTrackingConfigurationTargetValue (\s a -> s { _autoScalingPlansScalingPlanTargetTrackingConfigurationTargetValue = 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
@@ -79,6 +79,7 @@
 import Stratosphere.Resources.AutoScalingLifecycleHook as X
 import Stratosphere.Resources.AutoScalingScalingPolicy as X
 import Stratosphere.Resources.AutoScalingScheduledAction as X
+import Stratosphere.Resources.AutoScalingPlansScalingPlan as X
 import Stratosphere.Resources.BatchComputeEnvironment as X
 import Stratosphere.Resources.BatchJobDefinition as X
 import Stratosphere.Resources.BatchJobQueue as X
@@ -351,6 +352,13 @@
 import Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification as X
 import Stratosphere.ResourceProperties.AutoScalingScalingPolicyStepAdjustment as X
 import Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanApplicationSource as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter as X
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration as X
 import Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment as X
@@ -893,6 +901,7 @@
   | AutoScalingLifecycleHookProperties AutoScalingLifecycleHook
   | AutoScalingScalingPolicyProperties AutoScalingScalingPolicy
   | AutoScalingScheduledActionProperties AutoScalingScheduledAction
+  | AutoScalingPlansScalingPlanProperties AutoScalingPlansScalingPlan
   | BatchComputeEnvironmentProperties BatchComputeEnvironment
   | BatchJobDefinitionProperties BatchJobDefinition
   | BatchJobQueueProperties BatchJobQueue
@@ -1245,6 +1254,8 @@
   [ "Type" .= ("AWS::AutoScaling::ScalingPolicy" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AutoScalingScheduledActionProperties x) =
   [ "Type" .= ("AWS::AutoScaling::ScheduledAction" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (AutoScalingPlansScalingPlanProperties x) =
+  [ "Type" .= ("AWS::AutoScalingPlans::ScalingPlan" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (BatchComputeEnvironmentProperties x) =
   [ "Type" .= ("AWS::Batch::ComputeEnvironment" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (BatchJobDefinitionProperties x) =
@@ -1749,6 +1760,7 @@
          "AWS::AutoScaling::LifecycleHook" -> AutoScalingLifecycleHookProperties <$> (o .: "Properties")
          "AWS::AutoScaling::ScalingPolicy" -> AutoScalingScalingPolicyProperties <$> (o .: "Properties")
          "AWS::AutoScaling::ScheduledAction" -> AutoScalingScheduledActionProperties <$> (o .: "Properties")
+         "AWS::AutoScalingPlans::ScalingPlan" -> AutoScalingPlansScalingPlanProperties <$> (o .: "Properties")
          "AWS::Batch::ComputeEnvironment" -> BatchComputeEnvironmentProperties <$> (o .: "Properties")
          "AWS::Batch::JobDefinition" -> BatchJobDefinitionProperties <$> (o .: "Properties")
          "AWS::Batch::JobQueue" -> BatchJobQueueProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs b/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AutoScalingPlansScalingPlan.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html
+
+module Stratosphere.Resources.AutoScalingPlansScalingPlan where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanApplicationSource
+import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction
+
+-- | Full data type definition for AutoScalingPlansScalingPlan. See
+-- 'autoScalingPlansScalingPlan' for a more convenient constructor.
+data AutoScalingPlansScalingPlan =
+  AutoScalingPlansScalingPlan
+  { _autoScalingPlansScalingPlanApplicationSource :: AutoScalingPlansScalingPlanApplicationSource
+  , _autoScalingPlansScalingPlanScalingInstructions :: [AutoScalingPlansScalingPlanScalingInstruction]
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingPlansScalingPlan where
+  toJSON AutoScalingPlansScalingPlan{..} =
+    object $
+    catMaybes
+    [ (Just . ("ApplicationSource",) . toJSON) _autoScalingPlansScalingPlanApplicationSource
+    , (Just . ("ScalingInstructions",) . toJSON) _autoScalingPlansScalingPlanScalingInstructions
+    ]
+
+instance FromJSON AutoScalingPlansScalingPlan where
+  parseJSON (Object obj) =
+    AutoScalingPlansScalingPlan <$>
+      (obj .: "ApplicationSource") <*>
+      (obj .: "ScalingInstructions")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingPlansScalingPlan' containing required fields
+-- as arguments.
+autoScalingPlansScalingPlan
+  :: AutoScalingPlansScalingPlanApplicationSource -- ^ 'aspspApplicationSource'
+  -> [AutoScalingPlansScalingPlanScalingInstruction] -- ^ 'aspspScalingInstructions'
+  -> AutoScalingPlansScalingPlan
+autoScalingPlansScalingPlan applicationSourcearg scalingInstructionsarg =
+  AutoScalingPlansScalingPlan
+  { _autoScalingPlansScalingPlanApplicationSource = applicationSourcearg
+  , _autoScalingPlansScalingPlanScalingInstructions = scalingInstructionsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-applicationsource
+aspspApplicationSource :: Lens' AutoScalingPlansScalingPlan AutoScalingPlansScalingPlanApplicationSource
+aspspApplicationSource = lens _autoScalingPlansScalingPlanApplicationSource (\s a -> s { _autoScalingPlansScalingPlanApplicationSource = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-scalinginstructions
+aspspScalingInstructions :: Lens' AutoScalingPlansScalingPlan [AutoScalingPlansScalingPlanScalingInstruction]
+aspspScalingInstructions = lens _autoScalingPlansScalingPlanScalingInstructions (\s a -> s { _autoScalingPlansScalingPlanScalingInstructions = a })
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 88bc9da050ccf97518f28040a3775ca65a1c24d42ad191fa1404302ba59c81b3
+-- hash: 70cc727d77e6f021e462b0f83c278cf1e9cee45a576a8da714e12cd2aea2c3e5
 
 name:           stratosphere
-version:        0.22.2
+version:        0.22.3
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -96,6 +96,13 @@
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
       Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDevice
       Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDeviceMapping
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanApplicationSource
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanCustomizedScalingMetricSpecification
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanMetricDimension
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanPredefinedScalingMetricSpecification
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter
+      Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyPredefinedMetricSpecification
@@ -631,6 +638,7 @@
       Stratosphere.Resources.AutoScalingAutoScalingGroup
       Stratosphere.Resources.AutoScalingLaunchConfiguration
       Stratosphere.Resources.AutoScalingLifecycleHook
+      Stratosphere.Resources.AutoScalingPlansScalingPlan
       Stratosphere.Resources.AutoScalingScalingPolicy
       Stratosphere.Resources.AutoScalingScheduledAction
       Stratosphere.Resources.BatchComputeEnvironment
