VaporShell.Pinpoint.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 'PinpointCampaignMetricDimension'"

class PinpointCampaignMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-metricdimension.html'

    hidden [object] $_comparisonOperator
    hidden [object] $_value

    [string] $ComparisonOperator
    [double] $Value

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

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

Write-Verbose "Importing class 'PinpointSegmentAttributeDimension'"

class PinpointSegmentAttributeDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentAttributeDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-attributedimension.html'

    hidden [object] $_attributeType
    hidden [object] $_values

    [string] $AttributeType
    [string[]] $Values

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

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

Write-Verbose "Importing class 'PinpointSegmentRecency'"

class PinpointSegmentRecency : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentRecency'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior-recency.html'

    hidden [object] $_duration
    hidden [object] $_recencyType

    [string] $Duration
    [string] $RecencyType

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

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

Write-Verbose "Importing class 'PinpointCampaignSchedule'"

class PinpointCampaignSchedule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignSchedule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html'

    hidden [object] $_timeZone
    hidden [object] $_quietTime
    hidden [object] $_endTime
    hidden [object] $_startTime
    hidden [object] $_frequency
    hidden [object] $_eventFilter
    hidden [object] $_isLocalTime

    [string] $TimeZone
    [PinpointCampaignQuietTime] $QuietTime
    [string] $EndTime
    [string] $StartTime
    [string] $Frequency
    [PinpointCampaignCampaignEventFilter] $EventFilter
    [bool] $IsLocalTime

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeZone -Value {
            $this._timeZone
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeZone = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QuietTime -Value {
            $this._quietTime
        } -SecondValue {
            param([ValidateType(([PinpointCampaignQuietTime], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._quietTime = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndTime -Value {
            $this._endTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartTime -Value {
            $this._startTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._startTime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Frequency -Value {
            $this._frequency
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._frequency = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventFilter -Value {
            $this._eventFilter
        } -SecondValue {
            param([ValidateType(([PinpointCampaignCampaignEventFilter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventFilter = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IsLocalTime -Value {
            $this._isLocalTime
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._isLocalTime = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentGroups'"

class PinpointSegmentGroups : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentGroups'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html'

    hidden [object] $_type
    hidden [object] $_sourceType
    hidden [object] $_dimensions
    hidden [object] $_sourceSegments

    [string] $Type
    [string] $SourceType
    [PinpointSegmentSegmentDimensions[]] $Dimensions
    [PinpointSegmentSourceSegments[]] $SourceSegments

    hidden [void] _addAccessors() {
        $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 SourceType -Value {
            $this._sourceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSegmentDimensions], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceSegments -Value {
            $this._sourceSegments
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSourceSegments], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._sourceSegments = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignQuietTime'"

class PinpointCampaignQuietTime : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignQuietTime'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule-quiettime.html'

    hidden [object] $_start
    hidden [object] $_end

    [string] $Start
    [string] $End

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

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

Write-Verbose "Importing class 'PinpointSegmentLocation'"

class PinpointSegmentLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentLocation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location.html'

    hidden [object] $_gPSPoint
    hidden [object] $_country

    [PinpointSegmentGPSPoint] $GPSPoint
    [PinpointSegmentSetDimension] $Country

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name GPSPoint -Value {
            $this._gPSPoint
        } -SecondValue {
            param([ValidateType(([PinpointSegmentGPSPoint], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._gPSPoint = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Country -Value {
            $this._country
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._country = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointApplicationSettingsCampaignHook'"

class PinpointApplicationSettingsCampaignHook : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointApplicationSettingsCampaignHook'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-campaignhook.html'

    hidden [object] $_mode
    hidden [object] $_webUrl
    hidden [object] $_lambdaFunctionName

    [string] $Mode
    [string] $WebUrl
    [string] $LambdaFunctionName

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

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

Write-Verbose "Importing class 'PinpointPushTemplateDefaultPushNotificationTemplate'"

class PinpointPushTemplateDefaultPushNotificationTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointPushTemplateDefaultPushNotificationTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-defaultpushnotificationtemplate.html'

    hidden [object] $_action
    hidden [object] $_title
    hidden [object] $_sound
    hidden [object] $_body
    hidden [object] $_url

    [string] $Action
    [string] $Title
    [string] $Sound
    [string] $Body
    [string] $Url

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Title -Value {
            $this._title
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._title = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sound -Value {
            $this._sound
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sound = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignMessage'"

class PinpointCampaignMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html'

    hidden [object] $_jsonBody
    hidden [object] $_action
    hidden [object] $_mediaUrl
    hidden [object] $_timeToLive
    hidden [object] $_imageSmallIconUrl
    hidden [object] $_imageUrl
    hidden [object] $_title
    hidden [object] $_imageIconUrl
    hidden [object] $_silentPush
    hidden [object] $_body
    hidden [object] $_rawContent
    hidden [object] $_url

    [string] $JsonBody
    [string] $Action
    [string] $MediaUrl
    [int] $TimeToLive
    [string] $ImageSmallIconUrl
    [string] $ImageUrl
    [string] $Title
    [string] $ImageIconUrl
    [bool] $SilentPush
    [string] $Body
    [string] $RawContent
    [string] $Url

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name JsonBody -Value {
            $this._jsonBody
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jsonBody = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MediaUrl -Value {
            $this._mediaUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mediaUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeToLive -Value {
            $this._timeToLive
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeToLive = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageSmallIconUrl -Value {
            $this._imageSmallIconUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageSmallIconUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageUrl -Value {
            $this._imageUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Title -Value {
            $this._title
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._title = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageIconUrl -Value {
            $this._imageIconUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageIconUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SilentPush -Value {
            $this._silentPush
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._silentPush = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RawContent -Value {
            $this._rawContent
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rawContent = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentSegmentGroups'"

class PinpointSegmentSegmentGroups : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentSegmentGroups'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups.html'

    hidden [object] $_groups
    hidden [object] $_include

    [PinpointSegmentGroups[]] $Groups
    [string] $Include

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

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

Write-Verbose "Importing class 'PinpointCampaignCampaignEventFilter'"

class PinpointCampaignCampaignEventFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignCampaignEventFilter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaigneventfilter.html'

    hidden [object] $_filterType
    hidden [object] $_dimensions

    [string] $FilterType
    [PinpointCampaignEventDimensions] $Dimensions

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

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

Write-Verbose "Importing class 'PinpointCampaignCampaignSmsMessage'"

class PinpointCampaignCampaignSmsMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignCampaignSmsMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignsmsmessage.html'

    hidden [object] $_entityId
    hidden [object] $_originationNumber
    hidden [object] $_senderId
    hidden [object] $_body
    hidden [object] $_messageType
    hidden [object] $_templateId

    [string] $EntityId
    [string] $OriginationNumber
    [string] $SenderId
    [string] $Body
    [string] $MessageType
    [string] $TemplateId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EntityId -Value {
            $this._entityId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._entityId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginationNumber -Value {
            $this._originationNumber
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originationNumber = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SenderId -Value {
            $this._senderId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._senderId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessageType -Value {
            $this._messageType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messageType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateId -Value {
            $this._templateId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._templateId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignWriteTreatmentResource'"

class PinpointCampaignWriteTreatmentResource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignWriteTreatmentResource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html'

    hidden [object] $_treatmentDescription
    hidden [object] $_messageConfiguration
    hidden [object] $_schedule
    hidden [object] $_sizePercent
    hidden [object] $_treatmentName

    [string] $TreatmentDescription
    [PinpointCampaignMessageConfiguration] $MessageConfiguration
    [PinpointCampaignSchedule] $Schedule
    [int] $SizePercent
    [string] $TreatmentName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TreatmentDescription -Value {
            $this._treatmentDescription
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._treatmentDescription = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessageConfiguration -Value {
            $this._messageConfiguration
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessageConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messageConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this._schedule
        } -SecondValue {
            param([ValidateType(([PinpointCampaignSchedule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._schedule = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizePercent -Value {
            $this._sizePercent
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizePercent = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TreatmentName -Value {
            $this._treatmentName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._treatmentName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentCoordinates'"

class PinpointSegmentCoordinates : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentCoordinates'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates.html'

    hidden [object] $_latitude
    hidden [object] $_longitude

    [double] $Latitude
    [double] $Longitude

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Latitude -Value {
            $this._latitude
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._latitude = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Longitude -Value {
            $this._longitude
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._longitude = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignSetDimension'"

class PinpointCampaignSetDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignSetDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-setdimension.html'

    hidden [object] $_dimensionType
    hidden [object] $_values

    [string] $DimensionType
    [string[]] $Values

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

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

Write-Verbose "Importing class 'PinpointPushTemplateAndroidPushNotificationTemplate'"

class PinpointPushTemplateAndroidPushNotificationTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointPushTemplateAndroidPushNotificationTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-androidpushnotificationtemplate.html'

    hidden [object] $_action
    hidden [object] $_imageUrl
    hidden [object] $_smallImageIconUrl
    hidden [object] $_title
    hidden [object] $_imageIconUrl
    hidden [object] $_sound
    hidden [object] $_body
    hidden [object] $_url

    [string] $Action
    [string] $ImageUrl
    [string] $SmallImageIconUrl
    [string] $Title
    [string] $ImageIconUrl
    [string] $Sound
    [string] $Body
    [string] $Url

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageUrl -Value {
            $this._imageUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SmallImageIconUrl -Value {
            $this._smallImageIconUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._smallImageIconUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Title -Value {
            $this._title
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._title = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageIconUrl -Value {
            $this._imageIconUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._imageIconUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sound -Value {
            $this._sound
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sound = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignEventDimensions'"

class PinpointCampaignEventDimensions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignEventDimensions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-eventdimensions.html'

    hidden [VSJson] $_metrics
    hidden [object] $_eventType
    hidden [VSJson] $_attributes

    [VSJson] $Metrics
    [PinpointCampaignSetDimension] $EventType
    [VSJson] $Attributes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Metrics -Value {
            $this._metrics
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._metrics = [VSJson]::Transform($value)
            Write-Debug $this._metrics
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventType -Value {
            $this._eventType
        } -SecondValue {
            param([ValidateType(([PinpointCampaignSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventType = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this._attributes
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._attributes = [VSJson]::Transform($value)
            Write-Debug $this._attributes
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentSegmentDimensions'"

class PinpointSegmentSegmentDimensions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentSegmentDimensions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html'

    hidden [object] $_demographic
    hidden [VSJson] $_metrics
    hidden [VSJson] $_attributes
    hidden [object] $_behavior
    hidden [VSJson] $_userAttributes
    hidden [object] $_location

    [PinpointSegmentDemographic] $Demographic
    [VSJson] $Metrics
    [VSJson] $Attributes
    [PinpointSegmentBehavior] $Behavior
    [VSJson] $UserAttributes
    [PinpointSegmentLocation] $Location

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Demographic -Value {
            $this._demographic
        } -SecondValue {
            param([ValidateType(([PinpointSegmentDemographic], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._demographic = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Metrics -Value {
            $this._metrics
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._metrics = [VSJson]::Transform($value)
            Write-Debug $this._metrics
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this._attributes
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._attributes = [VSJson]::Transform($value)
            Write-Debug $this._attributes
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Behavior -Value {
            $this._behavior
        } -SecondValue {
            param([ValidateType(([PinpointSegmentBehavior], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._behavior = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserAttributes -Value {
            $this._userAttributes
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._userAttributes = [VSJson]::Transform($value)
            Write-Debug $this._userAttributes
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Location -Value {
            $this._location
        } -SecondValue {
            param([ValidateType(([PinpointSegmentLocation], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._location = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentSourceSegments'"

class PinpointSegmentSourceSegments : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentSourceSegments'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups-sourcesegments.html'

    hidden [object] $_version
    hidden [object] $_id

    [int] $Version
    [string] $Id

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

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

Write-Verbose "Importing class 'PinpointSegmentGPSPoint'"

class PinpointSegmentGPSPoint : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentGPSPoint'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint.html'

    hidden [object] $_rangeInKilometers
    hidden [object] $_coordinates

    [double] $RangeInKilometers
    [PinpointSegmentCoordinates] $Coordinates

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RangeInKilometers -Value {
            $this._rangeInKilometers
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rangeInKilometers = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Coordinates -Value {
            $this._coordinates
        } -SecondValue {
            param([ValidateType(([PinpointSegmentCoordinates], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coordinates = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentDemographic'"

class PinpointSegmentDemographic : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentDemographic'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html'

    hidden [object] $_appVersion
    hidden [object] $_deviceType
    hidden [object] $_platform
    hidden [object] $_channel
    hidden [object] $_model
    hidden [object] $_make

    [PinpointSegmentSetDimension] $AppVersion
    [PinpointSegmentSetDimension] $DeviceType
    [PinpointSegmentSetDimension] $Platform
    [PinpointSegmentSetDimension] $Channel
    [PinpointSegmentSetDimension] $Model
    [PinpointSegmentSetDimension] $Make

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AppVersion -Value {
            $this._appVersion
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._appVersion = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceType -Value {
            $this._deviceType
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceType = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Platform -Value {
            $this._platform
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._platform = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Channel -Value {
            $this._channel
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._channel = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Model -Value {
            $this._model
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._model = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Make -Value {
            $this._make
        } -SecondValue {
            param([ValidateType(([PinpointSegmentSetDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._make = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointApplicationSettingsLimits'"

class PinpointApplicationSettingsLimits : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointApplicationSettingsLimits'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html'

    hidden [object] $_daily
    hidden [object] $_maximumDuration
    hidden [object] $_total
    hidden [object] $_messagesPerSecond

    [int] $Daily
    [int] $MaximumDuration
    [int] $Total
    [int] $MessagesPerSecond

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Daily -Value {
            $this._daily
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._daily = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumDuration -Value {
            $this._maximumDuration
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumDuration = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Total -Value {
            $this._total
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._total = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessagesPerSecond -Value {
            $this._messagesPerSecond
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messagesPerSecond = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignLimits'"

class PinpointCampaignLimits : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignLimits'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html'

    hidden [object] $_daily
    hidden [object] $_maximumDuration
    hidden [object] $_total
    hidden [object] $_messagesPerSecond

    [int] $Daily
    [int] $MaximumDuration
    [int] $Total
    [int] $MessagesPerSecond

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Daily -Value {
            $this._daily
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._daily = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumDuration -Value {
            $this._maximumDuration
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumDuration = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Total -Value {
            $this._total
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._total = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessagesPerSecond -Value {
            $this._messagesPerSecond
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messagesPerSecond = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentSetDimension'"

class PinpointSegmentSetDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentSetDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-setdimension.html'

    hidden [object] $_dimensionType
    hidden [object] $_values

    [string] $DimensionType
    [string[]] $Values

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

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

Write-Verbose "Importing class 'PinpointCampaignAttributeDimension'"

class PinpointCampaignAttributeDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignAttributeDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-attributedimension.html'

    hidden [object] $_attributeType
    hidden [object] $_values

    [string] $AttributeType
    [string[]] $Values

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

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

Write-Verbose "Importing class 'PinpointCampaignMessageConfiguration'"

class PinpointCampaignMessageConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignMessageConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html'

    hidden [object] $_aPNSMessage
    hidden [object] $_baiduMessage
    hidden [object] $_defaultMessage
    hidden [object] $_emailMessage
    hidden [object] $_gCMMessage
    hidden [object] $_sMSMessage
    hidden [object] $_aDMMessage

    [PinpointCampaignMessage] $APNSMessage
    [PinpointCampaignMessage] $BaiduMessage
    [PinpointCampaignMessage] $DefaultMessage
    [PinpointCampaignCampaignEmailMessage] $EmailMessage
    [PinpointCampaignMessage] $GCMMessage
    [PinpointCampaignCampaignSmsMessage] $SMSMessage
    [PinpointCampaignMessage] $ADMMessage

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name APNSMessage -Value {
            $this._aPNSMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aPNSMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BaiduMessage -Value {
            $this._baiduMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._baiduMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultMessage -Value {
            $this._defaultMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EmailMessage -Value {
            $this._emailMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignCampaignEmailMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._emailMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GCMMessage -Value {
            $this._gCMMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._gCMMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SMSMessage -Value {
            $this._sMSMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignCampaignSmsMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sMSMessage = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ADMMessage -Value {
            $this._aDMMessage
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessage], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aDMMessage = $value
        }
    }

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

Write-Verbose "Importing class 'PinpointSegmentBehavior'"

class PinpointSegmentBehavior : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointSegmentBehavior'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior.html'

    hidden [object] $_recency

    [PinpointSegmentRecency] $Recency

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

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

Write-Verbose "Importing class 'PinpointCampaignCampaignHook'"

class PinpointCampaignCampaignHook : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignCampaignHook'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignhook.html'

    hidden [object] $_mode
    hidden [object] $_webUrl
    hidden [object] $_lambdaFunctionName

    [string] $Mode
    [string] $WebUrl
    [string] $LambdaFunctionName

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

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

Write-Verbose "Importing class 'PinpointPushTemplateAPNSPushNotificationTemplate'"

class PinpointPushTemplateAPNSPushNotificationTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointPushTemplateAPNSPushNotificationTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-pushtemplate-apnspushnotificationtemplate.html'

    hidden [object] $_action
    hidden [object] $_mediaUrl
    hidden [object] $_title
    hidden [object] $_sound
    hidden [object] $_body
    hidden [object] $_url

    [string] $Action
    [string] $MediaUrl
    [string] $Title
    [string] $Sound
    [string] $Body
    [string] $Url

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MediaUrl -Value {
            $this._mediaUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mediaUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Title -Value {
            $this._title
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._title = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sound -Value {
            $this._sound
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sound = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointCampaignCampaignEmailMessage'"

class PinpointCampaignCampaignEmailMessage : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointCampaignCampaignEmailMessage'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html'

    hidden [object] $_fromAddress
    hidden [object] $_htmlBody
    hidden [object] $_title
    hidden [object] $_body

    [string] $FromAddress
    [string] $HtmlBody
    [string] $Title
    [string] $Body

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FromAddress -Value {
            $this._fromAddress
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fromAddress = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HtmlBody -Value {
            $this._htmlBody
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._htmlBody = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Title -Value {
            $this._title
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._title = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._body = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'PinpointApplicationSettingsQuietTime'"

class PinpointApplicationSettingsQuietTime : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSPinpointApplicationSettingsQuietTime'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-quiettime.html'

    hidden [object] $_start
    hidden [object] $_end

    [string] $Start
    [string] $End

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

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

Write-Verbose "Importing class 'PinpointVoiceChannel'"

class PinpointVoiceChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointVoiceChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-voicechannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::VoiceChannel'
    [bool] $Enabled
    [string] $ApplicationId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointEventStream'"

class PinpointEventStream : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointEventStream'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::EventStream'
    [string] $ApplicationId
    [string] $DestinationStreamArn
    [string] $RoleArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointEmailTemplate'"

class PinpointEmailTemplate : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointEmailTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailtemplate.html'

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

    [string] $Type = 'AWS::Pinpoint::EmailTemplate'
    [string] $HtmlPart
    [string] $TextPart
    [string] $TemplateName
    [string] $TemplateDescription
    [string] $DefaultSubstitutions
    [string] $Subject
    [VSJson] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointBaiduChannel'"

class PinpointBaiduChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointBaiduChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::BaiduChannel'
    [string] $SecretKey
    [string] $ApiKey
    [bool] $Enabled
    [string] $ApplicationId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointGCMChannel'"

class PinpointGCMChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointGCMChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::GCMChannel'
    [string] $ApiKey
    [bool] $Enabled
    [string] $ApplicationId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointAPNSChannel'"

class PinpointAPNSChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointAPNSChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::APNSChannel'
    [string] $BundleId
    [string] $PrivateKey
    [bool] $Enabled
    [string] $DefaultAuthenticationMethod
    [string] $TokenKey
    [string] $ApplicationId
    [string] $TeamId
    [string] $Certificate
    [string] $TokenKeyId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointCampaign'"

class PinpointCampaign : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointCampaign'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html'

    hidden [string[]] $_attributes = @('CampaignId','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::Campaign'
    [string] $Description
    [string] $SegmentId
    [bool] $IsPaused
    [PinpointCampaignWriteTreatmentResource[]] $AdditionalTreatments
    [string] $Name
    [int] $SegmentVersion
    [string] $TreatmentDescription
    [PinpointCampaignMessageConfiguration] $MessageConfiguration
    [PinpointCampaignLimits] $Limits
    [int] $HoldoutPercent
    [PinpointCampaignSchedule] $Schedule
    [string] $ApplicationId
    [PinpointCampaignCampaignHook] $CampaignHook
    [VSJson] $Tags
    [string] $TreatmentName
    [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 SegmentId -Value {
            $this.Properties['SegmentId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SegmentId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IsPaused -Value {
            $this.Properties['IsPaused']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IsPaused'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalTreatments -Value {
            $this.Properties['AdditionalTreatments']
        } -SecondValue {
            param([ValidateType(([PinpointCampaignWriteTreatmentResource], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AdditionalTreatments'] = $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 SegmentVersion -Value {
            $this.Properties['SegmentVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SegmentVersion'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TreatmentDescription -Value {
            $this.Properties['TreatmentDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TreatmentDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessageConfiguration -Value {
            $this.Properties['MessageConfiguration']
        } -SecondValue {
            param([ValidateType(([PinpointCampaignMessageConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MessageConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Limits -Value {
            $this.Properties['Limits']
        } -SecondValue {
            param([ValidateType(([PinpointCampaignLimits], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Limits'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HoldoutPercent -Value {
            $this.Properties['HoldoutPercent']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HoldoutPercent'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this.Properties['Schedule']
        } -SecondValue {
            param([ValidateType(([PinpointCampaignSchedule], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Schedule'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApplicationId -Value {
            $this.Properties['ApplicationId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApplicationId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CampaignHook -Value {
            $this.Properties['CampaignHook']
        } -SecondValue {
            param([ValidateType(([PinpointCampaignCampaignHook], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CampaignHook'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TreatmentName -Value {
            $this.Properties['TreatmentName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TreatmentName'] = 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
        }
    }

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

Write-Verbose "Importing class 'PinpointAPNSVoipSandboxChannel'"

class PinpointAPNSVoipSandboxChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointAPNSVoipSandboxChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::APNSVoipSandboxChannel'
    [string] $BundleId
    [string] $PrivateKey
    [bool] $Enabled
    [string] $DefaultAuthenticationMethod
    [string] $TokenKey
    [string] $ApplicationId
    [string] $TeamId
    [string] $Certificate
    [string] $TokenKeyId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'PinpointAPNSVoipChannel'"

class PinpointAPNSVoipChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSPinpointAPNSVoipChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Pinpoint::APNSVoipChannel'
    [string] $BundleId
    [string] $PrivateKey
    [bool] $Enabled
    [string] $DefaultAuthenticationMethod
    [string] $TokenKey
    [string] $ApplicationId
    [string] $TeamId
    [string] $Certificate
    [string] $TokenKeyId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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