diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/ApiGatewayV2/Api.hs b/gen/Stratosphere/ApiGatewayV2/Api.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Api.hs
@@ -0,0 +1,186 @@
+module Stratosphere.ApiGatewayV2.Api (
+        module Exports, Api(..), mkApi
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Api.BodyS3LocationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Api.CorsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Api
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html>
+    Api {haddock_workaround_ :: (),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-apikeyselectionexpression>
+         apiKeySelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-basepath>
+         basePath :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-body>
+         body :: (Prelude.Maybe JSON.Object),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-bodys3location>
+         bodyS3Location :: (Prelude.Maybe BodyS3LocationProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-corsconfiguration>
+         corsConfiguration :: (Prelude.Maybe CorsProperty),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-credentialsarn>
+         credentialsArn :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-description>
+         description :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-disableexecuteapiendpoint>
+         disableExecuteApiEndpoint :: (Prelude.Maybe (Value Prelude.Bool)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-disableschemavalidation>
+         disableSchemaValidation :: (Prelude.Maybe (Value Prelude.Bool)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-failonwarnings>
+         failOnWarnings :: (Prelude.Maybe (Value Prelude.Bool)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-ipaddresstype>
+         ipAddressType :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-name>
+         name :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-protocoltype>
+         protocolType :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-routekey>
+         routeKey :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-routeselectionexpression>
+         routeSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-tags>
+         tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-target>
+         target :: (Prelude.Maybe (Value Prelude.Text)),
+         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-version>
+         version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApi :: Api
+mkApi
+  = Api
+      {haddock_workaround_ = (),
+       apiKeySelectionExpression = Prelude.Nothing,
+       basePath = Prelude.Nothing, body = Prelude.Nothing,
+       bodyS3Location = Prelude.Nothing,
+       corsConfiguration = Prelude.Nothing,
+       credentialsArn = Prelude.Nothing, description = Prelude.Nothing,
+       disableExecuteApiEndpoint = Prelude.Nothing,
+       disableSchemaValidation = Prelude.Nothing,
+       failOnWarnings = Prelude.Nothing, ipAddressType = Prelude.Nothing,
+       name = Prelude.Nothing, protocolType = Prelude.Nothing,
+       routeKey = Prelude.Nothing,
+       routeSelectionExpression = Prelude.Nothing, tags = Prelude.Nothing,
+       target = Prelude.Nothing, version = Prelude.Nothing}
+instance ToResourceProperties Api where
+  toResourceProperties Api {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Api", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ApiKeySelectionExpression"
+                              Prelude.<$> apiKeySelectionExpression,
+                            (JSON..=) "BasePath" Prelude.<$> basePath,
+                            (JSON..=) "Body" Prelude.<$> body,
+                            (JSON..=) "BodyS3Location" Prelude.<$> bodyS3Location,
+                            (JSON..=) "CorsConfiguration" Prelude.<$> corsConfiguration,
+                            (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
+                            (JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "DisableExecuteApiEndpoint"
+                              Prelude.<$> disableExecuteApiEndpoint,
+                            (JSON..=) "DisableSchemaValidation"
+                              Prelude.<$> disableSchemaValidation,
+                            (JSON..=) "FailOnWarnings" Prelude.<$> failOnWarnings,
+                            (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "ProtocolType" Prelude.<$> protocolType,
+                            (JSON..=) "RouteKey" Prelude.<$> routeKey,
+                            (JSON..=) "RouteSelectionExpression"
+                              Prelude.<$> routeSelectionExpression,
+                            (JSON..=) "Tags" Prelude.<$> tags,
+                            (JSON..=) "Target" Prelude.<$> target,
+                            (JSON..=) "Version" Prelude.<$> version])}
+instance JSON.ToJSON Api where
+  toJSON Api {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ApiKeySelectionExpression"
+                 Prelude.<$> apiKeySelectionExpression,
+               (JSON..=) "BasePath" Prelude.<$> basePath,
+               (JSON..=) "Body" Prelude.<$> body,
+               (JSON..=) "BodyS3Location" Prelude.<$> bodyS3Location,
+               (JSON..=) "CorsConfiguration" Prelude.<$> corsConfiguration,
+               (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
+               (JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "DisableExecuteApiEndpoint"
+                 Prelude.<$> disableExecuteApiEndpoint,
+               (JSON..=) "DisableSchemaValidation"
+                 Prelude.<$> disableSchemaValidation,
+               (JSON..=) "FailOnWarnings" Prelude.<$> failOnWarnings,
+               (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "ProtocolType" Prelude.<$> protocolType,
+               (JSON..=) "RouteKey" Prelude.<$> routeKey,
+               (JSON..=) "RouteSelectionExpression"
+                 Prelude.<$> routeSelectionExpression,
+               (JSON..=) "Tags" Prelude.<$> tags,
+               (JSON..=) "Target" Prelude.<$> target,
+               (JSON..=) "Version" Prelude.<$> version]))
+instance Property "ApiKeySelectionExpression" Api where
+  type PropertyType "ApiKeySelectionExpression" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {apiKeySelectionExpression = Prelude.pure newValue, ..}
+instance Property "BasePath" Api where
+  type PropertyType "BasePath" Api = Value Prelude.Text
+  set newValue Api {..} = Api {basePath = Prelude.pure newValue, ..}
+instance Property "Body" Api where
+  type PropertyType "Body" Api = JSON.Object
+  set newValue Api {..} = Api {body = Prelude.pure newValue, ..}
+instance Property "BodyS3Location" Api where
+  type PropertyType "BodyS3Location" Api = BodyS3LocationProperty
+  set newValue Api {..}
+    = Api {bodyS3Location = Prelude.pure newValue, ..}
+instance Property "CorsConfiguration" Api where
+  type PropertyType "CorsConfiguration" Api = CorsProperty
+  set newValue Api {..}
+    = Api {corsConfiguration = Prelude.pure newValue, ..}
+instance Property "CredentialsArn" Api where
+  type PropertyType "CredentialsArn" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {credentialsArn = Prelude.pure newValue, ..}
+instance Property "Description" Api where
+  type PropertyType "Description" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {description = Prelude.pure newValue, ..}
+instance Property "DisableExecuteApiEndpoint" Api where
+  type PropertyType "DisableExecuteApiEndpoint" Api = Value Prelude.Bool
+  set newValue Api {..}
+    = Api {disableExecuteApiEndpoint = Prelude.pure newValue, ..}
+instance Property "DisableSchemaValidation" Api where
+  type PropertyType "DisableSchemaValidation" Api = Value Prelude.Bool
+  set newValue Api {..}
+    = Api {disableSchemaValidation = Prelude.pure newValue, ..}
+instance Property "FailOnWarnings" Api where
+  type PropertyType "FailOnWarnings" Api = Value Prelude.Bool
+  set newValue Api {..}
+    = Api {failOnWarnings = Prelude.pure newValue, ..}
+instance Property "IpAddressType" Api where
+  type PropertyType "IpAddressType" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {ipAddressType = Prelude.pure newValue, ..}
+instance Property "Name" Api where
+  type PropertyType "Name" Api = Value Prelude.Text
+  set newValue Api {..} = Api {name = Prelude.pure newValue, ..}
+instance Property "ProtocolType" Api where
+  type PropertyType "ProtocolType" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {protocolType = Prelude.pure newValue, ..}
+instance Property "RouteKey" Api where
+  type PropertyType "RouteKey" Api = Value Prelude.Text
+  set newValue Api {..} = Api {routeKey = Prelude.pure newValue, ..}
+instance Property "RouteSelectionExpression" Api where
+  type PropertyType "RouteSelectionExpression" Api = Value Prelude.Text
+  set newValue Api {..}
+    = Api {routeSelectionExpression = Prelude.pure newValue, ..}
+instance Property "Tags" Api where
+  type PropertyType "Tags" Api = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Api {..} = Api {tags = Prelude.pure newValue, ..}
+instance Property "Target" Api where
+  type PropertyType "Target" Api = Value Prelude.Text
+  set newValue Api {..} = Api {target = Prelude.pure newValue, ..}
+instance Property "Version" Api where
+  type PropertyType "Version" Api = Value Prelude.Text
+  set newValue Api {..} = Api {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs b/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.ApiGatewayV2.Api.BodyS3LocationProperty (
+        BodyS3LocationProperty(..), mkBodyS3LocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BodyS3LocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html>
+    BodyS3LocationProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html#cfn-apigatewayv2-api-bodys3location-bucket>
+                            bucket :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html#cfn-apigatewayv2-api-bodys3location-etag>
+                            etag :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html#cfn-apigatewayv2-api-bodys3location-key>
+                            key :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html#cfn-apigatewayv2-api-bodys3location-version>
+                            version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBodyS3LocationProperty :: BodyS3LocationProperty
+mkBodyS3LocationProperty
+  = BodyS3LocationProperty
+      {haddock_workaround_ = (), bucket = Prelude.Nothing,
+       etag = Prelude.Nothing, key = Prelude.Nothing,
+       version = Prelude.Nothing}
+instance ToResourceProperties BodyS3LocationProperty where
+  toResourceProperties BodyS3LocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Api.BodyS3Location",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Bucket" Prelude.<$> bucket,
+                            (JSON..=) "Etag" Prelude.<$> etag, (JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Version" Prelude.<$> version])}
+instance JSON.ToJSON BodyS3LocationProperty where
+  toJSON BodyS3LocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Bucket" Prelude.<$> bucket,
+               (JSON..=) "Etag" Prelude.<$> etag, (JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Version" Prelude.<$> version]))
+instance Property "Bucket" BodyS3LocationProperty where
+  type PropertyType "Bucket" BodyS3LocationProperty = Value Prelude.Text
+  set newValue BodyS3LocationProperty {..}
+    = BodyS3LocationProperty {bucket = Prelude.pure newValue, ..}
+instance Property "Etag" BodyS3LocationProperty where
+  type PropertyType "Etag" BodyS3LocationProperty = Value Prelude.Text
+  set newValue BodyS3LocationProperty {..}
+    = BodyS3LocationProperty {etag = Prelude.pure newValue, ..}
+instance Property "Key" BodyS3LocationProperty where
+  type PropertyType "Key" BodyS3LocationProperty = Value Prelude.Text
+  set newValue BodyS3LocationProperty {..}
+    = BodyS3LocationProperty {key = Prelude.pure newValue, ..}
+instance Property "Version" BodyS3LocationProperty where
+  type PropertyType "Version" BodyS3LocationProperty = Value Prelude.Text
+  set newValue BodyS3LocationProperty {..}
+    = BodyS3LocationProperty {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Api/BodyS3LocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Api.BodyS3LocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BodyS3LocationProperty :: Prelude.Type
+instance ToResourceProperties BodyS3LocationProperty
+instance Prelude.Eq BodyS3LocationProperty
+instance Prelude.Show BodyS3LocationProperty
+instance JSON.ToJSON BodyS3LocationProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs b/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs
@@ -0,0 +1,79 @@
+module Stratosphere.ApiGatewayV2.Api.CorsProperty (
+        CorsProperty(..), mkCorsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CorsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html>
+    CorsProperty {haddock_workaround_ :: (),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-allowcredentials>
+                  allowCredentials :: (Prelude.Maybe (Value Prelude.Bool)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-allowheaders>
+                  allowHeaders :: (Prelude.Maybe (ValueList Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-allowmethods>
+                  allowMethods :: (Prelude.Maybe (ValueList Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-alloworigins>
+                  allowOrigins :: (Prelude.Maybe (ValueList Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-exposeheaders>
+                  exposeHeaders :: (Prelude.Maybe (ValueList Prelude.Text)),
+                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html#cfn-apigatewayv2-api-cors-maxage>
+                  maxAge :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCorsProperty :: CorsProperty
+mkCorsProperty
+  = CorsProperty
+      {haddock_workaround_ = (), allowCredentials = Prelude.Nothing,
+       allowHeaders = Prelude.Nothing, allowMethods = Prelude.Nothing,
+       allowOrigins = Prelude.Nothing, exposeHeaders = Prelude.Nothing,
+       maxAge = Prelude.Nothing}
+instance ToResourceProperties CorsProperty where
+  toResourceProperties CorsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Api.Cors",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AllowCredentials" Prelude.<$> allowCredentials,
+                            (JSON..=) "AllowHeaders" Prelude.<$> allowHeaders,
+                            (JSON..=) "AllowMethods" Prelude.<$> allowMethods,
+                            (JSON..=) "AllowOrigins" Prelude.<$> allowOrigins,
+                            (JSON..=) "ExposeHeaders" Prelude.<$> exposeHeaders,
+                            (JSON..=) "MaxAge" Prelude.<$> maxAge])}
+instance JSON.ToJSON CorsProperty where
+  toJSON CorsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AllowCredentials" Prelude.<$> allowCredentials,
+               (JSON..=) "AllowHeaders" Prelude.<$> allowHeaders,
+               (JSON..=) "AllowMethods" Prelude.<$> allowMethods,
+               (JSON..=) "AllowOrigins" Prelude.<$> allowOrigins,
+               (JSON..=) "ExposeHeaders" Prelude.<$> exposeHeaders,
+               (JSON..=) "MaxAge" Prelude.<$> maxAge]))
+instance Property "AllowCredentials" CorsProperty where
+  type PropertyType "AllowCredentials" CorsProperty = Value Prelude.Bool
+  set newValue CorsProperty {..}
+    = CorsProperty {allowCredentials = Prelude.pure newValue, ..}
+instance Property "AllowHeaders" CorsProperty where
+  type PropertyType "AllowHeaders" CorsProperty = ValueList Prelude.Text
+  set newValue CorsProperty {..}
+    = CorsProperty {allowHeaders = Prelude.pure newValue, ..}
+instance Property "AllowMethods" CorsProperty where
+  type PropertyType "AllowMethods" CorsProperty = ValueList Prelude.Text
+  set newValue CorsProperty {..}
+    = CorsProperty {allowMethods = Prelude.pure newValue, ..}
+instance Property "AllowOrigins" CorsProperty where
+  type PropertyType "AllowOrigins" CorsProperty = ValueList Prelude.Text
+  set newValue CorsProperty {..}
+    = CorsProperty {allowOrigins = Prelude.pure newValue, ..}
+instance Property "ExposeHeaders" CorsProperty where
+  type PropertyType "ExposeHeaders" CorsProperty = ValueList Prelude.Text
+  set newValue CorsProperty {..}
+    = CorsProperty {exposeHeaders = Prelude.pure newValue, ..}
+instance Property "MaxAge" CorsProperty where
+  type PropertyType "MaxAge" CorsProperty = Value Prelude.Integer
+  set newValue CorsProperty {..}
+    = CorsProperty {maxAge = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Api/CorsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Api.CorsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CorsProperty :: Prelude.Type
+instance ToResourceProperties CorsProperty
+instance Prelude.Eq CorsProperty
+instance Prelude.Show CorsProperty
+instance JSON.ToJSON CorsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides.hs
@@ -0,0 +1,70 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides (
+        module Exports, ApiGatewayManagedOverrides(..),
+        mkApiGatewayManagedOverrides
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.IntegrationOverridesProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteOverridesProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.StageOverridesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApiGatewayManagedOverrides
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html>
+    ApiGatewayManagedOverrides {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-apiid>
+                                apiId :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-integration>
+                                integration :: (Prelude.Maybe IntegrationOverridesProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-route>
+                                route :: (Prelude.Maybe RouteOverridesProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stage>
+                                stage :: (Prelude.Maybe StageOverridesProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApiGatewayManagedOverrides ::
+  Value Prelude.Text -> ApiGatewayManagedOverrides
+mkApiGatewayManagedOverrides apiId
+  = ApiGatewayManagedOverrides
+      {haddock_workaround_ = (), apiId = apiId,
+       integration = Prelude.Nothing, route = Prelude.Nothing,
+       stage = Prelude.Nothing}
+instance ToResourceProperties ApiGatewayManagedOverrides where
+  toResourceProperties ApiGatewayManagedOverrides {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Integration" Prelude.<$> integration,
+                               (JSON..=) "Route" Prelude.<$> route,
+                               (JSON..=) "Stage" Prelude.<$> stage]))}
+instance JSON.ToJSON ApiGatewayManagedOverrides where
+  toJSON ApiGatewayManagedOverrides {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId]
+              (Prelude.catMaybes
+                 [(JSON..=) "Integration" Prelude.<$> integration,
+                  (JSON..=) "Route" Prelude.<$> route,
+                  (JSON..=) "Stage" Prelude.<$> stage])))
+instance Property "ApiId" ApiGatewayManagedOverrides where
+  type PropertyType "ApiId" ApiGatewayManagedOverrides = Value Prelude.Text
+  set newValue ApiGatewayManagedOverrides {..}
+    = ApiGatewayManagedOverrides {apiId = newValue, ..}
+instance Property "Integration" ApiGatewayManagedOverrides where
+  type PropertyType "Integration" ApiGatewayManagedOverrides = IntegrationOverridesProperty
+  set newValue ApiGatewayManagedOverrides {..}
+    = ApiGatewayManagedOverrides
+        {integration = Prelude.pure newValue, ..}
+instance Property "Route" ApiGatewayManagedOverrides where
+  type PropertyType "Route" ApiGatewayManagedOverrides = RouteOverridesProperty
+  set newValue ApiGatewayManagedOverrides {..}
+    = ApiGatewayManagedOverrides {route = Prelude.pure newValue, ..}
+instance Property "Stage" ApiGatewayManagedOverrides where
+  type PropertyType "Stage" ApiGatewayManagedOverrides = StageOverridesProperty
+  set newValue ApiGatewayManagedOverrides {..}
+    = ApiGatewayManagedOverrides {stage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.AccessLogSettingsProperty (
+        AccessLogSettingsProperty(..), mkAccessLogSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AccessLogSettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings.html>
+    AccessLogSettingsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings-destinationarn>
+                               destinationArn :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings-format>
+                               format :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAccessLogSettingsProperty :: AccessLogSettingsProperty
+mkAccessLogSettingsProperty
+  = AccessLogSettingsProperty
+      {haddock_workaround_ = (), destinationArn = Prelude.Nothing,
+       format = Prelude.Nothing}
+instance ToResourceProperties AccessLogSettingsProperty where
+  toResourceProperties AccessLogSettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides.AccessLogSettings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DestinationArn" Prelude.<$> destinationArn,
+                            (JSON..=) "Format" Prelude.<$> format])}
+instance JSON.ToJSON AccessLogSettingsProperty where
+  toJSON AccessLogSettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DestinationArn" Prelude.<$> destinationArn,
+               (JSON..=) "Format" Prelude.<$> format]))
+instance Property "DestinationArn" AccessLogSettingsProperty where
+  type PropertyType "DestinationArn" AccessLogSettingsProperty = Value Prelude.Text
+  set newValue AccessLogSettingsProperty {..}
+    = AccessLogSettingsProperty
+        {destinationArn = Prelude.pure newValue, ..}
+instance Property "Format" AccessLogSettingsProperty where
+  type PropertyType "Format" AccessLogSettingsProperty = Value Prelude.Text
+  set newValue AccessLogSettingsProperty {..}
+    = AccessLogSettingsProperty {format = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/AccessLogSettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.AccessLogSettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AccessLogSettingsProperty :: Prelude.Type
+instance ToResourceProperties AccessLogSettingsProperty
+instance Prelude.Eq AccessLogSettingsProperty
+instance Prelude.Show AccessLogSettingsProperty
+instance JSON.ToJSON AccessLogSettingsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.IntegrationOverridesProperty (
+        IntegrationOverridesProperty(..), mkIntegrationOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IntegrationOverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html>
+    IntegrationOverridesProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides-description>
+                                  description :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides-integrationmethod>
+                                  integrationMethod :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides-payloadformatversion>
+                                  payloadFormatVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides-timeoutinmillis>
+                                  timeoutInMillis :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntegrationOverridesProperty :: IntegrationOverridesProperty
+mkIntegrationOverridesProperty
+  = IntegrationOverridesProperty
+      {haddock_workaround_ = (), description = Prelude.Nothing,
+       integrationMethod = Prelude.Nothing,
+       payloadFormatVersion = Prelude.Nothing,
+       timeoutInMillis = Prelude.Nothing}
+instance ToResourceProperties IntegrationOverridesProperty where
+  toResourceProperties IntegrationOverridesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides.IntegrationOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
+                            (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
+                            (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis])}
+instance JSON.ToJSON IntegrationOverridesProperty where
+  toJSON IntegrationOverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
+               (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
+               (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis]))
+instance Property "Description" IntegrationOverridesProperty where
+  type PropertyType "Description" IntegrationOverridesProperty = Value Prelude.Text
+  set newValue IntegrationOverridesProperty {..}
+    = IntegrationOverridesProperty
+        {description = Prelude.pure newValue, ..}
+instance Property "IntegrationMethod" IntegrationOverridesProperty where
+  type PropertyType "IntegrationMethod" IntegrationOverridesProperty = Value Prelude.Text
+  set newValue IntegrationOverridesProperty {..}
+    = IntegrationOverridesProperty
+        {integrationMethod = Prelude.pure newValue, ..}
+instance Property "PayloadFormatVersion" IntegrationOverridesProperty where
+  type PropertyType "PayloadFormatVersion" IntegrationOverridesProperty = Value Prelude.Text
+  set newValue IntegrationOverridesProperty {..}
+    = IntegrationOverridesProperty
+        {payloadFormatVersion = Prelude.pure newValue, ..}
+instance Property "TimeoutInMillis" IntegrationOverridesProperty where
+  type PropertyType "TimeoutInMillis" IntegrationOverridesProperty = Value Prelude.Integer
+  set newValue IntegrationOverridesProperty {..}
+    = IntegrationOverridesProperty
+        {timeoutInMillis = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/IntegrationOverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.IntegrationOverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data IntegrationOverridesProperty :: Prelude.Type
+instance ToResourceProperties IntegrationOverridesProperty
+instance Prelude.Eq IntegrationOverridesProperty
+instance Prelude.Show IntegrationOverridesProperty
+instance JSON.ToJSON IntegrationOverridesProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs
@@ -0,0 +1,74 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteOverridesProperty (
+        RouteOverridesProperty(..), mkRouteOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RouteOverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html>
+    RouteOverridesProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routeoverrides-authorizationscopes>
+                            authorizationScopes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routeoverrides-authorizationtype>
+                            authorizationType :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routeoverrides-authorizerid>
+                            authorizerId :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routeoverrides-operationname>
+                            operationName :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routeoverrides-target>
+                            target :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRouteOverridesProperty :: RouteOverridesProperty
+mkRouteOverridesProperty
+  = RouteOverridesProperty
+      {haddock_workaround_ = (), authorizationScopes = Prelude.Nothing,
+       authorizationType = Prelude.Nothing,
+       authorizerId = Prelude.Nothing, operationName = Prelude.Nothing,
+       target = Prelude.Nothing}
+instance ToResourceProperties RouteOverridesProperty where
+  toResourceProperties RouteOverridesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides.RouteOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AuthorizationScopes" Prelude.<$> authorizationScopes,
+                            (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+                            (JSON..=) "AuthorizerId" Prelude.<$> authorizerId,
+                            (JSON..=) "OperationName" Prelude.<$> operationName,
+                            (JSON..=) "Target" Prelude.<$> target])}
+instance JSON.ToJSON RouteOverridesProperty where
+  toJSON RouteOverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AuthorizationScopes" Prelude.<$> authorizationScopes,
+               (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+               (JSON..=) "AuthorizerId" Prelude.<$> authorizerId,
+               (JSON..=) "OperationName" Prelude.<$> operationName,
+               (JSON..=) "Target" Prelude.<$> target]))
+instance Property "AuthorizationScopes" RouteOverridesProperty where
+  type PropertyType "AuthorizationScopes" RouteOverridesProperty = ValueList Prelude.Text
+  set newValue RouteOverridesProperty {..}
+    = RouteOverridesProperty
+        {authorizationScopes = Prelude.pure newValue, ..}
+instance Property "AuthorizationType" RouteOverridesProperty where
+  type PropertyType "AuthorizationType" RouteOverridesProperty = Value Prelude.Text
+  set newValue RouteOverridesProperty {..}
+    = RouteOverridesProperty
+        {authorizationType = Prelude.pure newValue, ..}
+instance Property "AuthorizerId" RouteOverridesProperty where
+  type PropertyType "AuthorizerId" RouteOverridesProperty = Value Prelude.Text
+  set newValue RouteOverridesProperty {..}
+    = RouteOverridesProperty {authorizerId = Prelude.pure newValue, ..}
+instance Property "OperationName" RouteOverridesProperty where
+  type PropertyType "OperationName" RouteOverridesProperty = Value Prelude.Text
+  set newValue RouteOverridesProperty {..}
+    = RouteOverridesProperty
+        {operationName = Prelude.pure newValue, ..}
+instance Property "Target" RouteOverridesProperty where
+  type PropertyType "Target" RouteOverridesProperty = Value Prelude.Text
+  set newValue RouteOverridesProperty {..}
+    = RouteOverridesProperty {target = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteOverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteOverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RouteOverridesProperty :: Prelude.Type
+instance ToResourceProperties RouteOverridesProperty
+instance Prelude.Eq RouteOverridesProperty
+instance Prelude.Show RouteOverridesProperty
+instance JSON.ToJSON RouteOverridesProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs
@@ -0,0 +1,78 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteSettingsProperty (
+        RouteSettingsProperty(..), mkRouteSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RouteSettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html>
+    RouteSettingsProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routesettings-datatraceenabled>
+                           dataTraceEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routesettings-detailedmetricsenabled>
+                           detailedMetricsEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routesettings-logginglevel>
+                           loggingLevel :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routesettings-throttlingburstlimit>
+                           throttlingBurstLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html#cfn-apigatewayv2-apigatewaymanagedoverrides-routesettings-throttlingratelimit>
+                           throttlingRateLimit :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRouteSettingsProperty :: RouteSettingsProperty
+mkRouteSettingsProperty
+  = RouteSettingsProperty
+      {haddock_workaround_ = (), dataTraceEnabled = Prelude.Nothing,
+       detailedMetricsEnabled = Prelude.Nothing,
+       loggingLevel = Prelude.Nothing,
+       throttlingBurstLimit = Prelude.Nothing,
+       throttlingRateLimit = Prelude.Nothing}
+instance ToResourceProperties RouteSettingsProperty where
+  toResourceProperties RouteSettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides.RouteSettings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DataTraceEnabled" Prelude.<$> dataTraceEnabled,
+                            (JSON..=) "DetailedMetricsEnabled"
+                              Prelude.<$> detailedMetricsEnabled,
+                            (JSON..=) "LoggingLevel" Prelude.<$> loggingLevel,
+                            (JSON..=) "ThrottlingBurstLimit" Prelude.<$> throttlingBurstLimit,
+                            (JSON..=) "ThrottlingRateLimit" Prelude.<$> throttlingRateLimit])}
+instance JSON.ToJSON RouteSettingsProperty where
+  toJSON RouteSettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DataTraceEnabled" Prelude.<$> dataTraceEnabled,
+               (JSON..=) "DetailedMetricsEnabled"
+                 Prelude.<$> detailedMetricsEnabled,
+               (JSON..=) "LoggingLevel" Prelude.<$> loggingLevel,
+               (JSON..=) "ThrottlingBurstLimit" Prelude.<$> throttlingBurstLimit,
+               (JSON..=) "ThrottlingRateLimit" Prelude.<$> throttlingRateLimit]))
+instance Property "DataTraceEnabled" RouteSettingsProperty where
+  type PropertyType "DataTraceEnabled" RouteSettingsProperty = Value Prelude.Bool
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {dataTraceEnabled = Prelude.pure newValue, ..}
+instance Property "DetailedMetricsEnabled" RouteSettingsProperty where
+  type PropertyType "DetailedMetricsEnabled" RouteSettingsProperty = Value Prelude.Bool
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {detailedMetricsEnabled = Prelude.pure newValue, ..}
+instance Property "LoggingLevel" RouteSettingsProperty where
+  type PropertyType "LoggingLevel" RouteSettingsProperty = Value Prelude.Text
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty {loggingLevel = Prelude.pure newValue, ..}
+instance Property "ThrottlingBurstLimit" RouteSettingsProperty where
+  type PropertyType "ThrottlingBurstLimit" RouteSettingsProperty = Value Prelude.Integer
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {throttlingBurstLimit = Prelude.pure newValue, ..}
+instance Property "ThrottlingRateLimit" RouteSettingsProperty where
+  type PropertyType "ThrottlingRateLimit" RouteSettingsProperty = Value Prelude.Double
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {throttlingRateLimit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/RouteSettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteSettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RouteSettingsProperty :: Prelude.Type
+instance ToResourceProperties RouteSettingsProperty
+instance Prelude.Eq RouteSettingsProperty
+instance Prelude.Show RouteSettingsProperty
+instance JSON.ToJSON RouteSettingsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs
@@ -0,0 +1,87 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.StageOverridesProperty (
+        module Exports, StageOverridesProperty(..),
+        mkStageOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.AccessLogSettingsProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteSettingsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StageOverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html>
+    StageOverridesProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-accesslogsettings>
+                            accessLogSettings :: (Prelude.Maybe AccessLogSettingsProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-autodeploy>
+                            autoDeploy :: (Prelude.Maybe (Value Prelude.Bool)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-defaultroutesettings>
+                            defaultRouteSettings :: (Prelude.Maybe RouteSettingsProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-description>
+                            description :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-routesettings>
+                            routeSettings :: (Prelude.Maybe JSON.Object),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html#cfn-apigatewayv2-apigatewaymanagedoverrides-stageoverrides-stagevariables>
+                            stageVariables :: (Prelude.Maybe JSON.Object)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStageOverridesProperty :: StageOverridesProperty
+mkStageOverridesProperty
+  = StageOverridesProperty
+      {haddock_workaround_ = (), accessLogSettings = Prelude.Nothing,
+       autoDeploy = Prelude.Nothing,
+       defaultRouteSettings = Prelude.Nothing,
+       description = Prelude.Nothing, routeSettings = Prelude.Nothing,
+       stageVariables = Prelude.Nothing}
+instance ToResourceProperties StageOverridesProperty where
+  toResourceProperties StageOverridesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiGatewayManagedOverrides.StageOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AccessLogSettings" Prelude.<$> accessLogSettings,
+                            (JSON..=) "AutoDeploy" Prelude.<$> autoDeploy,
+                            (JSON..=) "DefaultRouteSettings" Prelude.<$> defaultRouteSettings,
+                            (JSON..=) "Description" Prelude.<$> description,
+                            (JSON..=) "RouteSettings" Prelude.<$> routeSettings,
+                            (JSON..=) "StageVariables" Prelude.<$> stageVariables])}
+instance JSON.ToJSON StageOverridesProperty where
+  toJSON StageOverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AccessLogSettings" Prelude.<$> accessLogSettings,
+               (JSON..=) "AutoDeploy" Prelude.<$> autoDeploy,
+               (JSON..=) "DefaultRouteSettings" Prelude.<$> defaultRouteSettings,
+               (JSON..=) "Description" Prelude.<$> description,
+               (JSON..=) "RouteSettings" Prelude.<$> routeSettings,
+               (JSON..=) "StageVariables" Prelude.<$> stageVariables]))
+instance Property "AccessLogSettings" StageOverridesProperty where
+  type PropertyType "AccessLogSettings" StageOverridesProperty = AccessLogSettingsProperty
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty
+        {accessLogSettings = Prelude.pure newValue, ..}
+instance Property "AutoDeploy" StageOverridesProperty where
+  type PropertyType "AutoDeploy" StageOverridesProperty = Value Prelude.Bool
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty {autoDeploy = Prelude.pure newValue, ..}
+instance Property "DefaultRouteSettings" StageOverridesProperty where
+  type PropertyType "DefaultRouteSettings" StageOverridesProperty = RouteSettingsProperty
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty
+        {defaultRouteSettings = Prelude.pure newValue, ..}
+instance Property "Description" StageOverridesProperty where
+  type PropertyType "Description" StageOverridesProperty = Value Prelude.Text
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty {description = Prelude.pure newValue, ..}
+instance Property "RouteSettings" StageOverridesProperty where
+  type PropertyType "RouteSettings" StageOverridesProperty = JSON.Object
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty
+        {routeSettings = Prelude.pure newValue, ..}
+instance Property "StageVariables" StageOverridesProperty where
+  type PropertyType "StageVariables" StageOverridesProperty = JSON.Object
+  set newValue StageOverridesProperty {..}
+    = StageOverridesProperty
+        {stageVariables = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiGatewayManagedOverrides/StageOverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.StageOverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StageOverridesProperty :: Prelude.Type
+instance ToResourceProperties StageOverridesProperty
+instance Prelude.Eq StageOverridesProperty
+instance Prelude.Show StageOverridesProperty
+instance JSON.ToJSON StageOverridesProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/ApiMapping.hs b/gen/Stratosphere/ApiGatewayV2/ApiMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/ApiMapping.hs
@@ -0,0 +1,61 @@
+module Stratosphere.ApiGatewayV2.ApiMapping (
+        ApiMapping(..), mkApiMapping
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ApiMapping
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html>
+    ApiMapping {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html#cfn-apigatewayv2-apimapping-apiid>
+                apiId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html#cfn-apigatewayv2-apimapping-apimappingkey>
+                apiMappingKey :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html#cfn-apigatewayv2-apimapping-domainname>
+                domainName :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html#cfn-apigatewayv2-apimapping-stage>
+                stage :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApiMapping ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> ApiMapping
+mkApiMapping apiId domainName stage
+  = ApiMapping
+      {haddock_workaround_ = (), apiId = apiId, domainName = domainName,
+       stage = stage, apiMappingKey = Prelude.Nothing}
+instance ToResourceProperties ApiMapping where
+  toResourceProperties ApiMapping {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::ApiMapping",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "DomainName" JSON..= domainName,
+                            "Stage" JSON..= stage]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApiMappingKey" Prelude.<$> apiMappingKey]))}
+instance JSON.ToJSON ApiMapping where
+  toJSON ApiMapping {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "DomainName" JSON..= domainName,
+               "Stage" JSON..= stage]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApiMappingKey" Prelude.<$> apiMappingKey])))
+instance Property "ApiId" ApiMapping where
+  type PropertyType "ApiId" ApiMapping = Value Prelude.Text
+  set newValue ApiMapping {..} = ApiMapping {apiId = newValue, ..}
+instance Property "ApiMappingKey" ApiMapping where
+  type PropertyType "ApiMappingKey" ApiMapping = Value Prelude.Text
+  set newValue ApiMapping {..}
+    = ApiMapping {apiMappingKey = Prelude.pure newValue, ..}
+instance Property "DomainName" ApiMapping where
+  type PropertyType "DomainName" ApiMapping = Value Prelude.Text
+  set newValue ApiMapping {..}
+    = ApiMapping {domainName = newValue, ..}
+instance Property "Stage" ApiMapping where
+  type PropertyType "Stage" ApiMapping = Value Prelude.Text
+  set newValue ApiMapping {..} = ApiMapping {stage = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Authorizer.hs b/gen/Stratosphere/ApiGatewayV2/Authorizer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Authorizer.hs
@@ -0,0 +1,139 @@
+module Stratosphere.ApiGatewayV2.Authorizer (
+        module Exports, Authorizer(..), mkAuthorizer
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Authorizer.JWTConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Authorizer
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html>
+    Authorizer {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-apiid>
+                apiId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-authorizercredentialsarn>
+                authorizerCredentialsArn :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-authorizerpayloadformatversion>
+                authorizerPayloadFormatVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-authorizerresultttlinseconds>
+                authorizerResultTtlInSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-authorizertype>
+                authorizerType :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-authorizeruri>
+                authorizerUri :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-enablesimpleresponses>
+                enableSimpleResponses :: (Prelude.Maybe (Value Prelude.Bool)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-identitysource>
+                identitySource :: (Prelude.Maybe (ValueList Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-identityvalidationexpression>
+                identityValidationExpression :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-jwtconfiguration>
+                jwtConfiguration :: (Prelude.Maybe JWTConfigurationProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html#cfn-apigatewayv2-authorizer-name>
+                name :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthorizer ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> Authorizer
+mkAuthorizer apiId authorizerType name
+  = Authorizer
+      {haddock_workaround_ = (), apiId = apiId,
+       authorizerType = authorizerType, name = name,
+       authorizerCredentialsArn = Prelude.Nothing,
+       authorizerPayloadFormatVersion = Prelude.Nothing,
+       authorizerResultTtlInSeconds = Prelude.Nothing,
+       authorizerUri = Prelude.Nothing,
+       enableSimpleResponses = Prelude.Nothing,
+       identitySource = Prelude.Nothing,
+       identityValidationExpression = Prelude.Nothing,
+       jwtConfiguration = Prelude.Nothing}
+instance ToResourceProperties Authorizer where
+  toResourceProperties Authorizer {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Authorizer",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "AuthorizerType" JSON..= authorizerType,
+                            "Name" JSON..= name]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AuthorizerCredentialsArn"
+                                 Prelude.<$> authorizerCredentialsArn,
+                               (JSON..=) "AuthorizerPayloadFormatVersion"
+                                 Prelude.<$> authorizerPayloadFormatVersion,
+                               (JSON..=) "AuthorizerResultTtlInSeconds"
+                                 Prelude.<$> authorizerResultTtlInSeconds,
+                               (JSON..=) "AuthorizerUri" Prelude.<$> authorizerUri,
+                               (JSON..=) "EnableSimpleResponses"
+                                 Prelude.<$> enableSimpleResponses,
+                               (JSON..=) "IdentitySource" Prelude.<$> identitySource,
+                               (JSON..=) "IdentityValidationExpression"
+                                 Prelude.<$> identityValidationExpression,
+                               (JSON..=) "JwtConfiguration" Prelude.<$> jwtConfiguration]))}
+instance JSON.ToJSON Authorizer where
+  toJSON Authorizer {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "AuthorizerType" JSON..= authorizerType,
+               "Name" JSON..= name]
+              (Prelude.catMaybes
+                 [(JSON..=) "AuthorizerCredentialsArn"
+                    Prelude.<$> authorizerCredentialsArn,
+                  (JSON..=) "AuthorizerPayloadFormatVersion"
+                    Prelude.<$> authorizerPayloadFormatVersion,
+                  (JSON..=) "AuthorizerResultTtlInSeconds"
+                    Prelude.<$> authorizerResultTtlInSeconds,
+                  (JSON..=) "AuthorizerUri" Prelude.<$> authorizerUri,
+                  (JSON..=) "EnableSimpleResponses"
+                    Prelude.<$> enableSimpleResponses,
+                  (JSON..=) "IdentitySource" Prelude.<$> identitySource,
+                  (JSON..=) "IdentityValidationExpression"
+                    Prelude.<$> identityValidationExpression,
+                  (JSON..=) "JwtConfiguration" Prelude.<$> jwtConfiguration])))
+instance Property "ApiId" Authorizer where
+  type PropertyType "ApiId" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..} = Authorizer {apiId = newValue, ..}
+instance Property "AuthorizerCredentialsArn" Authorizer where
+  type PropertyType "AuthorizerCredentialsArn" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer {authorizerCredentialsArn = Prelude.pure newValue, ..}
+instance Property "AuthorizerPayloadFormatVersion" Authorizer where
+  type PropertyType "AuthorizerPayloadFormatVersion" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer
+        {authorizerPayloadFormatVersion = Prelude.pure newValue, ..}
+instance Property "AuthorizerResultTtlInSeconds" Authorizer where
+  type PropertyType "AuthorizerResultTtlInSeconds" Authorizer = Value Prelude.Integer
+  set newValue Authorizer {..}
+    = Authorizer
+        {authorizerResultTtlInSeconds = Prelude.pure newValue, ..}
+instance Property "AuthorizerType" Authorizer where
+  type PropertyType "AuthorizerType" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer {authorizerType = newValue, ..}
+instance Property "AuthorizerUri" Authorizer where
+  type PropertyType "AuthorizerUri" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer {authorizerUri = Prelude.pure newValue, ..}
+instance Property "EnableSimpleResponses" Authorizer where
+  type PropertyType "EnableSimpleResponses" Authorizer = Value Prelude.Bool
+  set newValue Authorizer {..}
+    = Authorizer {enableSimpleResponses = Prelude.pure newValue, ..}
+instance Property "IdentitySource" Authorizer where
+  type PropertyType "IdentitySource" Authorizer = ValueList Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer {identitySource = Prelude.pure newValue, ..}
+instance Property "IdentityValidationExpression" Authorizer where
+  type PropertyType "IdentityValidationExpression" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..}
+    = Authorizer
+        {identityValidationExpression = Prelude.pure newValue, ..}
+instance Property "JwtConfiguration" Authorizer where
+  type PropertyType "JwtConfiguration" Authorizer = JWTConfigurationProperty
+  set newValue Authorizer {..}
+    = Authorizer {jwtConfiguration = Prelude.pure newValue, ..}
+instance Property "Name" Authorizer where
+  type PropertyType "Name" Authorizer = Value Prelude.Text
+  set newValue Authorizer {..} = Authorizer {name = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs b/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.ApiGatewayV2.Authorizer.JWTConfigurationProperty (
+        JWTConfigurationProperty(..), mkJWTConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data JWTConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-authorizer-jwtconfiguration.html>
+    JWTConfigurationProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-authorizer-jwtconfiguration.html#cfn-apigatewayv2-authorizer-jwtconfiguration-audience>
+                              audience :: (Prelude.Maybe (ValueList Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-authorizer-jwtconfiguration.html#cfn-apigatewayv2-authorizer-jwtconfiguration-issuer>
+                              issuer :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkJWTConfigurationProperty :: JWTConfigurationProperty
+mkJWTConfigurationProperty
+  = JWTConfigurationProperty
+      {haddock_workaround_ = (), audience = Prelude.Nothing,
+       issuer = Prelude.Nothing}
+instance ToResourceProperties JWTConfigurationProperty where
+  toResourceProperties JWTConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Authorizer.JWTConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Audience" Prelude.<$> audience,
+                            (JSON..=) "Issuer" Prelude.<$> issuer])}
+instance JSON.ToJSON JWTConfigurationProperty where
+  toJSON JWTConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Audience" Prelude.<$> audience,
+               (JSON..=) "Issuer" Prelude.<$> issuer]))
+instance Property "Audience" JWTConfigurationProperty where
+  type PropertyType "Audience" JWTConfigurationProperty = ValueList Prelude.Text
+  set newValue JWTConfigurationProperty {..}
+    = JWTConfigurationProperty {audience = Prelude.pure newValue, ..}
+instance Property "Issuer" JWTConfigurationProperty where
+  type PropertyType "Issuer" JWTConfigurationProperty = Value Prelude.Text
+  set newValue JWTConfigurationProperty {..}
+    = JWTConfigurationProperty {issuer = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Authorizer/JWTConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Authorizer.JWTConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data JWTConfigurationProperty :: Prelude.Type
+instance ToResourceProperties JWTConfigurationProperty
+instance Prelude.Eq JWTConfigurationProperty
+instance Prelude.Show JWTConfigurationProperty
+instance JSON.ToJSON JWTConfigurationProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Deployment.hs b/gen/Stratosphere/ApiGatewayV2/Deployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Deployment.hs
@@ -0,0 +1,54 @@
+module Stratosphere.ApiGatewayV2.Deployment (
+        Deployment(..), mkDeployment
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Deployment
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html>
+    Deployment {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html#cfn-apigatewayv2-deployment-apiid>
+                apiId :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html#cfn-apigatewayv2-deployment-description>
+                description :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html#cfn-apigatewayv2-deployment-stagename>
+                stageName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeployment :: Value Prelude.Text -> Deployment
+mkDeployment apiId
+  = Deployment
+      {haddock_workaround_ = (), apiId = apiId,
+       description = Prelude.Nothing, stageName = Prelude.Nothing}
+instance ToResourceProperties Deployment where
+  toResourceProperties Deployment {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Deployment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "StageName" Prelude.<$> stageName]))}
+instance JSON.ToJSON Deployment where
+  toJSON Deployment {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "StageName" Prelude.<$> stageName])))
+instance Property "ApiId" Deployment where
+  type PropertyType "ApiId" Deployment = Value Prelude.Text
+  set newValue Deployment {..} = Deployment {apiId = newValue, ..}
+instance Property "Description" Deployment where
+  type PropertyType "Description" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {description = Prelude.pure newValue, ..}
+instance Property "StageName" Deployment where
+  type PropertyType "StageName" Deployment = Value Prelude.Text
+  set newValue Deployment {..}
+    = Deployment {stageName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/DomainName.hs b/gen/Stratosphere/ApiGatewayV2/DomainName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/DomainName.hs
@@ -0,0 +1,79 @@
+module Stratosphere.ApiGatewayV2.DomainName (
+        module Exports, DomainName(..), mkDomainName
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.DomainName.DomainNameConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.DomainName.MutualTlsAuthenticationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainName
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html>
+    DomainName {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html#cfn-apigatewayv2-domainname-domainname>
+                domainName :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html#cfn-apigatewayv2-domainname-domainnameconfigurations>
+                domainNameConfigurations :: (Prelude.Maybe [DomainNameConfigurationProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html#cfn-apigatewayv2-domainname-mutualtlsauthentication>
+                mutualTlsAuthentication :: (Prelude.Maybe MutualTlsAuthenticationProperty),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html#cfn-apigatewayv2-domainname-routingmode>
+                routingMode :: (Prelude.Maybe (Value Prelude.Text)),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html#cfn-apigatewayv2-domainname-tags>
+                tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainName :: Value Prelude.Text -> DomainName
+mkDomainName domainName
+  = DomainName
+      {haddock_workaround_ = (), domainName = domainName,
+       domainNameConfigurations = Prelude.Nothing,
+       mutualTlsAuthentication = Prelude.Nothing,
+       routingMode = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties DomainName where
+  toResourceProperties DomainName {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::DomainName",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DomainName" JSON..= domainName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DomainNameConfigurations"
+                                 Prelude.<$> domainNameConfigurations,
+                               (JSON..=) "MutualTlsAuthentication"
+                                 Prelude.<$> mutualTlsAuthentication,
+                               (JSON..=) "RoutingMode" Prelude.<$> routingMode,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON DomainName where
+  toJSON DomainName {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DomainName" JSON..= domainName]
+              (Prelude.catMaybes
+                 [(JSON..=) "DomainNameConfigurations"
+                    Prelude.<$> domainNameConfigurations,
+                  (JSON..=) "MutualTlsAuthentication"
+                    Prelude.<$> mutualTlsAuthentication,
+                  (JSON..=) "RoutingMode" Prelude.<$> routingMode,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "DomainName" DomainName where
+  type PropertyType "DomainName" DomainName = Value Prelude.Text
+  set newValue DomainName {..}
+    = DomainName {domainName = newValue, ..}
+instance Property "DomainNameConfigurations" DomainName where
+  type PropertyType "DomainNameConfigurations" DomainName = [DomainNameConfigurationProperty]
+  set newValue DomainName {..}
+    = DomainName {domainNameConfigurations = Prelude.pure newValue, ..}
+instance Property "MutualTlsAuthentication" DomainName where
+  type PropertyType "MutualTlsAuthentication" DomainName = MutualTlsAuthenticationProperty
+  set newValue DomainName {..}
+    = DomainName {mutualTlsAuthentication = Prelude.pure newValue, ..}
+instance Property "RoutingMode" DomainName where
+  type PropertyType "RoutingMode" DomainName = Value Prelude.Text
+  set newValue DomainName {..}
+    = DomainName {routingMode = Prelude.pure newValue, ..}
+instance Property "Tags" DomainName where
+  type PropertyType "Tags" DomainName = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue DomainName {..}
+    = DomainName {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs b/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs
@@ -0,0 +1,90 @@
+module Stratosphere.ApiGatewayV2.DomainName.DomainNameConfigurationProperty (
+        DomainNameConfigurationProperty(..),
+        mkDomainNameConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DomainNameConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html>
+    DomainNameConfigurationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-certificatearn>
+                                     certificateArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-certificatename>
+                                     certificateName :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-endpointtype>
+                                     endpointType :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-ipaddresstype>
+                                     ipAddressType :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-ownershipverificationcertificatearn>
+                                     ownershipVerificationCertificateArn :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html#cfn-apigatewayv2-domainname-domainnameconfiguration-securitypolicy>
+                                     securityPolicy :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDomainNameConfigurationProperty ::
+  DomainNameConfigurationProperty
+mkDomainNameConfigurationProperty
+  = DomainNameConfigurationProperty
+      {haddock_workaround_ = (), certificateArn = Prelude.Nothing,
+       certificateName = Prelude.Nothing, endpointType = Prelude.Nothing,
+       ipAddressType = Prelude.Nothing,
+       ownershipVerificationCertificateArn = Prelude.Nothing,
+       securityPolicy = Prelude.Nothing}
+instance ToResourceProperties DomainNameConfigurationProperty where
+  toResourceProperties DomainNameConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::DomainName.DomainNameConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CertificateArn" Prelude.<$> certificateArn,
+                            (JSON..=) "CertificateName" Prelude.<$> certificateName,
+                            (JSON..=) "EndpointType" Prelude.<$> endpointType,
+                            (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
+                            (JSON..=) "OwnershipVerificationCertificateArn"
+                              Prelude.<$> ownershipVerificationCertificateArn,
+                            (JSON..=) "SecurityPolicy" Prelude.<$> securityPolicy])}
+instance JSON.ToJSON DomainNameConfigurationProperty where
+  toJSON DomainNameConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CertificateArn" Prelude.<$> certificateArn,
+               (JSON..=) "CertificateName" Prelude.<$> certificateName,
+               (JSON..=) "EndpointType" Prelude.<$> endpointType,
+               (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
+               (JSON..=) "OwnershipVerificationCertificateArn"
+                 Prelude.<$> ownershipVerificationCertificateArn,
+               (JSON..=) "SecurityPolicy" Prelude.<$> securityPolicy]))
+instance Property "CertificateArn" DomainNameConfigurationProperty where
+  type PropertyType "CertificateArn" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {certificateArn = Prelude.pure newValue, ..}
+instance Property "CertificateName" DomainNameConfigurationProperty where
+  type PropertyType "CertificateName" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {certificateName = Prelude.pure newValue, ..}
+instance Property "EndpointType" DomainNameConfigurationProperty where
+  type PropertyType "EndpointType" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {endpointType = Prelude.pure newValue, ..}
+instance Property "IpAddressType" DomainNameConfigurationProperty where
+  type PropertyType "IpAddressType" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {ipAddressType = Prelude.pure newValue, ..}
+instance Property "OwnershipVerificationCertificateArn" DomainNameConfigurationProperty where
+  type PropertyType "OwnershipVerificationCertificateArn" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {ownershipVerificationCertificateArn = Prelude.pure newValue, ..}
+instance Property "SecurityPolicy" DomainNameConfigurationProperty where
+  type PropertyType "SecurityPolicy" DomainNameConfigurationProperty = Value Prelude.Text
+  set newValue DomainNameConfigurationProperty {..}
+    = DomainNameConfigurationProperty
+        {securityPolicy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/DomainName/DomainNameConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.DomainName.DomainNameConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DomainNameConfigurationProperty :: Prelude.Type
+instance ToResourceProperties DomainNameConfigurationProperty
+instance Prelude.Eq DomainNameConfigurationProperty
+instance Prelude.Show DomainNameConfigurationProperty
+instance JSON.ToJSON DomainNameConfigurationProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs b/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.ApiGatewayV2.DomainName.MutualTlsAuthenticationProperty (
+        MutualTlsAuthenticationProperty(..),
+        mkMutualTlsAuthenticationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MutualTlsAuthenticationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-mutualtlsauthentication.html>
+    MutualTlsAuthenticationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-mutualtlsauthentication.html#cfn-apigatewayv2-domainname-mutualtlsauthentication-truststoreuri>
+                                     truststoreUri :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-mutualtlsauthentication.html#cfn-apigatewayv2-domainname-mutualtlsauthentication-truststoreversion>
+                                     truststoreVersion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMutualTlsAuthenticationProperty ::
+  MutualTlsAuthenticationProperty
+mkMutualTlsAuthenticationProperty
+  = MutualTlsAuthenticationProperty
+      {haddock_workaround_ = (), truststoreUri = Prelude.Nothing,
+       truststoreVersion = Prelude.Nothing}
+instance ToResourceProperties MutualTlsAuthenticationProperty where
+  toResourceProperties MutualTlsAuthenticationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::DomainName.MutualTlsAuthentication",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TruststoreUri" Prelude.<$> truststoreUri,
+                            (JSON..=) "TruststoreVersion" Prelude.<$> truststoreVersion])}
+instance JSON.ToJSON MutualTlsAuthenticationProperty where
+  toJSON MutualTlsAuthenticationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TruststoreUri" Prelude.<$> truststoreUri,
+               (JSON..=) "TruststoreVersion" Prelude.<$> truststoreVersion]))
+instance Property "TruststoreUri" MutualTlsAuthenticationProperty where
+  type PropertyType "TruststoreUri" MutualTlsAuthenticationProperty = Value Prelude.Text
+  set newValue MutualTlsAuthenticationProperty {..}
+    = MutualTlsAuthenticationProperty
+        {truststoreUri = Prelude.pure newValue, ..}
+instance Property "TruststoreVersion" MutualTlsAuthenticationProperty where
+  type PropertyType "TruststoreVersion" MutualTlsAuthenticationProperty = Value Prelude.Text
+  set newValue MutualTlsAuthenticationProperty {..}
+    = MutualTlsAuthenticationProperty
+        {truststoreVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/DomainName/MutualTlsAuthenticationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.DomainName.MutualTlsAuthenticationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MutualTlsAuthenticationProperty :: Prelude.Type
+instance ToResourceProperties MutualTlsAuthenticationProperty
+instance Prelude.Eq MutualTlsAuthenticationProperty
+instance Prelude.Show MutualTlsAuthenticationProperty
+instance JSON.ToJSON MutualTlsAuthenticationProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration.hs b/gen/Stratosphere/ApiGatewayV2/Integration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration.hs
@@ -0,0 +1,193 @@
+module Stratosphere.ApiGatewayV2.Integration (
+        module Exports, Integration(..), mkIntegration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Integration.ResponseParameterMapProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Integration.TlsConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Integration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html>
+    Integration {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-apiid>
+                 apiId :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-connectionid>
+                 connectionId :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-connectiontype>
+                 connectionType :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-contenthandlingstrategy>
+                 contentHandlingStrategy :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-credentialsarn>
+                 credentialsArn :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-description>
+                 description :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationmethod>
+                 integrationMethod :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationsubtype>
+                 integrationSubtype :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationtype>
+                 integrationType :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-integrationuri>
+                 integrationUri :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-passthroughbehavior>
+                 passthroughBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-payloadformatversion>
+                 payloadFormatVersion :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-requestparameters>
+                 requestParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-requesttemplates>
+                 requestTemplates :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-responseparameters>
+                 responseParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text ResponseParameterMapProperty)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-templateselectionexpression>
+                 templateSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-timeoutinmillis>
+                 timeoutInMillis :: (Prelude.Maybe (Value Prelude.Integer)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-tlsconfig>
+                 tlsConfig :: (Prelude.Maybe TlsConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntegration ::
+  Value Prelude.Text -> Value Prelude.Text -> Integration
+mkIntegration apiId integrationType
+  = Integration
+      {haddock_workaround_ = (), apiId = apiId,
+       integrationType = integrationType, connectionId = Prelude.Nothing,
+       connectionType = Prelude.Nothing,
+       contentHandlingStrategy = Prelude.Nothing,
+       credentialsArn = Prelude.Nothing, description = Prelude.Nothing,
+       integrationMethod = Prelude.Nothing,
+       integrationSubtype = Prelude.Nothing,
+       integrationUri = Prelude.Nothing,
+       passthroughBehavior = Prelude.Nothing,
+       payloadFormatVersion = Prelude.Nothing,
+       requestParameters = Prelude.Nothing,
+       requestTemplates = Prelude.Nothing,
+       responseParameters = Prelude.Nothing,
+       templateSelectionExpression = Prelude.Nothing,
+       timeoutInMillis = Prelude.Nothing, tlsConfig = Prelude.Nothing}
+instance ToResourceProperties Integration where
+  toResourceProperties Integration {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Integration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "IntegrationType" JSON..= integrationType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ConnectionId" Prelude.<$> connectionId,
+                               (JSON..=) "ConnectionType" Prelude.<$> connectionType,
+                               (JSON..=) "ContentHandlingStrategy"
+                                 Prelude.<$> contentHandlingStrategy,
+                               (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
+                               (JSON..=) "IntegrationSubtype" Prelude.<$> integrationSubtype,
+                               (JSON..=) "IntegrationUri" Prelude.<$> integrationUri,
+                               (JSON..=) "PassthroughBehavior" Prelude.<$> passthroughBehavior,
+                               (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
+                               (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
+                               (JSON..=) "RequestTemplates" Prelude.<$> requestTemplates,
+                               (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
+                               (JSON..=) "TemplateSelectionExpression"
+                                 Prelude.<$> templateSelectionExpression,
+                               (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis,
+                               (JSON..=) "TlsConfig" Prelude.<$> tlsConfig]))}
+instance JSON.ToJSON Integration where
+  toJSON Integration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "IntegrationType" JSON..= integrationType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ConnectionId" Prelude.<$> connectionId,
+                  (JSON..=) "ConnectionType" Prelude.<$> connectionType,
+                  (JSON..=) "ContentHandlingStrategy"
+                    Prelude.<$> contentHandlingStrategy,
+                  (JSON..=) "CredentialsArn" Prelude.<$> credentialsArn,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "IntegrationMethod" Prelude.<$> integrationMethod,
+                  (JSON..=) "IntegrationSubtype" Prelude.<$> integrationSubtype,
+                  (JSON..=) "IntegrationUri" Prelude.<$> integrationUri,
+                  (JSON..=) "PassthroughBehavior" Prelude.<$> passthroughBehavior,
+                  (JSON..=) "PayloadFormatVersion" Prelude.<$> payloadFormatVersion,
+                  (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
+                  (JSON..=) "RequestTemplates" Prelude.<$> requestTemplates,
+                  (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
+                  (JSON..=) "TemplateSelectionExpression"
+                    Prelude.<$> templateSelectionExpression,
+                  (JSON..=) "TimeoutInMillis" Prelude.<$> timeoutInMillis,
+                  (JSON..=) "TlsConfig" Prelude.<$> tlsConfig])))
+instance Property "ApiId" Integration where
+  type PropertyType "ApiId" Integration = Value Prelude.Text
+  set newValue Integration {..} = Integration {apiId = newValue, ..}
+instance Property "ConnectionId" Integration where
+  type PropertyType "ConnectionId" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {connectionId = Prelude.pure newValue, ..}
+instance Property "ConnectionType" Integration where
+  type PropertyType "ConnectionType" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {connectionType = Prelude.pure newValue, ..}
+instance Property "ContentHandlingStrategy" Integration where
+  type PropertyType "ContentHandlingStrategy" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {contentHandlingStrategy = Prelude.pure newValue, ..}
+instance Property "CredentialsArn" Integration where
+  type PropertyType "CredentialsArn" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {credentialsArn = Prelude.pure newValue, ..}
+instance Property "Description" Integration where
+  type PropertyType "Description" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {description = Prelude.pure newValue, ..}
+instance Property "IntegrationMethod" Integration where
+  type PropertyType "IntegrationMethod" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {integrationMethod = Prelude.pure newValue, ..}
+instance Property "IntegrationSubtype" Integration where
+  type PropertyType "IntegrationSubtype" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {integrationSubtype = Prelude.pure newValue, ..}
+instance Property "IntegrationType" Integration where
+  type PropertyType "IntegrationType" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {integrationType = newValue, ..}
+instance Property "IntegrationUri" Integration where
+  type PropertyType "IntegrationUri" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {integrationUri = Prelude.pure newValue, ..}
+instance Property "PassthroughBehavior" Integration where
+  type PropertyType "PassthroughBehavior" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {passthroughBehavior = Prelude.pure newValue, ..}
+instance Property "PayloadFormatVersion" Integration where
+  type PropertyType "PayloadFormatVersion" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration {payloadFormatVersion = Prelude.pure newValue, ..}
+instance Property "RequestParameters" Integration where
+  type PropertyType "RequestParameters" Integration = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Integration {..}
+    = Integration {requestParameters = Prelude.pure newValue, ..}
+instance Property "RequestTemplates" Integration where
+  type PropertyType "RequestTemplates" Integration = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Integration {..}
+    = Integration {requestTemplates = Prelude.pure newValue, ..}
+instance Property "ResponseParameters" Integration where
+  type PropertyType "ResponseParameters" Integration = Prelude.Map Prelude.Text ResponseParameterMapProperty
+  set newValue Integration {..}
+    = Integration {responseParameters = Prelude.pure newValue, ..}
+instance Property "TemplateSelectionExpression" Integration where
+  type PropertyType "TemplateSelectionExpression" Integration = Value Prelude.Text
+  set newValue Integration {..}
+    = Integration
+        {templateSelectionExpression = Prelude.pure newValue, ..}
+instance Property "TimeoutInMillis" Integration where
+  type PropertyType "TimeoutInMillis" Integration = Value Prelude.Integer
+  set newValue Integration {..}
+    = Integration {timeoutInMillis = Prelude.pure newValue, ..}
+instance Property "TlsConfig" Integration where
+  type PropertyType "TlsConfig" Integration = TlsConfigProperty
+  set newValue Integration {..}
+    = Integration {tlsConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.ApiGatewayV2.Integration.ResponseParameterMapProperty (
+        module Exports, ResponseParameterMapProperty(..),
+        mkResponseParameterMapProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Integration.ResponseParameterProperty as Exports
+import Stratosphere.ResourceProperties
+data ResponseParameterMapProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparametermap.html>
+    ResponseParameterMapProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparametermap.html#cfn-apigatewayv2-integration-responseparametermap-responseparameters>
+                                  responseParameters :: (Prelude.Maybe [ResponseParameterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkResponseParameterMapProperty :: ResponseParameterMapProperty
+mkResponseParameterMapProperty
+  = ResponseParameterMapProperty
+      {haddock_workaround_ = (), responseParameters = Prelude.Nothing}
+instance ToResourceProperties ResponseParameterMapProperty where
+  toResourceProperties ResponseParameterMapProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Integration.ResponseParameterMap",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ResponseParameters" Prelude.<$> responseParameters])}
+instance JSON.ToJSON ResponseParameterMapProperty where
+  toJSON ResponseParameterMapProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ResponseParameters" Prelude.<$> responseParameters]))
+instance Property "ResponseParameters" ResponseParameterMapProperty where
+  type PropertyType "ResponseParameters" ResponseParameterMapProperty = [ResponseParameterProperty]
+  set newValue ResponseParameterMapProperty {..}
+    = ResponseParameterMapProperty
+        {responseParameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterMapProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Integration.ResponseParameterMapProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ResponseParameterMapProperty :: Prelude.Type
+instance ToResourceProperties ResponseParameterMapProperty
+instance Prelude.Eq ResponseParameterMapProperty
+instance Prelude.Show ResponseParameterMapProperty
+instance JSON.ToJSON ResponseParameterMapProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.ApiGatewayV2.Integration.ResponseParameterProperty (
+        ResponseParameterProperty(..), mkResponseParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ResponseParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html>
+    ResponseParameterProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-destination>
+                               destination :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-source>
+                               source :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkResponseParameterProperty :: ResponseParameterProperty
+mkResponseParameterProperty
+  = ResponseParameterProperty
+      {haddock_workaround_ = (), destination = Prelude.Nothing,
+       source = Prelude.Nothing}
+instance ToResourceProperties ResponseParameterProperty where
+  toResourceProperties ResponseParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Integration.ResponseParameter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Destination" Prelude.<$> destination,
+                            (JSON..=) "Source" Prelude.<$> source])}
+instance JSON.ToJSON ResponseParameterProperty where
+  toJSON ResponseParameterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Destination" Prelude.<$> destination,
+               (JSON..=) "Source" Prelude.<$> source]))
+instance Property "Destination" ResponseParameterProperty where
+  type PropertyType "Destination" ResponseParameterProperty = Value Prelude.Text
+  set newValue ResponseParameterProperty {..}
+    = ResponseParameterProperty
+        {destination = Prelude.pure newValue, ..}
+instance Property "Source" ResponseParameterProperty where
+  type PropertyType "Source" ResponseParameterProperty = Value Prelude.Text
+  set newValue ResponseParameterProperty {..}
+    = ResponseParameterProperty {source = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/ResponseParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Integration.ResponseParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ResponseParameterProperty :: Prelude.Type
+instance ToResourceProperties ResponseParameterProperty
+instance Prelude.Eq ResponseParameterProperty
+instance Prelude.Show ResponseParameterProperty
+instance JSON.ToJSON ResponseParameterProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs b/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.ApiGatewayV2.Integration.TlsConfigProperty (
+        TlsConfigProperty(..), mkTlsConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TlsConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-tlsconfig.html>
+    TlsConfigProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-tlsconfig.html#cfn-apigatewayv2-integration-tlsconfig-servernametoverify>
+                       serverNameToVerify :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTlsConfigProperty :: TlsConfigProperty
+mkTlsConfigProperty
+  = TlsConfigProperty
+      {haddock_workaround_ = (), serverNameToVerify = Prelude.Nothing}
+instance ToResourceProperties TlsConfigProperty where
+  toResourceProperties TlsConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Integration.TlsConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ServerNameToVerify" Prelude.<$> serverNameToVerify])}
+instance JSON.ToJSON TlsConfigProperty where
+  toJSON TlsConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ServerNameToVerify" Prelude.<$> serverNameToVerify]))
+instance Property "ServerNameToVerify" TlsConfigProperty where
+  type PropertyType "ServerNameToVerify" TlsConfigProperty = Value Prelude.Text
+  set newValue TlsConfigProperty {..}
+    = TlsConfigProperty
+        {serverNameToVerify = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Integration/TlsConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Integration.TlsConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TlsConfigProperty :: Prelude.Type
+instance ToResourceProperties TlsConfigProperty
+instance Prelude.Eq TlsConfigProperty
+instance Prelude.Show TlsConfigProperty
+instance JSON.ToJSON TlsConfigProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/IntegrationResponse.hs b/gen/Stratosphere/ApiGatewayV2/IntegrationResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/IntegrationResponse.hs
@@ -0,0 +1,100 @@
+module Stratosphere.ApiGatewayV2.IntegrationResponse (
+        IntegrationResponse(..), mkIntegrationResponse
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data IntegrationResponse
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html>
+    IntegrationResponse {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-apiid>
+                         apiId :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-contenthandlingstrategy>
+                         contentHandlingStrategy :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-integrationid>
+                         integrationId :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-integrationresponsekey>
+                         integrationResponseKey :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-responseparameters>
+                         responseParameters :: (Prelude.Maybe JSON.Object),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-responsetemplates>
+                         responseTemplates :: (Prelude.Maybe JSON.Object),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html#cfn-apigatewayv2-integrationresponse-templateselectionexpression>
+                         templateSelectionExpression :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkIntegrationResponse ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> IntegrationResponse
+mkIntegrationResponse apiId integrationId integrationResponseKey
+  = IntegrationResponse
+      {haddock_workaround_ = (), apiId = apiId,
+       integrationId = integrationId,
+       integrationResponseKey = integrationResponseKey,
+       contentHandlingStrategy = Prelude.Nothing,
+       responseParameters = Prelude.Nothing,
+       responseTemplates = Prelude.Nothing,
+       templateSelectionExpression = Prelude.Nothing}
+instance ToResourceProperties IntegrationResponse where
+  toResourceProperties IntegrationResponse {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::IntegrationResponse",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "IntegrationId" JSON..= integrationId,
+                            "IntegrationResponseKey" JSON..= integrationResponseKey]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ContentHandlingStrategy"
+                                 Prelude.<$> contentHandlingStrategy,
+                               (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
+                               (JSON..=) "ResponseTemplates" Prelude.<$> responseTemplates,
+                               (JSON..=) "TemplateSelectionExpression"
+                                 Prelude.<$> templateSelectionExpression]))}
+instance JSON.ToJSON IntegrationResponse where
+  toJSON IntegrationResponse {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "IntegrationId" JSON..= integrationId,
+               "IntegrationResponseKey" JSON..= integrationResponseKey]
+              (Prelude.catMaybes
+                 [(JSON..=) "ContentHandlingStrategy"
+                    Prelude.<$> contentHandlingStrategy,
+                  (JSON..=) "ResponseParameters" Prelude.<$> responseParameters,
+                  (JSON..=) "ResponseTemplates" Prelude.<$> responseTemplates,
+                  (JSON..=) "TemplateSelectionExpression"
+                    Prelude.<$> templateSelectionExpression])))
+instance Property "ApiId" IntegrationResponse where
+  type PropertyType "ApiId" IntegrationResponse = Value Prelude.Text
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse {apiId = newValue, ..}
+instance Property "ContentHandlingStrategy" IntegrationResponse where
+  type PropertyType "ContentHandlingStrategy" IntegrationResponse = Value Prelude.Text
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse
+        {contentHandlingStrategy = Prelude.pure newValue, ..}
+instance Property "IntegrationId" IntegrationResponse where
+  type PropertyType "IntegrationId" IntegrationResponse = Value Prelude.Text
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse {integrationId = newValue, ..}
+instance Property "IntegrationResponseKey" IntegrationResponse where
+  type PropertyType "IntegrationResponseKey" IntegrationResponse = Value Prelude.Text
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse {integrationResponseKey = newValue, ..}
+instance Property "ResponseParameters" IntegrationResponse where
+  type PropertyType "ResponseParameters" IntegrationResponse = JSON.Object
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse
+        {responseParameters = Prelude.pure newValue, ..}
+instance Property "ResponseTemplates" IntegrationResponse where
+  type PropertyType "ResponseTemplates" IntegrationResponse = JSON.Object
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse
+        {responseTemplates = Prelude.pure newValue, ..}
+instance Property "TemplateSelectionExpression" IntegrationResponse where
+  type PropertyType "TemplateSelectionExpression" IntegrationResponse = Value Prelude.Text
+  set newValue IntegrationResponse {..}
+    = IntegrationResponse
+        {templateSelectionExpression = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Model.hs b/gen/Stratosphere/ApiGatewayV2/Model.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Model.hs
@@ -0,0 +1,68 @@
+module Stratosphere.ApiGatewayV2.Model (
+        Model(..), mkModel
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Model
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html>
+    Model {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html#cfn-apigatewayv2-model-apiid>
+           apiId :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html#cfn-apigatewayv2-model-contenttype>
+           contentType :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html#cfn-apigatewayv2-model-description>
+           description :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html#cfn-apigatewayv2-model-name>
+           name :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html#cfn-apigatewayv2-model-schema>
+           schema :: JSON.Object}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkModel ::
+  Value Prelude.Text -> Value Prelude.Text -> JSON.Object -> Model
+mkModel apiId name schema
+  = Model
+      {haddock_workaround_ = (), apiId = apiId, name = name,
+       schema = schema, contentType = Prelude.Nothing,
+       description = Prelude.Nothing}
+instance ToResourceProperties Model where
+  toResourceProperties Model {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Model",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "Name" JSON..= name,
+                            "Schema" JSON..= schema]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ContentType" Prelude.<$> contentType,
+                               (JSON..=) "Description" Prelude.<$> description]))}
+instance JSON.ToJSON Model where
+  toJSON Model {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "Name" JSON..= name,
+               "Schema" JSON..= schema]
+              (Prelude.catMaybes
+                 [(JSON..=) "ContentType" Prelude.<$> contentType,
+                  (JSON..=) "Description" Prelude.<$> description])))
+instance Property "ApiId" Model where
+  type PropertyType "ApiId" Model = Value Prelude.Text
+  set newValue Model {..} = Model {apiId = newValue, ..}
+instance Property "ContentType" Model where
+  type PropertyType "ContentType" Model = Value Prelude.Text
+  set newValue Model {..}
+    = Model {contentType = Prelude.pure newValue, ..}
+instance Property "Description" Model where
+  type PropertyType "Description" Model = Value Prelude.Text
+  set newValue Model {..}
+    = Model {description = Prelude.pure newValue, ..}
+instance Property "Name" Model where
+  type PropertyType "Name" Model = Value Prelude.Text
+  set newValue Model {..} = Model {name = newValue, ..}
+instance Property "Schema" Model where
+  type PropertyType "Schema" Model = JSON.Object
+  set newValue Model {..} = Model {schema = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Route.hs b/gen/Stratosphere/ApiGatewayV2/Route.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Route.hs
@@ -0,0 +1,136 @@
+module Stratosphere.ApiGatewayV2.Route (
+        Route(..), mkRoute
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Route
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html>
+    Route {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-apiid>
+           apiId :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-apikeyrequired>
+           apiKeyRequired :: (Prelude.Maybe (Value Prelude.Bool)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-authorizationscopes>
+           authorizationScopes :: (Prelude.Maybe (ValueList Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-authorizationtype>
+           authorizationType :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-authorizerid>
+           authorizerId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-modelselectionexpression>
+           modelSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-operationname>
+           operationName :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-requestmodels>
+           requestModels :: (Prelude.Maybe JSON.Object),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-requestparameters>
+           requestParameters :: (Prelude.Maybe JSON.Object),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-routekey>
+           routeKey :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-routeresponseselectionexpression>
+           routeResponseSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html#cfn-apigatewayv2-route-target>
+           target :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoute :: Value Prelude.Text -> Value Prelude.Text -> Route
+mkRoute apiId routeKey
+  = Route
+      {haddock_workaround_ = (), apiId = apiId, routeKey = routeKey,
+       apiKeyRequired = Prelude.Nothing,
+       authorizationScopes = Prelude.Nothing,
+       authorizationType = Prelude.Nothing,
+       authorizerId = Prelude.Nothing,
+       modelSelectionExpression = Prelude.Nothing,
+       operationName = Prelude.Nothing, requestModels = Prelude.Nothing,
+       requestParameters = Prelude.Nothing,
+       routeResponseSelectionExpression = Prelude.Nothing,
+       target = Prelude.Nothing}
+instance ToResourceProperties Route where
+  toResourceProperties Route {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Route",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "RouteKey" JSON..= routeKey]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ApiKeyRequired" Prelude.<$> apiKeyRequired,
+                               (JSON..=) "AuthorizationScopes" Prelude.<$> authorizationScopes,
+                               (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+                               (JSON..=) "AuthorizerId" Prelude.<$> authorizerId,
+                               (JSON..=) "ModelSelectionExpression"
+                                 Prelude.<$> modelSelectionExpression,
+                               (JSON..=) "OperationName" Prelude.<$> operationName,
+                               (JSON..=) "RequestModels" Prelude.<$> requestModels,
+                               (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
+                               (JSON..=) "RouteResponseSelectionExpression"
+                                 Prelude.<$> routeResponseSelectionExpression,
+                               (JSON..=) "Target" Prelude.<$> target]))}
+instance JSON.ToJSON Route where
+  toJSON Route {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "RouteKey" JSON..= routeKey]
+              (Prelude.catMaybes
+                 [(JSON..=) "ApiKeyRequired" Prelude.<$> apiKeyRequired,
+                  (JSON..=) "AuthorizationScopes" Prelude.<$> authorizationScopes,
+                  (JSON..=) "AuthorizationType" Prelude.<$> authorizationType,
+                  (JSON..=) "AuthorizerId" Prelude.<$> authorizerId,
+                  (JSON..=) "ModelSelectionExpression"
+                    Prelude.<$> modelSelectionExpression,
+                  (JSON..=) "OperationName" Prelude.<$> operationName,
+                  (JSON..=) "RequestModels" Prelude.<$> requestModels,
+                  (JSON..=) "RequestParameters" Prelude.<$> requestParameters,
+                  (JSON..=) "RouteResponseSelectionExpression"
+                    Prelude.<$> routeResponseSelectionExpression,
+                  (JSON..=) "Target" Prelude.<$> target])))
+instance Property "ApiId" Route where
+  type PropertyType "ApiId" Route = Value Prelude.Text
+  set newValue Route {..} = Route {apiId = newValue, ..}
+instance Property "ApiKeyRequired" Route where
+  type PropertyType "ApiKeyRequired" Route = Value Prelude.Bool
+  set newValue Route {..}
+    = Route {apiKeyRequired = Prelude.pure newValue, ..}
+instance Property "AuthorizationScopes" Route where
+  type PropertyType "AuthorizationScopes" Route = ValueList Prelude.Text
+  set newValue Route {..}
+    = Route {authorizationScopes = Prelude.pure newValue, ..}
+instance Property "AuthorizationType" Route where
+  type PropertyType "AuthorizationType" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route {authorizationType = Prelude.pure newValue, ..}
+instance Property "AuthorizerId" Route where
+  type PropertyType "AuthorizerId" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route {authorizerId = Prelude.pure newValue, ..}
+instance Property "ModelSelectionExpression" Route where
+  type PropertyType "ModelSelectionExpression" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route {modelSelectionExpression = Prelude.pure newValue, ..}
+instance Property "OperationName" Route where
+  type PropertyType "OperationName" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route {operationName = Prelude.pure newValue, ..}
+instance Property "RequestModels" Route where
+  type PropertyType "RequestModels" Route = JSON.Object
+  set newValue Route {..}
+    = Route {requestModels = Prelude.pure newValue, ..}
+instance Property "RequestParameters" Route where
+  type PropertyType "RequestParameters" Route = JSON.Object
+  set newValue Route {..}
+    = Route {requestParameters = Prelude.pure newValue, ..}
+instance Property "RouteKey" Route where
+  type PropertyType "RouteKey" Route = Value Prelude.Text
+  set newValue Route {..} = Route {routeKey = newValue, ..}
+instance Property "RouteResponseSelectionExpression" Route where
+  type PropertyType "RouteResponseSelectionExpression" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route
+        {routeResponseSelectionExpression = Prelude.pure newValue, ..}
+instance Property "Target" Route where
+  type PropertyType "Target" Route = Value Prelude.Text
+  set newValue Route {..}
+    = Route {target = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RouteResponse.hs b/gen/Stratosphere/ApiGatewayV2/RouteResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RouteResponse.hs
@@ -0,0 +1,86 @@
+module Stratosphere.ApiGatewayV2.RouteResponse (
+        module Exports, RouteResponse(..), mkRouteResponse
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RouteResponse.ParameterConstraintsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RouteResponse
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html>
+    RouteResponse {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-apiid>
+                   apiId :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-modelselectionexpression>
+                   modelSelectionExpression :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-responsemodels>
+                   responseModels :: (Prelude.Maybe JSON.Object),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-responseparameters>
+                   responseParameters :: (Prelude.Maybe (Prelude.Map Prelude.Text ParameterConstraintsProperty)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-routeid>
+                   routeId :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html#cfn-apigatewayv2-routeresponse-routeresponsekey>
+                   routeResponseKey :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRouteResponse ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> Value Prelude.Text -> RouteResponse
+mkRouteResponse apiId routeId routeResponseKey
+  = RouteResponse
+      {haddock_workaround_ = (), apiId = apiId, routeId = routeId,
+       routeResponseKey = routeResponseKey,
+       modelSelectionExpression = Prelude.Nothing,
+       responseModels = Prelude.Nothing,
+       responseParameters = Prelude.Nothing}
+instance ToResourceProperties RouteResponse where
+  toResourceProperties RouteResponse {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RouteResponse",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "RouteId" JSON..= routeId,
+                            "RouteResponseKey" JSON..= routeResponseKey]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ModelSelectionExpression"
+                                 Prelude.<$> modelSelectionExpression,
+                               (JSON..=) "ResponseModels" Prelude.<$> responseModels,
+                               (JSON..=) "ResponseParameters" Prelude.<$> responseParameters]))}
+instance JSON.ToJSON RouteResponse where
+  toJSON RouteResponse {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "RouteId" JSON..= routeId,
+               "RouteResponseKey" JSON..= routeResponseKey]
+              (Prelude.catMaybes
+                 [(JSON..=) "ModelSelectionExpression"
+                    Prelude.<$> modelSelectionExpression,
+                  (JSON..=) "ResponseModels" Prelude.<$> responseModels,
+                  (JSON..=) "ResponseParameters" Prelude.<$> responseParameters])))
+instance Property "ApiId" RouteResponse where
+  type PropertyType "ApiId" RouteResponse = Value Prelude.Text
+  set newValue RouteResponse {..}
+    = RouteResponse {apiId = newValue, ..}
+instance Property "ModelSelectionExpression" RouteResponse where
+  type PropertyType "ModelSelectionExpression" RouteResponse = Value Prelude.Text
+  set newValue RouteResponse {..}
+    = RouteResponse
+        {modelSelectionExpression = Prelude.pure newValue, ..}
+instance Property "ResponseModels" RouteResponse where
+  type PropertyType "ResponseModels" RouteResponse = JSON.Object
+  set newValue RouteResponse {..}
+    = RouteResponse {responseModels = Prelude.pure newValue, ..}
+instance Property "ResponseParameters" RouteResponse where
+  type PropertyType "ResponseParameters" RouteResponse = Prelude.Map Prelude.Text ParameterConstraintsProperty
+  set newValue RouteResponse {..}
+    = RouteResponse {responseParameters = Prelude.pure newValue, ..}
+instance Property "RouteId" RouteResponse where
+  type PropertyType "RouteId" RouteResponse = Value Prelude.Text
+  set newValue RouteResponse {..}
+    = RouteResponse {routeId = newValue, ..}
+instance Property "RouteResponseKey" RouteResponse where
+  type PropertyType "RouteResponseKey" RouteResponse = Value Prelude.Text
+  set newValue RouteResponse {..}
+    = RouteResponse {routeResponseKey = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs b/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.ApiGatewayV2.RouteResponse.ParameterConstraintsProperty (
+        ParameterConstraintsProperty(..), mkParameterConstraintsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ParameterConstraintsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routeresponse-parameterconstraints.html>
+    ParameterConstraintsProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routeresponse-parameterconstraints.html#cfn-apigatewayv2-routeresponse-parameterconstraints-required>
+                                  required :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkParameterConstraintsProperty ::
+  Value Prelude.Bool -> ParameterConstraintsProperty
+mkParameterConstraintsProperty required
+  = ParameterConstraintsProperty
+      {haddock_workaround_ = (), required = required}
+instance ToResourceProperties ParameterConstraintsProperty where
+  toResourceProperties ParameterConstraintsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints",
+         supportsTags = Prelude.False,
+         properties = ["Required" JSON..= required]}
+instance JSON.ToJSON ParameterConstraintsProperty where
+  toJSON ParameterConstraintsProperty {..}
+    = JSON.object ["Required" JSON..= required]
+instance Property "Required" ParameterConstraintsProperty where
+  type PropertyType "Required" ParameterConstraintsProperty = Value Prelude.Bool
+  set newValue ParameterConstraintsProperty {..}
+    = ParameterConstraintsProperty {required = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RouteResponse/ParameterConstraintsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RouteResponse.ParameterConstraintsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ParameterConstraintsProperty :: Prelude.Type
+instance ToResourceProperties ParameterConstraintsProperty
+instance Prelude.Eq ParameterConstraintsProperty
+instance Prelude.Show ParameterConstraintsProperty
+instance JSON.ToJSON ParameterConstraintsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule.hs
@@ -0,0 +1,61 @@
+module Stratosphere.ApiGatewayV2.RoutingRule (
+        module Exports, RoutingRule(..), mkRoutingRule
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.ActionProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.ConditionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RoutingRule
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routingrule.html>
+    RoutingRule {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routingrule.html#cfn-apigatewayv2-routingrule-actions>
+                 actions :: [ActionProperty],
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routingrule.html#cfn-apigatewayv2-routingrule-conditions>
+                 conditions :: [ConditionProperty],
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routingrule.html#cfn-apigatewayv2-routingrule-domainnamearn>
+                 domainNameArn :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routingrule.html#cfn-apigatewayv2-routingrule-priority>
+                 priority :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRoutingRule ::
+  [ActionProperty]
+  -> [ConditionProperty]
+     -> Value Prelude.Text -> Value Prelude.Integer -> RoutingRule
+mkRoutingRule actions conditions domainNameArn priority
+  = RoutingRule
+      {haddock_workaround_ = (), actions = actions,
+       conditions = conditions, domainNameArn = domainNameArn,
+       priority = priority}
+instance ToResourceProperties RoutingRule where
+  toResourceProperties RoutingRule {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule",
+         supportsTags = Prelude.False,
+         properties = ["Actions" JSON..= actions,
+                       "Conditions" JSON..= conditions,
+                       "DomainNameArn" JSON..= domainNameArn,
+                       "Priority" JSON..= priority]}
+instance JSON.ToJSON RoutingRule where
+  toJSON RoutingRule {..}
+    = JSON.object
+        ["Actions" JSON..= actions, "Conditions" JSON..= conditions,
+         "DomainNameArn" JSON..= domainNameArn, "Priority" JSON..= priority]
+instance Property "Actions" RoutingRule where
+  type PropertyType "Actions" RoutingRule = [ActionProperty]
+  set newValue RoutingRule {..}
+    = RoutingRule {actions = newValue, ..}
+instance Property "Conditions" RoutingRule where
+  type PropertyType "Conditions" RoutingRule = [ConditionProperty]
+  set newValue RoutingRule {..}
+    = RoutingRule {conditions = newValue, ..}
+instance Property "DomainNameArn" RoutingRule where
+  type PropertyType "DomainNameArn" RoutingRule = Value Prelude.Text
+  set newValue RoutingRule {..}
+    = RoutingRule {domainNameArn = newValue, ..}
+instance Property "Priority" RoutingRule where
+  type PropertyType "Priority" RoutingRule = Value Prelude.Integer
+  set newValue RoutingRule {..}
+    = RoutingRule {priority = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ActionInvokeApiProperty (
+        ActionInvokeApiProperty(..), mkActionInvokeApiProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ActionInvokeApiProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-actioninvokeapi.html>
+    ActionInvokeApiProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-actioninvokeapi.html#cfn-apigatewayv2-routingrule-actioninvokeapi-apiid>
+                             apiId :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-actioninvokeapi.html#cfn-apigatewayv2-routingrule-actioninvokeapi-stage>
+                             stage :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-actioninvokeapi.html#cfn-apigatewayv2-routingrule-actioninvokeapi-stripbasepath>
+                             stripBasePath :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionInvokeApiProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ActionInvokeApiProperty
+mkActionInvokeApiProperty apiId stage
+  = ActionInvokeApiProperty
+      {haddock_workaround_ = (), apiId = apiId, stage = stage,
+       stripBasePath = Prelude.Nothing}
+instance ToResourceProperties ActionInvokeApiProperty where
+  toResourceProperties ActionInvokeApiProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.ActionInvokeApi",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "Stage" JSON..= stage]
+                           (Prelude.catMaybes
+                              [(JSON..=) "StripBasePath" Prelude.<$> stripBasePath]))}
+instance JSON.ToJSON ActionInvokeApiProperty where
+  toJSON ActionInvokeApiProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "Stage" JSON..= stage]
+              (Prelude.catMaybes
+                 [(JSON..=) "StripBasePath" Prelude.<$> stripBasePath])))
+instance Property "ApiId" ActionInvokeApiProperty where
+  type PropertyType "ApiId" ActionInvokeApiProperty = Value Prelude.Text
+  set newValue ActionInvokeApiProperty {..}
+    = ActionInvokeApiProperty {apiId = newValue, ..}
+instance Property "Stage" ActionInvokeApiProperty where
+  type PropertyType "Stage" ActionInvokeApiProperty = Value Prelude.Text
+  set newValue ActionInvokeApiProperty {..}
+    = ActionInvokeApiProperty {stage = newValue, ..}
+instance Property "StripBasePath" ActionInvokeApiProperty where
+  type PropertyType "StripBasePath" ActionInvokeApiProperty = Value Prelude.Bool
+  set newValue ActionInvokeApiProperty {..}
+    = ActionInvokeApiProperty
+        {stripBasePath = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionInvokeApiProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ActionInvokeApiProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionInvokeApiProperty :: Prelude.Type
+instance ToResourceProperties ActionInvokeApiProperty
+instance Prelude.Eq ActionInvokeApiProperty
+instance Prelude.Show ActionInvokeApiProperty
+instance JSON.ToJSON ActionInvokeApiProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ActionProperty (
+        module Exports, ActionProperty(..), mkActionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.ActionInvokeApiProperty as Exports
+import Stratosphere.ResourceProperties
+data ActionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-action.html>
+    ActionProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-action.html#cfn-apigatewayv2-routingrule-action-invokeapi>
+                    invokeApi :: ActionInvokeApiProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionProperty :: ActionInvokeApiProperty -> ActionProperty
+mkActionProperty invokeApi
+  = ActionProperty {haddock_workaround_ = (), invokeApi = invokeApi}
+instance ToResourceProperties ActionProperty where
+  toResourceProperties ActionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.Action",
+         supportsTags = Prelude.False,
+         properties = ["InvokeApi" JSON..= invokeApi]}
+instance JSON.ToJSON ActionProperty where
+  toJSON ActionProperty {..}
+    = JSON.object ["InvokeApi" JSON..= invokeApi]
+instance Property "InvokeApi" ActionProperty where
+  type PropertyType "InvokeApi" ActionProperty = ActionInvokeApiProperty
+  set newValue ActionProperty {..}
+    = ActionProperty {invokeApi = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ActionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ActionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionProperty :: Prelude.Type
+instance ToResourceProperties ActionProperty
+instance Prelude.Eq ActionProperty
+instance Prelude.Show ActionProperty
+instance JSON.ToJSON ActionProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ConditionProperty (
+        module Exports, ConditionProperty(..), mkConditionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.MatchBasePathsProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.MatchHeadersProperty as Exports
+import Stratosphere.ResourceProperties
+data ConditionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-condition.html>
+    ConditionProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-condition.html#cfn-apigatewayv2-routingrule-condition-matchbasepaths>
+                       matchBasePaths :: (Prelude.Maybe MatchBasePathsProperty),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-condition.html#cfn-apigatewayv2-routingrule-condition-matchheaders>
+                       matchHeaders :: (Prelude.Maybe MatchHeadersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkConditionProperty :: ConditionProperty
+mkConditionProperty
+  = ConditionProperty
+      {haddock_workaround_ = (), matchBasePaths = Prelude.Nothing,
+       matchHeaders = Prelude.Nothing}
+instance ToResourceProperties ConditionProperty where
+  toResourceProperties ConditionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.Condition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MatchBasePaths" Prelude.<$> matchBasePaths,
+                            (JSON..=) "MatchHeaders" Prelude.<$> matchHeaders])}
+instance JSON.ToJSON ConditionProperty where
+  toJSON ConditionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MatchBasePaths" Prelude.<$> matchBasePaths,
+               (JSON..=) "MatchHeaders" Prelude.<$> matchHeaders]))
+instance Property "MatchBasePaths" ConditionProperty where
+  type PropertyType "MatchBasePaths" ConditionProperty = MatchBasePathsProperty
+  set newValue ConditionProperty {..}
+    = ConditionProperty {matchBasePaths = Prelude.pure newValue, ..}
+instance Property "MatchHeaders" ConditionProperty where
+  type PropertyType "MatchHeaders" ConditionProperty = MatchHeadersProperty
+  set newValue ConditionProperty {..}
+    = ConditionProperty {matchHeaders = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/ConditionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.ConditionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ConditionProperty :: Prelude.Type
+instance ToResourceProperties ConditionProperty
+instance Prelude.Eq ConditionProperty
+instance Prelude.Show ConditionProperty
+instance JSON.ToJSON ConditionProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchBasePathsProperty (
+        MatchBasePathsProperty(..), mkMatchBasePathsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MatchBasePathsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchbasepaths.html>
+    MatchBasePathsProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchbasepaths.html#cfn-apigatewayv2-routingrule-matchbasepaths-anyof>
+                            anyOf :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchBasePathsProperty ::
+  ValueList Prelude.Text -> MatchBasePathsProperty
+mkMatchBasePathsProperty anyOf
+  = MatchBasePathsProperty {haddock_workaround_ = (), anyOf = anyOf}
+instance ToResourceProperties MatchBasePathsProperty where
+  toResourceProperties MatchBasePathsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.MatchBasePaths",
+         supportsTags = Prelude.False, properties = ["AnyOf" JSON..= anyOf]}
+instance JSON.ToJSON MatchBasePathsProperty where
+  toJSON MatchBasePathsProperty {..}
+    = JSON.object ["AnyOf" JSON..= anyOf]
+instance Property "AnyOf" MatchBasePathsProperty where
+  type PropertyType "AnyOf" MatchBasePathsProperty = ValueList Prelude.Text
+  set newValue MatchBasePathsProperty {..}
+    = MatchBasePathsProperty {anyOf = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchBasePathsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchBasePathsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MatchBasePathsProperty :: Prelude.Type
+instance ToResourceProperties MatchBasePathsProperty
+instance Prelude.Eq MatchBasePathsProperty
+instance Prelude.Show MatchBasePathsProperty
+instance JSON.ToJSON MatchBasePathsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchHeaderValueProperty (
+        MatchHeaderValueProperty(..), mkMatchHeaderValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MatchHeaderValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchheadervalue.html>
+    MatchHeaderValueProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchheadervalue.html#cfn-apigatewayv2-routingrule-matchheadervalue-header>
+                              header :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchheadervalue.html#cfn-apigatewayv2-routingrule-matchheadervalue-valueglob>
+                              valueGlob :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchHeaderValueProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> MatchHeaderValueProperty
+mkMatchHeaderValueProperty header valueGlob
+  = MatchHeaderValueProperty
+      {haddock_workaround_ = (), header = header, valueGlob = valueGlob}
+instance ToResourceProperties MatchHeaderValueProperty where
+  toResourceProperties MatchHeaderValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.MatchHeaderValue",
+         supportsTags = Prelude.False,
+         properties = ["Header" JSON..= header,
+                       "ValueGlob" JSON..= valueGlob]}
+instance JSON.ToJSON MatchHeaderValueProperty where
+  toJSON MatchHeaderValueProperty {..}
+    = JSON.object
+        ["Header" JSON..= header, "ValueGlob" JSON..= valueGlob]
+instance Property "Header" MatchHeaderValueProperty where
+  type PropertyType "Header" MatchHeaderValueProperty = Value Prelude.Text
+  set newValue MatchHeaderValueProperty {..}
+    = MatchHeaderValueProperty {header = newValue, ..}
+instance Property "ValueGlob" MatchHeaderValueProperty where
+  type PropertyType "ValueGlob" MatchHeaderValueProperty = Value Prelude.Text
+  set newValue MatchHeaderValueProperty {..}
+    = MatchHeaderValueProperty {valueGlob = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeaderValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchHeaderValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MatchHeaderValueProperty :: Prelude.Type
+instance ToResourceProperties MatchHeaderValueProperty
+instance Prelude.Eq MatchHeaderValueProperty
+instance Prelude.Show MatchHeaderValueProperty
+instance JSON.ToJSON MatchHeaderValueProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs
@@ -0,0 +1,30 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchHeadersProperty (
+        module Exports, MatchHeadersProperty(..), mkMatchHeadersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.RoutingRule.MatchHeaderValueProperty as Exports
+import Stratosphere.ResourceProperties
+data MatchHeadersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchheaders.html>
+    MatchHeadersProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routingrule-matchheaders.html#cfn-apigatewayv2-routingrule-matchheaders-anyof>
+                          anyOf :: [MatchHeaderValueProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMatchHeadersProperty ::
+  [MatchHeaderValueProperty] -> MatchHeadersProperty
+mkMatchHeadersProperty anyOf
+  = MatchHeadersProperty {haddock_workaround_ = (), anyOf = anyOf}
+instance ToResourceProperties MatchHeadersProperty where
+  toResourceProperties MatchHeadersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::RoutingRule.MatchHeaders",
+         supportsTags = Prelude.False, properties = ["AnyOf" JSON..= anyOf]}
+instance JSON.ToJSON MatchHeadersProperty where
+  toJSON MatchHeadersProperty {..}
+    = JSON.object ["AnyOf" JSON..= anyOf]
+instance Property "AnyOf" MatchHeadersProperty where
+  type PropertyType "AnyOf" MatchHeadersProperty = [MatchHeaderValueProperty]
+  set newValue MatchHeadersProperty {..}
+    = MatchHeadersProperty {anyOf = newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/RoutingRule/MatchHeadersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.RoutingRule.MatchHeadersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MatchHeadersProperty :: Prelude.Type
+instance ToResourceProperties MatchHeadersProperty
+instance Prelude.Eq MatchHeadersProperty
+instance Prelude.Show MatchHeadersProperty
+instance JSON.ToJSON MatchHeadersProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Stage.hs b/gen/Stratosphere/ApiGatewayV2/Stage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Stage.hs
@@ -0,0 +1,129 @@
+module Stratosphere.ApiGatewayV2.Stage (
+        module Exports, Stage(..), mkStage
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Stage.AccessLogSettingsProperty as Exports
+import {-# SOURCE #-} Stratosphere.ApiGatewayV2.Stage.RouteSettingsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Stage
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html>
+    Stage {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-accesslogsettings>
+           accessLogSettings :: (Prelude.Maybe AccessLogSettingsProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-accesspolicyid>
+           accessPolicyId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-apiid>
+           apiId :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-autodeploy>
+           autoDeploy :: (Prelude.Maybe (Value Prelude.Bool)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-clientcertificateid>
+           clientCertificateId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-defaultroutesettings>
+           defaultRouteSettings :: (Prelude.Maybe RouteSettingsProperty),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-deploymentid>
+           deploymentId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-description>
+           description :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings>
+           routeSettings :: (Prelude.Maybe JSON.Object),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagename>
+           stageName :: (Value Prelude.Text),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagevariables>
+           stageVariables :: (Prelude.Maybe JSON.Object),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-tags>
+           tags :: (Prelude.Maybe JSON.Object)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStage :: Value Prelude.Text -> Value Prelude.Text -> Stage
+mkStage apiId stageName
+  = Stage
+      {haddock_workaround_ = (), apiId = apiId, stageName = stageName,
+       accessLogSettings = Prelude.Nothing,
+       accessPolicyId = Prelude.Nothing, autoDeploy = Prelude.Nothing,
+       clientCertificateId = Prelude.Nothing,
+       defaultRouteSettings = Prelude.Nothing,
+       deploymentId = Prelude.Nothing, description = Prelude.Nothing,
+       routeSettings = Prelude.Nothing, stageVariables = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Stage where
+  toResourceProperties Stage {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Stage", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApiId" JSON..= apiId, "StageName" JSON..= stageName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AccessLogSettings" Prelude.<$> accessLogSettings,
+                               (JSON..=) "AccessPolicyId" Prelude.<$> accessPolicyId,
+                               (JSON..=) "AutoDeploy" Prelude.<$> autoDeploy,
+                               (JSON..=) "ClientCertificateId" Prelude.<$> clientCertificateId,
+                               (JSON..=) "DefaultRouteSettings" Prelude.<$> defaultRouteSettings,
+                               (JSON..=) "DeploymentId" Prelude.<$> deploymentId,
+                               (JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "RouteSettings" Prelude.<$> routeSettings,
+                               (JSON..=) "StageVariables" Prelude.<$> stageVariables,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Stage where
+  toJSON Stage {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApiId" JSON..= apiId, "StageName" JSON..= stageName]
+              (Prelude.catMaybes
+                 [(JSON..=) "AccessLogSettings" Prelude.<$> accessLogSettings,
+                  (JSON..=) "AccessPolicyId" Prelude.<$> accessPolicyId,
+                  (JSON..=) "AutoDeploy" Prelude.<$> autoDeploy,
+                  (JSON..=) "ClientCertificateId" Prelude.<$> clientCertificateId,
+                  (JSON..=) "DefaultRouteSettings" Prelude.<$> defaultRouteSettings,
+                  (JSON..=) "DeploymentId" Prelude.<$> deploymentId,
+                  (JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "RouteSettings" Prelude.<$> routeSettings,
+                  (JSON..=) "StageVariables" Prelude.<$> stageVariables,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "AccessLogSettings" Stage where
+  type PropertyType "AccessLogSettings" Stage = AccessLogSettingsProperty
+  set newValue Stage {..}
+    = Stage {accessLogSettings = Prelude.pure newValue, ..}
+instance Property "AccessPolicyId" Stage where
+  type PropertyType "AccessPolicyId" Stage = Value Prelude.Text
+  set newValue Stage {..}
+    = Stage {accessPolicyId = Prelude.pure newValue, ..}
+instance Property "ApiId" Stage where
+  type PropertyType "ApiId" Stage = Value Prelude.Text
+  set newValue Stage {..} = Stage {apiId = newValue, ..}
+instance Property "AutoDeploy" Stage where
+  type PropertyType "AutoDeploy" Stage = Value Prelude.Bool
+  set newValue Stage {..}
+    = Stage {autoDeploy = Prelude.pure newValue, ..}
+instance Property "ClientCertificateId" Stage where
+  type PropertyType "ClientCertificateId" Stage = Value Prelude.Text
+  set newValue Stage {..}
+    = Stage {clientCertificateId = Prelude.pure newValue, ..}
+instance Property "DefaultRouteSettings" Stage where
+  type PropertyType "DefaultRouteSettings" Stage = RouteSettingsProperty
+  set newValue Stage {..}
+    = Stage {defaultRouteSettings = Prelude.pure newValue, ..}
+instance Property "DeploymentId" Stage where
+  type PropertyType "DeploymentId" Stage = Value Prelude.Text
+  set newValue Stage {..}
+    = Stage {deploymentId = Prelude.pure newValue, ..}
+instance Property "Description" Stage where
+  type PropertyType "Description" Stage = Value Prelude.Text
+  set newValue Stage {..}
+    = Stage {description = Prelude.pure newValue, ..}
+instance Property "RouteSettings" Stage where
+  type PropertyType "RouteSettings" Stage = JSON.Object
+  set newValue Stage {..}
+    = Stage {routeSettings = Prelude.pure newValue, ..}
+instance Property "StageName" Stage where
+  type PropertyType "StageName" Stage = Value Prelude.Text
+  set newValue Stage {..} = Stage {stageName = newValue, ..}
+instance Property "StageVariables" Stage where
+  type PropertyType "StageVariables" Stage = JSON.Object
+  set newValue Stage {..}
+    = Stage {stageVariables = Prelude.pure newValue, ..}
+instance Property "Tags" Stage where
+  type PropertyType "Tags" Stage = JSON.Object
+  set newValue Stage {..} = Stage {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs b/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.ApiGatewayV2.Stage.AccessLogSettingsProperty (
+        AccessLogSettingsProperty(..), mkAccessLogSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AccessLogSettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-accesslogsettings.html>
+    AccessLogSettingsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-accesslogsettings.html#cfn-apigatewayv2-stage-accesslogsettings-destinationarn>
+                               destinationArn :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-accesslogsettings.html#cfn-apigatewayv2-stage-accesslogsettings-format>
+                               format :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAccessLogSettingsProperty :: AccessLogSettingsProperty
+mkAccessLogSettingsProperty
+  = AccessLogSettingsProperty
+      {haddock_workaround_ = (), destinationArn = Prelude.Nothing,
+       format = Prelude.Nothing}
+instance ToResourceProperties AccessLogSettingsProperty where
+  toResourceProperties AccessLogSettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Stage.AccessLogSettings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DestinationArn" Prelude.<$> destinationArn,
+                            (JSON..=) "Format" Prelude.<$> format])}
+instance JSON.ToJSON AccessLogSettingsProperty where
+  toJSON AccessLogSettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DestinationArn" Prelude.<$> destinationArn,
+               (JSON..=) "Format" Prelude.<$> format]))
+instance Property "DestinationArn" AccessLogSettingsProperty where
+  type PropertyType "DestinationArn" AccessLogSettingsProperty = Value Prelude.Text
+  set newValue AccessLogSettingsProperty {..}
+    = AccessLogSettingsProperty
+        {destinationArn = Prelude.pure newValue, ..}
+instance Property "Format" AccessLogSettingsProperty where
+  type PropertyType "Format" AccessLogSettingsProperty = Value Prelude.Text
+  set newValue AccessLogSettingsProperty {..}
+    = AccessLogSettingsProperty {format = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Stage/AccessLogSettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Stage.AccessLogSettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AccessLogSettingsProperty :: Prelude.Type
+instance ToResourceProperties AccessLogSettingsProperty
+instance Prelude.Eq AccessLogSettingsProperty
+instance Prelude.Show AccessLogSettingsProperty
+instance JSON.ToJSON AccessLogSettingsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs b/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs
@@ -0,0 +1,78 @@
+module Stratosphere.ApiGatewayV2.Stage.RouteSettingsProperty (
+        RouteSettingsProperty(..), mkRouteSettingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RouteSettingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html>
+    RouteSettingsProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html#cfn-apigatewayv2-stage-routesettings-datatraceenabled>
+                           dataTraceEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html#cfn-apigatewayv2-stage-routesettings-detailedmetricsenabled>
+                           detailedMetricsEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html#cfn-apigatewayv2-stage-routesettings-logginglevel>
+                           loggingLevel :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html#cfn-apigatewayv2-stage-routesettings-throttlingburstlimit>
+                           throttlingBurstLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html#cfn-apigatewayv2-stage-routesettings-throttlingratelimit>
+                           throttlingRateLimit :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRouteSettingsProperty :: RouteSettingsProperty
+mkRouteSettingsProperty
+  = RouteSettingsProperty
+      {haddock_workaround_ = (), dataTraceEnabled = Prelude.Nothing,
+       detailedMetricsEnabled = Prelude.Nothing,
+       loggingLevel = Prelude.Nothing,
+       throttlingBurstLimit = Prelude.Nothing,
+       throttlingRateLimit = Prelude.Nothing}
+instance ToResourceProperties RouteSettingsProperty where
+  toResourceProperties RouteSettingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::Stage.RouteSettings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DataTraceEnabled" Prelude.<$> dataTraceEnabled,
+                            (JSON..=) "DetailedMetricsEnabled"
+                              Prelude.<$> detailedMetricsEnabled,
+                            (JSON..=) "LoggingLevel" Prelude.<$> loggingLevel,
+                            (JSON..=) "ThrottlingBurstLimit" Prelude.<$> throttlingBurstLimit,
+                            (JSON..=) "ThrottlingRateLimit" Prelude.<$> throttlingRateLimit])}
+instance JSON.ToJSON RouteSettingsProperty where
+  toJSON RouteSettingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DataTraceEnabled" Prelude.<$> dataTraceEnabled,
+               (JSON..=) "DetailedMetricsEnabled"
+                 Prelude.<$> detailedMetricsEnabled,
+               (JSON..=) "LoggingLevel" Prelude.<$> loggingLevel,
+               (JSON..=) "ThrottlingBurstLimit" Prelude.<$> throttlingBurstLimit,
+               (JSON..=) "ThrottlingRateLimit" Prelude.<$> throttlingRateLimit]))
+instance Property "DataTraceEnabled" RouteSettingsProperty where
+  type PropertyType "DataTraceEnabled" RouteSettingsProperty = Value Prelude.Bool
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {dataTraceEnabled = Prelude.pure newValue, ..}
+instance Property "DetailedMetricsEnabled" RouteSettingsProperty where
+  type PropertyType "DetailedMetricsEnabled" RouteSettingsProperty = Value Prelude.Bool
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {detailedMetricsEnabled = Prelude.pure newValue, ..}
+instance Property "LoggingLevel" RouteSettingsProperty where
+  type PropertyType "LoggingLevel" RouteSettingsProperty = Value Prelude.Text
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty {loggingLevel = Prelude.pure newValue, ..}
+instance Property "ThrottlingBurstLimit" RouteSettingsProperty where
+  type PropertyType "ThrottlingBurstLimit" RouteSettingsProperty = Value Prelude.Integer
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {throttlingBurstLimit = Prelude.pure newValue, ..}
+instance Property "ThrottlingRateLimit" RouteSettingsProperty where
+  type PropertyType "ThrottlingRateLimit" RouteSettingsProperty = Value Prelude.Double
+  set newValue RouteSettingsProperty {..}
+    = RouteSettingsProperty
+        {throttlingRateLimit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs-boot b/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/Stage/RouteSettingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ApiGatewayV2.Stage.RouteSettingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RouteSettingsProperty :: Prelude.Type
+instance ToResourceProperties RouteSettingsProperty
+instance Prelude.Eq RouteSettingsProperty
+instance Prelude.Show RouteSettingsProperty
+instance JSON.ToJSON RouteSettingsProperty
diff --git a/gen/Stratosphere/ApiGatewayV2/VpcLink.hs b/gen/Stratosphere/ApiGatewayV2/VpcLink.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ApiGatewayV2/VpcLink.hs
@@ -0,0 +1,60 @@
+module Stratosphere.ApiGatewayV2.VpcLink (
+        VpcLink(..), mkVpcLink
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data VpcLink
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html>
+    VpcLink {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html#cfn-apigatewayv2-vpclink-name>
+             name :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html#cfn-apigatewayv2-vpclink-securitygroupids>
+             securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html#cfn-apigatewayv2-vpclink-subnetids>
+             subnetIds :: (ValueList Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html#cfn-apigatewayv2-vpclink-tags>
+             tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVpcLink ::
+  Value Prelude.Text -> ValueList Prelude.Text -> VpcLink
+mkVpcLink name subnetIds
+  = VpcLink
+      {haddock_workaround_ = (), name = name, subnetIds = subnetIds,
+       securityGroupIds = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties VpcLink where
+  toResourceProperties VpcLink {..}
+    = ResourceProperties
+        {awsType = "AWS::ApiGatewayV2::VpcLink",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name, "SubnetIds" JSON..= subnetIds]
+                           (Prelude.catMaybes
+                              [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON VpcLink where
+  toJSON VpcLink {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name, "SubnetIds" JSON..= subnetIds]
+              (Prelude.catMaybes
+                 [(JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Name" VpcLink where
+  type PropertyType "Name" VpcLink = Value Prelude.Text
+  set newValue VpcLink {..} = VpcLink {name = newValue, ..}
+instance Property "SecurityGroupIds" VpcLink where
+  type PropertyType "SecurityGroupIds" VpcLink = ValueList Prelude.Text
+  set newValue VpcLink {..}
+    = VpcLink {securityGroupIds = Prelude.pure newValue, ..}
+instance Property "SubnetIds" VpcLink where
+  type PropertyType "SubnetIds" VpcLink = ValueList Prelude.Text
+  set newValue VpcLink {..} = VpcLink {subnetIds = newValue, ..}
+instance Property "Tags" VpcLink where
+  type PropertyType "Tags" VpcLink = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue VpcLink {..}
+    = VpcLink {tags = Prelude.pure newValue, ..}
diff --git a/stratosphere-apigatewayv2.cabal b/stratosphere-apigatewayv2.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-apigatewayv2.cabal
@@ -0,0 +1,108 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-apigatewayv2
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ApiGatewayV2.
+description:    Integration into stratosphere to generate resources and properties for AWS ApiGatewayV2
+category:       AWS, Cloud, ApiGatewayV2
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.ApiGatewayV2.Api
+      Stratosphere.ApiGatewayV2.Api.BodyS3LocationProperty
+      Stratosphere.ApiGatewayV2.Api.CorsProperty
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.AccessLogSettingsProperty
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.IntegrationOverridesProperty
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteOverridesProperty
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.RouteSettingsProperty
+      Stratosphere.ApiGatewayV2.ApiGatewayManagedOverrides.StageOverridesProperty
+      Stratosphere.ApiGatewayV2.ApiMapping
+      Stratosphere.ApiGatewayV2.Authorizer
+      Stratosphere.ApiGatewayV2.Authorizer.JWTConfigurationProperty
+      Stratosphere.ApiGatewayV2.Deployment
+      Stratosphere.ApiGatewayV2.DomainName
+      Stratosphere.ApiGatewayV2.DomainName.DomainNameConfigurationProperty
+      Stratosphere.ApiGatewayV2.DomainName.MutualTlsAuthenticationProperty
+      Stratosphere.ApiGatewayV2.Integration
+      Stratosphere.ApiGatewayV2.Integration.ResponseParameterMapProperty
+      Stratosphere.ApiGatewayV2.Integration.ResponseParameterProperty
+      Stratosphere.ApiGatewayV2.Integration.TlsConfigProperty
+      Stratosphere.ApiGatewayV2.IntegrationResponse
+      Stratosphere.ApiGatewayV2.Model
+      Stratosphere.ApiGatewayV2.Route
+      Stratosphere.ApiGatewayV2.RouteResponse
+      Stratosphere.ApiGatewayV2.RouteResponse.ParameterConstraintsProperty
+      Stratosphere.ApiGatewayV2.RoutingRule
+      Stratosphere.ApiGatewayV2.RoutingRule.ActionInvokeApiProperty
+      Stratosphere.ApiGatewayV2.RoutingRule.ActionProperty
+      Stratosphere.ApiGatewayV2.RoutingRule.ConditionProperty
+      Stratosphere.ApiGatewayV2.RoutingRule.MatchBasePathsProperty
+      Stratosphere.ApiGatewayV2.RoutingRule.MatchHeadersProperty
+      Stratosphere.ApiGatewayV2.RoutingRule.MatchHeaderValueProperty
+      Stratosphere.ApiGatewayV2.Stage
+      Stratosphere.ApiGatewayV2.Stage.AccessLogSettingsProperty
+      Stratosphere.ApiGatewayV2.Stage.RouteSettingsProperty
+      Stratosphere.ApiGatewayV2.VpcLink
+  other-modules:
+      Paths_stratosphere_apigatewayv2
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
