VaporShell.ApiGatewayV2.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings'"

class ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-accesslogsettings.html'

    hidden [object] $_format
    hidden [object] $_destinationArn

    [string] $Format
    [string] $DestinationArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Format -Value {
            $this._format
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._format = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationArn -Value {
            $this._destinationArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings() : base() {}
    ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides'"

class ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiGatewayManagedOverridesRouteOverrides'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routeoverrides.html'

    hidden [object] $_target
    hidden [object] $_authorizerId
    hidden [object] $_operationName
    hidden [object] $_authorizationScopes
    hidden [object] $_authorizationType

    [string] $Target
    [string] $AuthorizerId
    [string] $OperationName
    [string[]] $AuthorizationScopes
    [string] $AuthorizationType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this._target
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._target = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerId -Value {
            $this._authorizerId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authorizerId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OperationName -Value {
            $this._operationName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._operationName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationScopes -Value {
            $this._authorizationScopes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._authorizationScopes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationType -Value {
            $this._authorizationType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authorizationType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides() : base() {}
    ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2IntegrationResponseParameterList'"

class ApiGatewayV2IntegrationResponseParameterList : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2IntegrationResponseParameterList'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameterlist.html'

    hidden [object] $_responseParameters

    [ApiGatewayV2IntegrationResponseParameter[]] $ResponseParameters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this._responseParameters
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2IntegrationResponseParameter], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._responseParameters = $value
        }
    }

    ApiGatewayV2IntegrationResponseParameterList() : base() {}
    ApiGatewayV2IntegrationResponseParameterList([IDictionary] $props) : base($props) {}
    ApiGatewayV2IntegrationResponseParameterList([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2RouteParameterConstraints'"

class ApiGatewayV2RouteParameterConstraints : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2RouteParameterConstraints'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-route-parameterconstraints.html'

    hidden [object] $_required

    [bool] $Required

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Required -Value {
            $this._required
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._required = $value
        }
    }

    ApiGatewayV2RouteParameterConstraints() : base() {}
    ApiGatewayV2RouteParameterConstraints([IDictionary] $props) : base($props) {}
    ApiGatewayV2RouteParameterConstraints([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2IntegrationTlsConfig'"

class ApiGatewayV2IntegrationTlsConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2IntegrationTlsConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-tlsconfig.html'

    hidden [object] $_serverNameToVerify

    [string] $ServerNameToVerify

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServerNameToVerify -Value {
            $this._serverNameToVerify
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serverNameToVerify = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2IntegrationTlsConfig() : base() {}
    ApiGatewayV2IntegrationTlsConfig([IDictionary] $props) : base($props) {}
    ApiGatewayV2IntegrationTlsConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2StageAccessLogSettings'"

class ApiGatewayV2StageAccessLogSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2StageAccessLogSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-accesslogsettings.html'

    hidden [object] $_format
    hidden [object] $_destinationArn

    [string] $Format
    [string] $DestinationArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Format -Value {
            $this._format
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._format = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationArn -Value {
            $this._destinationArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2StageAccessLogSettings() : base() {}
    ApiGatewayV2StageAccessLogSettings([IDictionary] $props) : base($props) {}
    ApiGatewayV2StageAccessLogSettings([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2DomainNameMutualTlsAuthentication'"

class ApiGatewayV2DomainNameMutualTlsAuthentication : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2DomainNameMutualTlsAuthentication'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-mutualtlsauthentication.html'

    hidden [object] $_truststoreVersion
    hidden [object] $_truststoreUri

    [string] $TruststoreVersion
    [string] $TruststoreUri

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TruststoreVersion -Value {
            $this._truststoreVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._truststoreVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TruststoreUri -Value {
            $this._truststoreUri
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._truststoreUri = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2DomainNameMutualTlsAuthentication() : base() {}
    ApiGatewayV2DomainNameMutualTlsAuthentication([IDictionary] $props) : base($props) {}
    ApiGatewayV2DomainNameMutualTlsAuthentication([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverridesStageOverrides'"

class ApiGatewayV2ApiGatewayManagedOverridesStageOverrides : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiGatewayManagedOverridesStageOverrides'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-stageoverrides.html'

    hidden [object] $_description
    hidden [object] $_accessLogSettings
    hidden [object] $_autoDeploy
    hidden [VSJson] $_routeSettings
    hidden [VSJson] $_stageVariables
    hidden [object] $_defaultRouteSettings

    [string] $Description
    [ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings] $AccessLogSettings
    [bool] $AutoDeploy
    [VSJson] $RouteSettings
    [VSJson] $StageVariables
    [ApiGatewayV2ApiGatewayManagedOverridesRouteSettings] $DefaultRouteSettings

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLogSettings -Value {
            $this._accessLogSettings
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiGatewayManagedOverridesAccessLogSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessLogSettings = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoDeploy -Value {
            $this._autoDeploy
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoDeploy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteSettings -Value {
            $this._routeSettings
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._routeSettings = [VSJson]::Transform($value)
            Write-Debug $this._routeSettings
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageVariables -Value {
            $this._stageVariables
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._stageVariables = [VSJson]::Transform($value)
            Write-Debug $this._stageVariables
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultRouteSettings -Value {
            $this._defaultRouteSettings
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiGatewayManagedOverridesRouteSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultRouteSettings = $value
        }
    }

    ApiGatewayV2ApiGatewayManagedOverridesStageOverrides() : base() {}
    ApiGatewayV2ApiGatewayManagedOverridesStageOverrides([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverridesStageOverrides([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverridesRouteSettings'"

class ApiGatewayV2ApiGatewayManagedOverridesRouteSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiGatewayManagedOverridesRouteSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-routesettings.html'

    hidden [object] $_loggingLevel
    hidden [object] $_dataTraceEnabled
    hidden [object] $_throttlingBurstLimit
    hidden [object] $_detailedMetricsEnabled
    hidden [object] $_throttlingRateLimit

    [LoggingLevel] $LoggingLevel
    [bool] $DataTraceEnabled
    [int] $ThrottlingBurstLimit
    [bool] $DetailedMetricsEnabled
    [double] $ThrottlingRateLimit

    [object] FormatLoggingLevel([object] $loggingLevel) {
        if ($loggingLevel -is [string]) {
            return $loggingLevel.ToUpper()
        }
        else {
            return $loggingLevel
        }
    }

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingLevel -Value {
            $this.FormatLoggingLevel($this._loggingLevel)
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction], [LoggingLevel]))] [object]
                $value
            )
            $this._loggingLevel = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataTraceEnabled -Value {
            $this._dataTraceEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dataTraceEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThrottlingBurstLimit -Value {
            $this._throttlingBurstLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingBurstLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DetailedMetricsEnabled -Value {
            $this._detailedMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._detailedMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThrottlingRateLimit -Value {
            $this._throttlingRateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingRateLimit = $value
        }
    }

    ApiGatewayV2ApiGatewayManagedOverridesRouteSettings() : base() {}
    ApiGatewayV2ApiGatewayManagedOverridesRouteSettings([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverridesRouteSettings([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2IntegrationResponseParameter'"

class ApiGatewayV2IntegrationResponseParameter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2IntegrationResponseParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html'

    hidden [object] $_destination
    hidden [object] $_source

    [string] $Destination
    [string] $Source

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Destination -Value {
            $this._destination
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destination = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Source -Value {
            $this._source
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._source = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2IntegrationResponseParameter() : base() {}
    ApiGatewayV2IntegrationResponseParameter([IDictionary] $props) : base($props) {}
    ApiGatewayV2IntegrationResponseParameter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides'"

class ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-apigatewaymanagedoverrides-integrationoverrides.html'

    hidden [object] $_description
    hidden [object] $_payloadFormatVersion
    hidden [object] $_timeoutInMillis
    hidden [object] $_integrationMethod

    [string] $Description
    [string] $PayloadFormatVersion
    [int] $TimeoutInMillis
    [string] $IntegrationMethod

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PayloadFormatVersion -Value {
            $this._payloadFormatVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._payloadFormatVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutInMillis -Value {
            $this._timeoutInMillis
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutInMillis = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationMethod -Value {
            $this._integrationMethod
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._integrationMethod = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides() : base() {}
    ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2AuthorizerJWTConfiguration'"

class ApiGatewayV2AuthorizerJWTConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2AuthorizerJWTConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-authorizer-jwtconfiguration.html'

    hidden [object] $_issuer
    hidden [object] $_audience

    [string] $Issuer
    [string[]] $Audience

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Issuer -Value {
            $this._issuer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._issuer = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Audience -Value {
            $this._audience
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._audience = @($value)
        }
    }

    ApiGatewayV2AuthorizerJWTConfiguration() : base() {}
    ApiGatewayV2AuthorizerJWTConfiguration([IDictionary] $props) : base($props) {}
    ApiGatewayV2AuthorizerJWTConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2DomainNameDomainNameConfiguration'"

class ApiGatewayV2DomainNameDomainNameConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2DomainNameDomainNameConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-domainname-domainnameconfiguration.html'

    hidden [object] $_securityPolicy
    hidden [object] $_endpointType
    hidden [object] $_certificateName
    hidden [object] $_certificateArn

    [string] $SecurityPolicy
    [string] $EndpointType
    [string] $CertificateName
    [string] $CertificateArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityPolicy -Value {
            $this._securityPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._securityPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointType -Value {
            $this._endpointType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endpointType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateName -Value {
            $this._certificateName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateArn -Value {
            $this._certificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2DomainNameDomainNameConfiguration() : base() {}
    ApiGatewayV2DomainNameDomainNameConfiguration([IDictionary] $props) : base($props) {}
    ApiGatewayV2DomainNameDomainNameConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2RouteResponseParameterConstraints'"

class ApiGatewayV2RouteResponseParameterConstraints : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2RouteResponseParameterConstraints'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-routeresponse-parameterconstraints.html'

    hidden [object] $_required

    [bool] $Required

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Required -Value {
            $this._required
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._required = $value
        }
    }

    ApiGatewayV2RouteResponseParameterConstraints() : base() {}
    ApiGatewayV2RouteResponseParameterConstraints([IDictionary] $props) : base($props) {}
    ApiGatewayV2RouteResponseParameterConstraints([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiCors'"

class ApiGatewayV2ApiCors : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiCors'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-cors.html'

    hidden [object] $_allowOrigins
    hidden [object] $_allowCredentials
    hidden [object] $_exposeHeaders
    hidden [object] $_allowHeaders
    hidden [object] $_maxAge
    hidden [object] $_allowMethods

    [string[]] $AllowOrigins
    [bool] $AllowCredentials
    [string[]] $ExposeHeaders
    [string[]] $AllowHeaders
    [int] $MaxAge
    [string[]] $AllowMethods

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowOrigins -Value {
            $this._allowOrigins
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._allowOrigins = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowCredentials -Value {
            $this._allowCredentials
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowCredentials = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExposeHeaders -Value {
            $this._exposeHeaders
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._exposeHeaders = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowHeaders -Value {
            $this._allowHeaders
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._allowHeaders = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxAge -Value {
            $this._maxAge
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxAge = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowMethods -Value {
            $this._allowMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._allowMethods = @($value)
        }
    }

    ApiGatewayV2ApiCors() : base() {}
    ApiGatewayV2ApiCors([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiCors([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiBodyS3Location'"

class ApiGatewayV2ApiBodyS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2ApiBodyS3Location'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-api-bodys3location.html'

    hidden [object] $_etag
    hidden [object] $_bucket
    hidden [object] $_version
    hidden [object] $_key

    [string] $Etag
    [string] $Bucket
    [string] $Version
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Etag -Value {
            $this._etag
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._etag = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    ApiGatewayV2ApiBodyS3Location() : base() {}
    ApiGatewayV2ApiBodyS3Location([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiBodyS3Location([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2StageRouteSettings'"

class ApiGatewayV2StageRouteSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayV2StageRouteSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-stage-routesettings.html'

    hidden [object] $_loggingLevel
    hidden [object] $_dataTraceEnabled
    hidden [object] $_throttlingBurstLimit
    hidden [object] $_detailedMetricsEnabled
    hidden [object] $_throttlingRateLimit

    [LoggingLevel] $LoggingLevel
    [bool] $DataTraceEnabled
    [int] $ThrottlingBurstLimit
    [bool] $DetailedMetricsEnabled
    [double] $ThrottlingRateLimit

    [object] FormatLoggingLevel([object] $loggingLevel) {
        if ($loggingLevel -is [string]) {
            return $loggingLevel.ToUpper()
        }
        else {
            return $loggingLevel
        }
    }

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingLevel -Value {
            $this.FormatLoggingLevel($this._loggingLevel)
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction], [LoggingLevel]))] [object]
                $value
            )
            $this._loggingLevel = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataTraceEnabled -Value {
            $this._dataTraceEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dataTraceEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThrottlingBurstLimit -Value {
            $this._throttlingBurstLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingBurstLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DetailedMetricsEnabled -Value {
            $this._detailedMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._detailedMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThrottlingRateLimit -Value {
            $this._throttlingRateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingRateLimit = $value
        }
    }

    ApiGatewayV2StageRouteSettings() : base() {}
    ApiGatewayV2StageRouteSettings([IDictionary] $props) : base($props) {}
    ApiGatewayV2StageRouteSettings([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Api'"

class ApiGatewayV2Api : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Api'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html'

    hidden [string[]] $_attributes = @('ApiEndpoint')
    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Api'
    [string] $RouteSelectionExpression
    [ApiGatewayV2ApiBodyS3Location] $BodyS3Location
    [string] $Description
    [string] $BasePath
    [bool] $FailOnWarnings
    [bool] $DisableExecuteApiEndpoint
    [bool] $DisableSchemaValidation
    [string] $Name
    [string] $Target
    [string] $CredentialsArn
    [ApiGatewayV2ApiCors] $CorsConfiguration
    [string] $Version
    [string] $ProtocolType
    [string] $RouteKey
    [VSJson] $Body
    [VSJson] $Tags
    [string] $ApiKeySelectionExpression
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteSelectionExpression -Value {
            $this.Properties['RouteSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BodyS3Location -Value {
            $this.Properties['BodyS3Location']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiBodyS3Location], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BodyS3Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BasePath -Value {
            $this.Properties['BasePath']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BasePath'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FailOnWarnings -Value {
            $this.Properties['FailOnWarnings']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FailOnWarnings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisableExecuteApiEndpoint -Value {
            $this.Properties['DisableExecuteApiEndpoint']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisableExecuteApiEndpoint'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisableSchemaValidation -Value {
            $this.Properties['DisableSchemaValidation']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisableSchemaValidation'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this.Properties['Target']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Target'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CredentialsArn -Value {
            $this.Properties['CredentialsArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CredentialsArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CorsConfiguration -Value {
            $this.Properties['CorsConfiguration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiCors], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CorsConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this.Properties['Version']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Version'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProtocolType -Value {
            $this.Properties['ProtocolType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ProtocolType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteKey -Value {
            $this.Properties['RouteKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this.Properties['Body']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Body'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Body']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiKeySelectionExpression -Value {
            $this.Properties['ApiKeySelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiKeySelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Api() : base() {}
    ApiGatewayV2Api([IDictionary] $props) : base($props) {}
    ApiGatewayV2Api([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2RouteResponse'"

class ApiGatewayV2RouteResponse : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2RouteResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-routeresponse.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::RouteResponse'
    [string] $RouteResponseKey
    [VSJson] $ResponseParameters
    [string] $RouteId
    [string] $ModelSelectionExpression
    [string] $ApiId
    [VSJson] $ResponseModels
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteResponseKey -Value {
            $this.Properties['RouteResponseKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteResponseKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this.Properties['ResponseParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ResponseParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ResponseParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteId -Value {
            $this.Properties['RouteId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ModelSelectionExpression -Value {
            $this.Properties['ModelSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ModelSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseModels -Value {
            $this.Properties['ResponseModels']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ResponseModels'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ResponseModels']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2RouteResponse() : base() {}
    ApiGatewayV2RouteResponse([IDictionary] $props) : base($props) {}
    ApiGatewayV2RouteResponse([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2DomainName'"

class ApiGatewayV2DomainName : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2DomainName'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html'

    hidden [string[]] $_attributes = @('RegionalHostedZoneId','RegionalDomainName')
    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::DomainName'
    [ApiGatewayV2DomainNameMutualTlsAuthentication] $MutualTlsAuthentication
    [string] $DomainName
    [ApiGatewayV2DomainNameDomainNameConfiguration[]] $DomainNameConfigurations
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MutualTlsAuthentication -Value {
            $this.Properties['MutualTlsAuthentication']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2DomainNameMutualTlsAuthentication], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MutualTlsAuthentication'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this.Properties['DomainName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainNameConfigurations -Value {
            $this.Properties['DomainNameConfigurations']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2DomainNameDomainNameConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['DomainNameConfigurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2DomainName() : base() {}
    ApiGatewayV2DomainName([IDictionary] $props) : base($props) {}
    ApiGatewayV2DomainName([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Integration'"

class ApiGatewayV2Integration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Integration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Integration'
    [string] $Description
    [string] $TemplateSelectionExpression
    [string] $ConnectionType
    [VSJson] $ResponseParameters
    [string] $IntegrationMethod
    [string] $PassthroughBehavior
    [VSJson] $RequestParameters
    [string] $ConnectionId
    [string] $IntegrationUri
    [string] $PayloadFormatVersion
    [string] $CredentialsArn
    [VSJson] $RequestTemplates
    [int] $TimeoutInMillis
    [ApiGatewayV2IntegrationTlsConfig] $TlsConfig
    [string] $ContentHandlingStrategy
    [string] $IntegrationSubtype
    [string] $ApiId
    [string] $IntegrationType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateSelectionExpression -Value {
            $this.Properties['TemplateSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionType -Value {
            $this.Properties['ConnectionType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ConnectionType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this.Properties['ResponseParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ResponseParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ResponseParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationMethod -Value {
            $this.Properties['IntegrationMethod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationMethod'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PassthroughBehavior -Value {
            $this.Properties['PassthroughBehavior']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PassthroughBehavior'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestParameters -Value {
            $this.Properties['RequestParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['RequestParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['RequestParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionId -Value {
            $this.Properties['ConnectionId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ConnectionId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationUri -Value {
            $this.Properties['IntegrationUri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationUri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PayloadFormatVersion -Value {
            $this.Properties['PayloadFormatVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PayloadFormatVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CredentialsArn -Value {
            $this.Properties['CredentialsArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CredentialsArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestTemplates -Value {
            $this.Properties['RequestTemplates']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['RequestTemplates'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['RequestTemplates']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutInMillis -Value {
            $this.Properties['TimeoutInMillis']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TimeoutInMillis'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TlsConfig -Value {
            $this.Properties['TlsConfig']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2IntegrationTlsConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TlsConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentHandlingStrategy -Value {
            $this.Properties['ContentHandlingStrategy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContentHandlingStrategy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationSubtype -Value {
            $this.Properties['IntegrationSubtype']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationSubtype'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationType -Value {
            $this.Properties['IntegrationType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Integration() : base() {}
    ApiGatewayV2Integration([IDictionary] $props) : base($props) {}
    ApiGatewayV2Integration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Deployment'"

class ApiGatewayV2Deployment : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Deployment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-deployment.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Deployment'
    [string] $Description
    [string] $StageName
    [string] $ApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageName -Value {
            $this.Properties['StageName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StageName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Deployment() : base() {}
    ApiGatewayV2Deployment([IDictionary] $props) : base($props) {}
    ApiGatewayV2Deployment([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Model'"

class ApiGatewayV2Model : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Model'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-model.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Model'
    [string] $Description
    [string] $ContentType
    [VSJson] $Schema
    [string] $ApiId
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentType -Value {
            $this.Properties['ContentType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContentType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schema -Value {
            $this.Properties['Schema']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Schema'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Schema']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Model() : base() {}
    ApiGatewayV2Model([IDictionary] $props) : base($props) {}
    ApiGatewayV2Model([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2IntegrationResponse'"

class ApiGatewayV2IntegrationResponse : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2IntegrationResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integrationresponse.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::IntegrationResponse'
    [VSJson] $ResponseTemplates
    [string] $TemplateSelectionExpression
    [VSJson] $ResponseParameters
    [string] $ContentHandlingStrategy
    [string] $IntegrationId
    [string] $IntegrationResponseKey
    [string] $ApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseTemplates -Value {
            $this.Properties['ResponseTemplates']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ResponseTemplates'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ResponseTemplates']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateSelectionExpression -Value {
            $this.Properties['TemplateSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this.Properties['ResponseParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ResponseParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ResponseParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentHandlingStrategy -Value {
            $this.Properties['ContentHandlingStrategy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContentHandlingStrategy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationId -Value {
            $this.Properties['IntegrationId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationResponseKey -Value {
            $this.Properties['IntegrationResponseKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IntegrationResponseKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2IntegrationResponse() : base() {}
    ApiGatewayV2IntegrationResponse([IDictionary] $props) : base($props) {}
    ApiGatewayV2IntegrationResponse([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Route'"

class ApiGatewayV2Route : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Route'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-route.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Route'
    [string] $Target
    [string] $RouteResponseSelectionExpression
    [string] $AuthorizerId
    [VSJson] $RequestModels
    [string] $OperationName
    [string[]] $AuthorizationScopes
    [bool] $ApiKeyRequired
    [string] $RouteKey
    [string] $AuthorizationType
    [string] $ModelSelectionExpression
    [string] $ApiId
    [VSJson] $RequestParameters
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this.Properties['Target']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Target'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteResponseSelectionExpression -Value {
            $this.Properties['RouteResponseSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteResponseSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerId -Value {
            $this.Properties['AuthorizerId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestModels -Value {
            $this.Properties['RequestModels']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['RequestModels'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['RequestModels']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OperationName -Value {
            $this.Properties['OperationName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OperationName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationScopes -Value {
            $this.Properties['AuthorizationScopes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AuthorizationScopes'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiKeyRequired -Value {
            $this.Properties['ApiKeyRequired']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiKeyRequired'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteKey -Value {
            $this.Properties['RouteKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationType -Value {
            $this.Properties['AuthorizationType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizationType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ModelSelectionExpression -Value {
            $this.Properties['ModelSelectionExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ModelSelectionExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestParameters -Value {
            $this.Properties['RequestParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['RequestParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['RequestParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Route() : base() {}
    ApiGatewayV2Route([IDictionary] $props) : base($props) {}
    ApiGatewayV2Route([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiGatewayManagedOverrides'"

class ApiGatewayV2ApiGatewayManagedOverrides : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2ApiGatewayManagedOverrides'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apigatewaymanagedoverrides.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::ApiGatewayManagedOverrides'
    [ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides] $Integration
    [ApiGatewayV2ApiGatewayManagedOverridesStageOverrides] $Stage
    [string] $ApiId
    [ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides] $Route
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Integration -Value {
            $this.Properties['Integration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiGatewayManagedOverridesIntegrationOverrides], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Integration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Stage -Value {
            $this.Properties['Stage']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiGatewayManagedOverridesStageOverrides], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Stage'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Route -Value {
            $this.Properties['Route']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2ApiGatewayManagedOverridesRouteOverrides], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Route'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2ApiGatewayManagedOverrides() : base() {}
    ApiGatewayV2ApiGatewayManagedOverrides([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiGatewayManagedOverrides([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Stage'"

class ApiGatewayV2Stage : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Stage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Stage'
    [string] $ClientCertificateId
    [string] $DeploymentId
    [string] $Description
    [ApiGatewayV2StageAccessLogSettings] $AccessLogSettings
    [bool] $AutoDeploy
    [VSJson] $RouteSettings
    [string] $StageName
    [VSJson] $StageVariables
    [string] $AccessPolicyId
    [string] $ApiId
    [ApiGatewayV2StageRouteSettings] $DefaultRouteSettings
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientCertificateId -Value {
            $this.Properties['ClientCertificateId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClientCertificateId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentId -Value {
            $this.Properties['DeploymentId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeploymentId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLogSettings -Value {
            $this.Properties['AccessLogSettings']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2StageAccessLogSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AccessLogSettings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoDeploy -Value {
            $this.Properties['AutoDeploy']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoDeploy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteSettings -Value {
            $this.Properties['RouteSettings']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['RouteSettings'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['RouteSettings']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageName -Value {
            $this.Properties['StageName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StageName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageVariables -Value {
            $this.Properties['StageVariables']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['StageVariables'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['StageVariables']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessPolicyId -Value {
            $this.Properties['AccessPolicyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AccessPolicyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultRouteSettings -Value {
            $this.Properties['DefaultRouteSettings']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2StageRouteSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultRouteSettings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Stage() : base() {}
    ApiGatewayV2Stage([IDictionary] $props) : base($props) {}
    ApiGatewayV2Stage([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2VpcLink'"

class ApiGatewayV2VpcLink : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2VpcLink'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-vpclink.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::VpcLink'
    [string[]] $SubnetIds
    [string[]] $SecurityGroupIds
    [VSJson] $Tags
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this.Properties['SubnetIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SubnetIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this.Properties['SecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2VpcLink() : base() {}
    ApiGatewayV2VpcLink([IDictionary] $props) : base($props) {}
    ApiGatewayV2VpcLink([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2Authorizer'"

class ApiGatewayV2Authorizer : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2Authorizer'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-authorizer.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::Authorizer'
    [string] $IdentityValidationExpression
    [string] $AuthorizerUri
    [string] $AuthorizerCredentialsArn
    [string] $AuthorizerType
    [ApiGatewayV2AuthorizerJWTConfiguration] $JwtConfiguration
    [int] $AuthorizerResultTtlInSeconds
    [string[]] $IdentitySource
    [string] $AuthorizerPayloadFormatVersion
    [bool] $EnableSimpleResponses
    [string] $ApiId
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdentityValidationExpression -Value {
            $this.Properties['IdentityValidationExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdentityValidationExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerUri -Value {
            $this.Properties['AuthorizerUri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerUri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerCredentialsArn -Value {
            $this.Properties['AuthorizerCredentialsArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerCredentialsArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerType -Value {
            $this.Properties['AuthorizerType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JwtConfiguration -Value {
            $this.Properties['JwtConfiguration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayV2AuthorizerJWTConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JwtConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerResultTtlInSeconds -Value {
            $this.Properties['AuthorizerResultTtlInSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerResultTtlInSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdentitySource -Value {
            $this.Properties['IdentitySource']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['IdentitySource'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerPayloadFormatVersion -Value {
            $this.Properties['AuthorizerPayloadFormatVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerPayloadFormatVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableSimpleResponses -Value {
            $this.Properties['EnableSimpleResponses']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableSimpleResponses'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2Authorizer() : base() {}
    ApiGatewayV2Authorizer([IDictionary] $props) : base($props) {}
    ApiGatewayV2Authorizer([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'ApiGatewayV2ApiMapping'"

class ApiGatewayV2ApiMapping : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayV2ApiMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-apimapping.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGatewayV2::ApiMapping'
    [string] $DomainName
    [string] $Stage
    [string] $ApiMappingKey
    [string] $ApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this.Properties['DomainName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Stage -Value {
            $this.Properties['Stage']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Stage'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiMappingKey -Value {
            $this.Properties['ApiMappingKey']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiMappingKey'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiId -Value {
            $this.Properties['ApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    ApiGatewayV2ApiMapping() : base() {}
    ApiGatewayV2ApiMapping([IDictionary] $props) : base($props) {}
    ApiGatewayV2ApiMapping([psobject] $props) : base($props) {}
}