VaporShell.ApiGateway.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 'ApiGatewayDeploymentMethodSetting'"

class ApiGatewayDeploymentMethodSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDeploymentMethodSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html'

    hidden [object] $_cacheDataEncrypted
    hidden [object] $_cacheTtlInSeconds
    hidden [object] $_cachingEnabled
    hidden [object] $_dataTraceEnabled
    hidden [object] $_httpMethod
    hidden [object] $_loggingLevel
    hidden [object] $_metricsEnabled
    hidden [object] $_resourcePath
    hidden [object] $_throttlingBurstLimit
    hidden [object] $_throttlingRateLimit

    [bool] $CacheDataEncrypted
    [int] $CacheTtlInSeconds
    [bool] $CachingEnabled
    [bool] $DataTraceEnabled
    [string] $HttpMethod
    [LoggingLevel] $LoggingLevel
    [bool] $MetricsEnabled
    [string] $ResourcePath
    [int] $ThrottlingBurstLimit
    [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 CacheDataEncrypted -Value {
            $this._cacheDataEncrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheDataEncrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheTtlInSeconds -Value {
            $this._cacheTtlInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheTtlInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachingEnabled -Value {
            $this._cachingEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cachingEnabled = $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 HttpMethod -Value {
            $this._httpMethod
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpMethod = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 MetricsEnabled -Value {
            $this._metricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourcePath -Value {
            $this._resourcePath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourcePath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 ThrottlingRateLimit -Value {
            $this._throttlingRateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingRateLimit = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayUsagePlanApiStage'"

class ApiGatewayUsagePlanApiStage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayUsagePlanApiStage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html'

    hidden [object] $_apiId
    hidden [object] $_stage
    hidden [object] $_throttle

    [string] $ApiId
    [string] $Stage
    [ApiGatewayUsagePlanThrottleSettings] $Throttle

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

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

Write-Verbose "Importing class 'ApiGatewayApiKeyStageKey'"

class ApiGatewayApiKeyStageKey : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayApiKeyStageKey'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-apikey-stagekey.html'

    hidden [object] $_restApiId
    hidden [object] $_stageName

    [string] $RestApiId
    [string] $StageName

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

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

Write-Verbose "Importing class 'ApiGatewayDocumentationPartLocation'"

class ApiGatewayDocumentationPartLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDocumentationPartLocation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html'

    hidden [object] $_method
    hidden [object] $_name
    hidden [object] $_path
    hidden [object] $_statusCode
    hidden [object] $_type

    [string] $Method
    [string] $Name
    [string] $Path
    [string] $StatusCode
    [string] $Type

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._method = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatusCode -Value {
            $this._statusCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statusCode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDeploymentAccessLogSetting'"

class ApiGatewayDeploymentAccessLogSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDeploymentAccessLogSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-accesslogsetting.html'

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

    [string] $DestinationArn
    [string] $Format

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayMethodMethodResponse'"

class ApiGatewayMethodMethodResponse : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayMethodMethodResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html'

    hidden [object] $_responseModels
    hidden [object] $_responseParameters
    hidden [object] $_statusCode

    [string] $ResponseModels
    [bool] $ResponseParameters
    [string] $StatusCode

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

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

Write-Verbose "Importing class 'ApiGatewayMethodIntegration'"

class ApiGatewayMethodIntegration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayMethodIntegration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html'

    hidden [object] $_cacheKeyParameters
    hidden [object] $_cacheNamespace
    hidden [object] $_connectionId
    hidden [object] $_connectionType
    hidden [object] $_contentHandling
    hidden [object] $_credentials
    hidden [object] $_integrationHttpMethod
    hidden [object] $_integrationResponses
    hidden [object] $_passthroughBehavior
    hidden [object] $_requestParameters
    hidden [object] $_requestTemplates
    hidden [object] $_timeoutInMillis
    hidden [object] $_type
    hidden [object] $_uri

    [string[]] $CacheKeyParameters
    [string] $CacheNamespace
    [string] $ConnectionId
    [string] $ConnectionType
    [string] $ContentHandling
    [string] $Credentials
    [string] $IntegrationHttpMethod
    [ApiGatewayMethodIntegrationResponse[]] $IntegrationResponses
    [string] $PassthroughBehavior
    [string] $RequestParameters
    [string] $RequestTemplates
    [int] $TimeoutInMillis
    [string] $Type
    [string] $Uri

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheKeyParameters -Value {
            $this._cacheKeyParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cacheKeyParameters = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheNamespace -Value {
            $this._cacheNamespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheNamespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionId -Value {
            $this._connectionId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionType -Value {
            $this._connectionType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentHandling -Value {
            $this._contentHandling
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentHandling = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Credentials -Value {
            $this._credentials
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._credentials = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationHttpMethod -Value {
            $this._integrationHttpMethod
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._integrationHttpMethod = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegrationResponses -Value {
            $this._integrationResponses
        } -SecondValue {
            param([ValidateType(([ApiGatewayMethodIntegrationResponse], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._integrationResponses = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PassthroughBehavior -Value {
            $this._passthroughBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._passthroughBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestParameters -Value {
            $this._requestParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._requestParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestTemplates -Value {
            $this._requestTemplates
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._requestTemplates = $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 Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Uri -Value {
            $this._uri
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._uri = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDomainNameMutualTlsAuthentication'"

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

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

    [string] $TruststoreUri
    [string] $TruststoreVersion

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayRestApiS3Location'"

class ApiGatewayRestApiS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayRestApiS3Location'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-s3location.html'

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

    [string] $Bucket
    [string] $ETag
    [string] $Key
    [string] $Version

    hidden [void] _addAccessors() {
        $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 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 Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = 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
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayRestApiEndpointConfiguration'"

class ApiGatewayRestApiEndpointConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayRestApiEndpointConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-restapi-endpointconfiguration.html'

    hidden [object] $_types
    hidden [object] $_vpcEndpointIds

    [string[]] $Types
    [string[]] $VpcEndpointIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Types -Value {
            $this._types
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._types = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcEndpointIds -Value {
            $this._vpcEndpointIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._vpcEndpointIds = @($value)
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDeploymentDeploymentCanarySettings'"

class ApiGatewayDeploymentDeploymentCanarySettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDeploymentDeploymentCanarySettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-deploymentcanarysettings.html'

    hidden [object] $_percentTraffic
    hidden [object] $_stageVariableOverrides
    hidden [object] $_useStageCache

    [double] $PercentTraffic
    [string] $StageVariableOverrides
    [bool] $UseStageCache

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PercentTraffic -Value {
            $this._percentTraffic
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._percentTraffic = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageVariableOverrides -Value {
            $this._stageVariableOverrides
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stageVariableOverrides = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseStageCache -Value {
            $this._useStageCache
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._useStageCache = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayStageCanarySetting'"

class ApiGatewayStageCanarySetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayStageCanarySetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-canarysetting.html'

    hidden [object] $_deploymentId
    hidden [object] $_percentTraffic
    hidden [object] $_stageVariableOverrides
    hidden [object] $_useStageCache

    [string] $DeploymentId
    [double] $PercentTraffic
    [string] $StageVariableOverrides
    [bool] $UseStageCache

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentId -Value {
            $this._deploymentId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deploymentId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PercentTraffic -Value {
            $this._percentTraffic
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._percentTraffic = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageVariableOverrides -Value {
            $this._stageVariableOverrides
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stageVariableOverrides = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseStageCache -Value {
            $this._useStageCache
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._useStageCache = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDeploymentStageDescription'"

class ApiGatewayDeploymentStageDescription : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDeploymentStageDescription'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html'

    hidden [object] $_accessLogSetting
    hidden [object] $_cacheClusterEnabled
    hidden [object] $_cacheClusterSize
    hidden [object] $_cacheDataEncrypted
    hidden [object] $_cacheTtlInSeconds
    hidden [object] $_cachingEnabled
    hidden [object] $_canarySetting
    hidden [object] $_clientCertificateId
    hidden [object] $_dataTraceEnabled
    hidden [object] $_description
    hidden [object] $_documentationVersion
    hidden [object] $_loggingLevel
    hidden [object] $_methodSettings
    hidden [object] $_metricsEnabled
    hidden [object] $_tags
    hidden [object] $_throttlingBurstLimit
    hidden [object] $_throttlingRateLimit
    hidden [object] $_tracingEnabled
    hidden [object] $_variables

    [ApiGatewayDeploymentAccessLogSetting] $AccessLogSetting
    [bool] $CacheClusterEnabled
    [string] $CacheClusterSize
    [bool] $CacheDataEncrypted
    [int] $CacheTtlInSeconds
    [bool] $CachingEnabled
    [ApiGatewayDeploymentCanarySetting] $CanarySetting
    [string] $ClientCertificateId
    [bool] $DataTraceEnabled
    [string] $Description
    [string] $DocumentationVersion
    [LoggingLevel] $LoggingLevel
    [ApiGatewayDeploymentMethodSetting[]] $MethodSettings
    [bool] $MetricsEnabled
    [VSTag[]] $Tags
    [int] $ThrottlingBurstLimit
    [double] $ThrottlingRateLimit
    [bool] $TracingEnabled
    [string] $Variables

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

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLogSetting -Value {
            $this._accessLogSetting
        } -SecondValue {
            param([ValidateType(([ApiGatewayDeploymentAccessLogSetting], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessLogSetting = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterEnabled -Value {
            $this._cacheClusterEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheClusterEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterSize -Value {
            $this._cacheClusterSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheClusterSize = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheDataEncrypted -Value {
            $this._cacheDataEncrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheDataEncrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheTtlInSeconds -Value {
            $this._cacheTtlInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheTtlInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachingEnabled -Value {
            $this._cachingEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cachingEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CanarySetting -Value {
            $this._canarySetting
        } -SecondValue {
            param([ValidateType(([ApiGatewayDeploymentCanarySetting], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._canarySetting = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientCertificateId -Value {
            $this._clientCertificateId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientCertificateId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 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 DocumentationVersion -Value {
            $this._documentationVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._documentationVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 MethodSettings -Value {
            $this._methodSettings
        } -SecondValue {
            param([ValidateType(([ApiGatewayDeploymentMethodSetting], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._methodSettings = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricsEnabled -Value {
            $this._metricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this._tags
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this._tags = [VSTag]::TransformTag($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 ThrottlingRateLimit -Value {
            $this._throttlingRateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingRateLimit = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TracingEnabled -Value {
            $this._tracingEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tracingEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Variables -Value {
            $this._variables
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._variables = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDeploymentCanarySetting'"

class ApiGatewayDeploymentCanarySetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDeploymentCanarySetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-canarysetting.html'

    hidden [object] $_percentTraffic
    hidden [object] $_stageVariableOverrides
    hidden [object] $_useStageCache

    [double] $PercentTraffic
    [string] $StageVariableOverrides
    [bool] $UseStageCache

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PercentTraffic -Value {
            $this._percentTraffic
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._percentTraffic = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageVariableOverrides -Value {
            $this._stageVariableOverrides
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stageVariableOverrides = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseStageCache -Value {
            $this._useStageCache
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._useStageCache = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayStageAccessLogSetting'"

class ApiGatewayStageAccessLogSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayStageAccessLogSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-accesslogsetting.html'

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

    [string] $DestinationArn
    [string] $Format

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayMethodIntegrationResponse'"

class ApiGatewayMethodIntegrationResponse : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayMethodIntegrationResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html'

    hidden [object] $_contentHandling
    hidden [object] $_responseParameters
    hidden [object] $_responseTemplates
    hidden [object] $_selectionPattern
    hidden [object] $_statusCode

    [string] $ContentHandling
    [string] $ResponseParameters
    [string] $ResponseTemplates
    [string] $SelectionPattern
    [string] $StatusCode

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentHandling -Value {
            $this._contentHandling
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentHandling = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this._responseParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseTemplates -Value {
            $this._responseTemplates
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseTemplates = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SelectionPattern -Value {
            $this._selectionPattern
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._selectionPattern = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatusCode -Value {
            $this._statusCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statusCode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayStageMethodSetting'"

class ApiGatewayStageMethodSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayStageMethodSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html'

    hidden [object] $_cacheDataEncrypted
    hidden [object] $_cacheTtlInSeconds
    hidden [object] $_cachingEnabled
    hidden [object] $_dataTraceEnabled
    hidden [object] $_httpMethod
    hidden [object] $_loggingLevel
    hidden [object] $_metricsEnabled
    hidden [object] $_resourcePath
    hidden [object] $_throttlingBurstLimit
    hidden [object] $_throttlingRateLimit

    [bool] $CacheDataEncrypted
    [int] $CacheTtlInSeconds
    [bool] $CachingEnabled
    [bool] $DataTraceEnabled
    [string] $HttpMethod
    [LoggingLevel] $LoggingLevel
    [bool] $MetricsEnabled
    [string] $ResourcePath
    [int] $ThrottlingBurstLimit
    [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 CacheDataEncrypted -Value {
            $this._cacheDataEncrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheDataEncrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheTtlInSeconds -Value {
            $this._cacheTtlInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cacheTtlInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachingEnabled -Value {
            $this._cachingEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cachingEnabled = $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 HttpMethod -Value {
            $this._httpMethod
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpMethod = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 MetricsEnabled -Value {
            $this._metricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourcePath -Value {
            $this._resourcePath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourcePath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 ThrottlingRateLimit -Value {
            $this._throttlingRateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throttlingRateLimit = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDomainNameEndpointConfiguration'"

class ApiGatewayDomainNameEndpointConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayDomainNameEndpointConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-domainname-endpointconfiguration.html'

    hidden [object] $_types

    [string[]] $Types

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Types -Value {
            $this._types
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._types = @($value)
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayUsagePlanThrottleSettings'"

class ApiGatewayUsagePlanThrottleSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayUsagePlanThrottleSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html'

    hidden [object] $_burstLimit
    hidden [object] $_rateLimit

    [int] $BurstLimit
    [double] $RateLimit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BurstLimit -Value {
            $this._burstLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._burstLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RateLimit -Value {
            $this._rateLimit
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rateLimit = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayUsagePlanQuotaSettings'"

class ApiGatewayUsagePlanQuotaSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSApiGatewayUsagePlanQuotaSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html'

    hidden [object] $_limit
    hidden [object] $_offset
    hidden [object] $_period

    [int] $Limit
    [int] $Offset
    [string] $Period

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Limit -Value {
            $this._limit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._limit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Offset -Value {
            $this._offset
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._offset = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Period -Value {
            $this._period
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._period = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDeployment'"

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

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Deployment'
    [ApiGatewayDeploymentDeploymentCanarySettings] $DeploymentCanarySettings
    [string] $Description
    [string] $RestApiId
    [ApiGatewayDeploymentStageDescription] $StageDescription
    [string] $StageName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentCanarySettings -Value {
            $this.Properties['DeploymentCanarySettings']
        } -SecondValue {
            param([ValidateType(([ApiGatewayDeploymentDeploymentCanarySettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeploymentCanarySettings'] = $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 RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageDescription -Value {
            $this.Properties['StageDescription']
        } -SecondValue {
            param([ValidateType(([ApiGatewayDeploymentStageDescription], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StageDescription'] = $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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayAuthorizer'"

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

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Authorizer'
    [string] $AuthType
    [string] $AuthorizerCredentials
    [int] $AuthorizerResultTtlInSeconds
    [string] $AuthorizerUri
    [string] $IdentitySource
    [string] $IdentityValidationExpression
    [string] $Name
    [string[]] $ProviderARNs
    [string] $RestApiId
    [string] $AuthorizerType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthType -Value {
            $this.Properties['AuthType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerCredentials -Value {
            $this.Properties['AuthorizerCredentials']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerCredentials'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $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 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 IdentitySource -Value {
            $this.Properties['IdentitySource']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdentitySource'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 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 ProviderARNs -Value {
            $this.Properties['ProviderARNs']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ProviderARNs'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDomainName'"

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

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

    [string] $Type = 'AWS::ApiGateway::DomainName'
    [string] $DomainName
    [ApiGatewayDomainNameEndpointConfiguration] $EndpointConfiguration
    [ApiGatewayDomainNameMutualTlsAuthentication] $MutualTlsAuthentication
    [string] $CertificateArn
    [string] $RegionalCertificateArn
    [string] $SecurityPolicy
    [VSTag[]] $Tags
    [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 EndpointConfiguration -Value {
            $this.Properties['EndpointConfiguration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayDomainNameEndpointConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndpointConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MutualTlsAuthentication -Value {
            $this.Properties['MutualTlsAuthentication']
        } -SecondValue {
            param([ValidateType(([ApiGatewayDomainNameMutualTlsAuthentication], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MutualTlsAuthentication'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateArn -Value {
            $this.Properties['CertificateArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CertificateArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RegionalCertificateArn -Value {
            $this.Properties['RegionalCertificateArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RegionalCertificateArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityPolicy -Value {
            $this.Properties['SecurityPolicy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SecurityPolicy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDocumentationPart'"

class ApiGatewayDocumentationPart : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayDocumentationPart'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::DocumentationPart'
    [ApiGatewayDocumentationPartLocation] $Location
    [string] $Properties
    [string] $RestApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Location -Value {
            $this.Properties['Location']
        } -SecondValue {
            param([ValidateType(([ApiGatewayDocumentationPartLocation], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Properties -Value {
            $this.Properties['Properties']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Properties'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayModel'"

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

    hidden [object] $_condition

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

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 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 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 RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayUsagePlan'"

class ApiGatewayUsagePlan : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayUsagePlan'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::UsagePlan'
    [ApiGatewayUsagePlanApiStage[]] $ApiStages
    [string] $Description
    [ApiGatewayUsagePlanQuotaSettings] $Quota
    [VSTag[]] $Tags
    [ApiGatewayUsagePlanThrottleSettings] $Throttle
    [string] $UsagePlanName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiStages -Value {
            $this.Properties['ApiStages']
        } -SecondValue {
            param([ValidateType(([ApiGatewayUsagePlanApiStage], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ApiStages'] = $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 Quota -Value {
            $this.Properties['Quota']
        } -SecondValue {
            param([ValidateType(([ApiGatewayUsagePlanQuotaSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Quota'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Throttle -Value {
            $this.Properties['Throttle']
        } -SecondValue {
            param([ValidateType(([ApiGatewayUsagePlanThrottleSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Throttle'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UsagePlanName -Value {
            $this.Properties['UsagePlanName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UsagePlanName'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayBasePathMapping'"

class ApiGatewayBasePathMapping : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayBasePathMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::BasePathMapping'
    [string] $BasePath
    [string] $DomainName
    [string] $RestApiId
    [string] $Stage
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 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 RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayStage'"

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

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Stage'
    [ApiGatewayStageAccessLogSetting] $AccessLogSetting
    [bool] $CacheClusterEnabled
    [string] $CacheClusterSize
    [ApiGatewayStageCanarySetting] $CanarySetting
    [string] $ClientCertificateId
    [string] $DeploymentId
    [string] $Description
    [string] $DocumentationVersion
    [ApiGatewayStageMethodSetting[]] $MethodSettings
    [string] $RestApiId
    [string] $StageName
    [VSTag[]] $Tags
    [bool] $TracingEnabled
    [string] $Variables
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLogSetting -Value {
            $this.Properties['AccessLogSetting']
        } -SecondValue {
            param([ValidateType(([ApiGatewayStageAccessLogSetting], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AccessLogSetting'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterEnabled -Value {
            $this.Properties['CacheClusterEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CacheClusterEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterSize -Value {
            $this.Properties['CacheClusterSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CacheClusterSize'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CanarySetting -Value {
            $this.Properties['CanarySetting']
        } -SecondValue {
            param([ValidateType(([ApiGatewayStageCanarySetting], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CanarySetting'] = $value
        }
        $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 DocumentationVersion -Value {
            $this.Properties['DocumentationVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DocumentationVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MethodSettings -Value {
            $this.Properties['MethodSettings']
        } -SecondValue {
            param([ValidateType(([ApiGatewayStageMethodSetting], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['MethodSettings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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 Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TracingEnabled -Value {
            $this.Properties['TracingEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TracingEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Variables -Value {
            $this.Properties['Variables']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Variables'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayGatewayResponse'"

class ApiGatewayGatewayResponse : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayGatewayResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::GatewayResponse'
    [string] $ResponseParameters
    [string] $ResponseTemplates
    [string] $ResponseType
    [string] $RestApiId
    [string] $StatusCode
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseParameters -Value {
            $this.Properties['ResponseParameters']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResponseParameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseTemplates -Value {
            $this.Properties['ResponseTemplates']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResponseTemplates'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseType -Value {
            $this.Properties['ResponseType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResponseType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatusCode -Value {
            $this.Properties['StatusCode']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StatusCode'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayClientCertificate'"

class ApiGatewayClientCertificate : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayClientCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html'

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

    [string] $Type = 'AWS::ApiGateway::ClientCertificate'
    [string] $Description
    [VSTag[]] $Tags
    [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 Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayDocumentationVersion'"

class ApiGatewayDocumentationVersion : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayDocumentationVersion'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::DocumentationVersion'
    [string] $Description
    [string] $DocumentationVersion
    [string] $RestApiId
    [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 DocumentationVersion -Value {
            $this.Properties['DocumentationVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DocumentationVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayUsagePlanKey'"

class ApiGatewayUsagePlanKey : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayUsagePlanKey'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::UsagePlanKey'
    [string] $KeyId
    [string] $KeyType
    [string] $UsagePlanId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyId -Value {
            $this.Properties['KeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyType -Value {
            $this.Properties['KeyType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KeyType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UsagePlanId -Value {
            $this.Properties['UsagePlanId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UsagePlanId'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayRequestValidator'"

class ApiGatewayRequestValidator : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayRequestValidator'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::RequestValidator'
    [string] $Name
    [string] $RestApiId
    [bool] $ValidateRequestBody
    [bool] $ValidateRequestParameters
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ValidateRequestBody -Value {
            $this.Properties['ValidateRequestBody']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ValidateRequestBody'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ValidateRequestParameters -Value {
            $this.Properties['ValidateRequestParameters']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ValidateRequestParameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayApiKey'"

class ApiGatewayApiKey : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayApiKey'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html'

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

    [string] $Type = 'AWS::ApiGateway::ApiKey'
    [string] $CustomerId
    [string] $Description
    [bool] $Enabled
    [bool] $GenerateDistinctId
    [string] $Name
    [ApiGatewayApiKeyStageKey[]] $StageKeys
    [VSTag[]] $Tags
    [string] $Value
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomerId -Value {
            $this.Properties['CustomerId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomerId'] = 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 Enabled -Value {
            $this.Properties['Enabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Enabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GenerateDistinctId -Value {
            $this.Properties['GenerateDistinctId']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['GenerateDistinctId'] = $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 StageKeys -Value {
            $this.Properties['StageKeys']
        } -SecondValue {
            param([ValidateType(([ApiGatewayApiKeyStageKey], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['StageKeys'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this.Properties['Value']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Value'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayResource'"

class ApiGatewayResource : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayResource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Resource'
    [string] $ParentId
    [string] $PathPart
    [string] $RestApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParentId -Value {
            $this.Properties['ParentId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ParentId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PathPart -Value {
            $this.Properties['PathPart']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PathPart'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayAccount'"

class ApiGatewayAccount : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayAccount'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Account'
    [string] $CloudWatchRoleArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchRoleArn -Value {
            $this.Properties['CloudWatchRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CloudWatchRoleArn'] = 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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayRestApi'"

class ApiGatewayRestApi : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayRestApi'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html'

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

    [string] $Type = 'AWS::ApiGateway::RestApi'
    [string] $ApiKeySourceType
    [string[]] $BinaryMediaTypes
    [VSJson] $Body
    [ApiGatewayRestApiS3Location] $BodyS3Location
    [string] $CloneFrom
    [string] $Description
    [bool] $DisableExecuteApiEndpoint
    [ApiGatewayRestApiEndpointConfiguration] $EndpointConfiguration
    [bool] $FailOnWarnings
    [int] $MinimumCompressionSize
    [string] $Name
    [string] $Parameters
    [VSJson] $Policy
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApiKeySourceType -Value {
            $this.Properties['ApiKeySourceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApiKeySourceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BinaryMediaTypes -Value {
            $this.Properties['BinaryMediaTypes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BinaryMediaTypes'] = @($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 BodyS3Location -Value {
            $this.Properties['BodyS3Location']
        } -SecondValue {
            param([ValidateType(([ApiGatewayRestApiS3Location], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BodyS3Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloneFrom -Value {
            $this.Properties['CloneFrom']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CloneFrom'] = 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 DisableExecuteApiEndpoint -Value {
            $this.Properties['DisableExecuteApiEndpoint']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisableExecuteApiEndpoint'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointConfiguration -Value {
            $this.Properties['EndpointConfiguration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayRestApiEndpointConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndpointConfiguration'] = $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 MinimumCompressionSize -Value {
            $this.Properties['MinimumCompressionSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinimumCompressionSize'] = if ($cast = $value -as [int]) {
                $cast
            }
            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 Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Parameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Policy -Value {
            $this.Properties['Policy']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Policy'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Policy']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayVpcLink'"

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

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::VpcLink'
    [string] $Description
    [string[]] $TargetArns
    [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 TargetArns -Value {
            $this.Properties['TargetArns']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TargetArns'] = @($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
        }
    }

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

Write-Verbose "Importing class 'ApiGatewayMethod'"

class ApiGatewayMethod : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSApiGatewayMethod'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ApiGateway::Method'
    [bool] $ApiKeyRequired
    [string[]] $AuthorizationScopes
    [string] $AuthorizationType
    [string] $AuthorizerId
    [string] $HttpMethod
    [ApiGatewayMethodIntegration] $Integration
    [ApiGatewayMethodMethodResponse[]] $MethodResponses
    [string] $OperationName
    [string] $RequestModels
    [bool] $RequestParameters
    [string] $RequestValidatorId
    [string] $ResourceId
    [string] $RestApiId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $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 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 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 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 HttpMethod -Value {
            $this.Properties['HttpMethod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HttpMethod'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Integration -Value {
            $this.Properties['Integration']
        } -SecondValue {
            param([ValidateType(([ApiGatewayMethodIntegration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Integration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MethodResponses -Value {
            $this.Properties['MethodResponses']
        } -SecondValue {
            param([ValidateType(([ApiGatewayMethodMethodResponse], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['MethodResponses'] = $value
        }
        $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 RequestModels -Value {
            $this.Properties['RequestModels']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RequestModels'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestParameters -Value {
            $this.Properties['RequestParameters']
        } -SecondValue {
            param([ValidateType(([bool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RequestParameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequestValidatorId -Value {
            $this.Properties['RequestValidatorId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RequestValidatorId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceId -Value {
            $this.Properties['ResourceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this.Properties['RestApiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestApiId'] = 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
        }
    }

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