pspulumiyaml.azurenative.providerhub.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionProviderhubGetNotificationRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The notification registration.)')]
        [string]
        $notificationRegistrationName
    )

    process
    {
        $arguments = @{}
        $arguments["notificationRegistrationName"] = $notificationRegistrationName
        $arguments["providerNamespace"] = $providerNamespace

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getNotificationRegistration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetProviderRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace
    )

    process
    {
        $arguments = @{}
        $arguments["providerNamespace"] = $providerNamespace

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getProviderRegistration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetSkusNestedResourceTypeThird
{
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The second child resource type.)')]
        [string]
        $nestedResourceTypeSecond,
        [parameter(mandatory=$False,HelpMessage='The third child resource type.)')]
        [string]
        $nestedResourceTypeThird
    )

    process
    {
        $arguments = @{}
        $arguments["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $arguments["nestedResourceTypeSecond"] = $nestedResourceTypeSecond
        $arguments["nestedResourceTypeThird"] = $nestedResourceTypeThird
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["resourceType"] = $resourceType
        $arguments["sku"] = $sku

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getSkusNestedResourceTypeThird -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetSkus
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace
    )

    process
    {
        $arguments = @{}
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["resourceType"] = $resourceType
        $arguments["sku"] = $sku

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getSkus -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetSkusNestedResourceTypeSecond
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The second child resource type.)')]
        [string]
        $nestedResourceTypeSecond
    )

    process
    {
        $arguments = @{}
        $arguments["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $arguments["nestedResourceTypeSecond"] = $nestedResourceTypeSecond
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["resourceType"] = $resourceType
        $arguments["sku"] = $sku

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getSkusNestedResourceTypeSecond -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetResourceTypeRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType
    )

    process
    {
        $arguments = @{}
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["resourceType"] = $resourceType

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getResourceTypeRegistration -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetSkusNestedResourceTypeFirst
{
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace
    )

    process
    {
        $arguments = @{}
        $arguments["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["resourceType"] = $resourceType
        $arguments["sku"] = $sku

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getSkusNestedResourceTypeFirst -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionProviderhubGetDefaultRollout
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The rollout name.)')]
        [string]
        $rolloutName
    )

    process
    {
        $arguments = @{}
        $arguments["providerNamespace"] = $providerNamespace
        $arguments["rolloutName"] = $rolloutName

        $functionObject = Invoke-PulumiFunction -Name azure-native:providerhub:getDefaultRollout -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SkuCapability
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $name
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $value
}
function New-AzureNativeTypeProviderhubSkuCapability
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $value
    )

    process
    {
        return $([SkuCapability]$PSBoundParameters)
    }
}
class SkuSettingCapacity
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [int] $minimum
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [int] $maximum
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [int] $default
    [ValidateSet('None', 'Manual', 'Automatic')]
    [string] $scaleType
}
function New-AzureNativeTypeProviderhubSkuSettingCapacity
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $minimum,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $maximum,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $default,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('None', 'Manual', 'Automatic')]
        $scaleType
    )

    process
    {
        return $([SkuSettingCapacity]$PSBoundParameters)
    }
}
class SkuCost
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [int] $quantity
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $extendedUnit
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $meterId
}
function New-AzureNativeTypeProviderhubSkuCost
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $quantity,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $extendedUnit,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $meterId
    )

    process
    {
        return $([SkuCost]$PSBoundParameters)
    }
}
class SkuZoneDetail
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuCapability[]] $capabilities
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $name
}
function New-AzureNativeTypeProviderhubSkuZoneDetail
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        $capabilities,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $name
    )

    process
    {
        return $([SkuZoneDetail]$PSBoundParameters)
    }
}
class SkuLocationInfo
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $zones
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuZoneDetail[]] $zoneDetails
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $location
    [ValidateSet('NotSpecified', 'EdgeZone', 'ArcZone')]
    [string] $type
    [ValidateSet('NotSpecified', 'EdgeZone', 'ArcZone')]
    [string[]] $extendedLocations
}
function New-AzureNativeTypeProviderhubSkuLocationInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $zones,
        [parameter(mandatory=$False,HelpMessage=')')]
        $zoneDetails,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'EdgeZone', 'ArcZone')]
        $type,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $extendedLocations
    )

    process
    {
        return $([SkuLocationInfo]$PSBoundParameters)
    }
}
class SkuSetting
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuCapability[]] $capabilities
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuSettingCapacity] $capacity
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $requiredFeatures
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $size
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $kind
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $requiredQuotaIds
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $family
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $locations
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $tier
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuCost[]] $costs
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $name
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuLocationInfo[]] $locationInfo
}
function New-AzureNativeTypeProviderhubSkuSetting
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        $capabilities,
        [parameter(mandatory=$False,HelpMessage=')')]
        [SkuSettingCapacity]
        $capacity,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $size,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredQuotaIds,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $family,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $locations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage=')')]
        $costs,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage=')')]
        $locationInfo
    )

    process
    {
        return $([SkuSetting]$PSBoundParameters)
    }
}
class SkuResourceProperties
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $provisioningState
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SkuSetting[]] $skuSettings
}
function New-AzureNativeTypeProviderhubSkuResourceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage=')')]
        $skuSettings
    )

    process
    {
        return $([SkuResourceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeProviderhubSkusNestedResourceTypeSecond
{
    [Alias('azure_native_providerhub_skusnestedresourcetypesecond')]
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [SkuResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The second child resource type.)')]
        [string]
        $nestedResourceTypeSecond,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:SkusNestedResourceTypeSecond")

        $resource.properties["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $resource.properties["nestedResourceTypeSecond"] = $nestedResourceTypeSecond
        $resource.properties["providerNamespace"] = $providerNamespace
        $resource.properties["resourceType"] = $resourceType

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubSkusNestedResourceTypeFirst
{
    [Alias('azure_native_providerhub_skusnestedresourcetypefirst')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [SkuResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:SkusNestedResourceTypeFirst")

        $resource.properties["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $resource.properties["providerNamespace"] = $providerNamespace
        $resource.properties["resourceType"] = $resourceType

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class DefaultRolloutPropertiesStatus
{
    [object] $failedOrSkippedRegions
    [ValidateSet('NotApplicable', 'ConditionalUpdate', 'ForcedUpdate', 'Failed')]
    [string] $subscriptionReregistrationResult
    [ValidateSet('NotApplicable', 'ConditionalUpdate', 'ForcedUpdate', 'Failed')]
    [string] $nextTrafficRegionScheduledTime
    [ValidateSet('NotSpecified', 'Canary', 'LowTraffic', 'MediumTraffic', 'HighTraffic', 'None', 'RestOfTheWorldGroupOne', 'RestOfTheWorldGroupTwo')]
    [string] $nextTrafficRegion
    [ValidateSet('NotSpecified', 'Canary', 'LowTraffic', 'MediumTraffic', 'HighTraffic', 'None', 'RestOfTheWorldGroupOne', 'RestOfTheWorldGroupTwo')]
    [string[]] $completedRegions
}
class TypedErrorInfo
{
    [string] $type
}
function New-AzureNativeTypeProviderhubTypedErrorInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $type
    )

    process
    {
        return $([TypedErrorInfo]$PSBoundParameters)
    }
}
class ExtendedErrorInfo
{
    [string] $code
    [string] $target
    [ExtendedErrorInfo[]] $details
    [TypedErrorInfo[]] $additionalInfo
    [string] $message
}
function New-AzureNativeTypeProviderhubExtendedErrorInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $code,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $target,
        [parameter(mandatory=$False,HelpMessage=')')]
        $details,
        [parameter(mandatory=$False,HelpMessage=')')]
        $additionalInfo,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $message
    )

    process
    {
        return $([ExtendedErrorInfo]$PSBoundParameters)
    }
}
function New-AzureNativeTypeProviderhubDefaultRolloutPropertiesStatus
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [ExtendedErrorInfo]
        $failedOrSkippedRegions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotApplicable', 'ConditionalUpdate', 'ForcedUpdate', 'Failed')]
        $subscriptionReregistrationResult,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $nextTrafficRegionScheduledTime,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Canary', 'LowTraffic', 'MediumTraffic', 'HighTraffic', 'None', 'RestOfTheWorldGroupOne', 'RestOfTheWorldGroupTwo')]
        $nextTrafficRegion,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $completedRegions
    )

    process
    {
        return $([DefaultRolloutPropertiesStatus]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationRestOfTheWorldGroupTwo
{
    [string[]] $regions
    [string] $waitDuration
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationRestOfTheWorldGroupTwo
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $waitDuration
    )

    process
    {
        return $([DefaultRolloutSpecificationRestOfTheWorldGroupTwo]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationCanary
{
    [string[]] $regions
    [string[]] $skipRegions
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationCanary
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $skipRegions
    )

    process
    {
        return $([DefaultRolloutSpecificationCanary]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationHighTraffic
{
    [string[]] $regions
    [string] $waitDuration
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationHighTraffic
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $waitDuration
    )

    process
    {
        return $([DefaultRolloutSpecificationHighTraffic]$PSBoundParameters)
    }
}
class ResourceProviderAuthorization
{
    [string] $managedByRoleDefinitionId
    [string] $applicationId
    [string] $roleDefinitionId
}
function New-AzureNativeTypeProviderhubResourceProviderAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $managedByRoleDefinitionId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $applicationId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $roleDefinitionId
    )

    process
    {
        return $([ResourceProviderAuthorization]$PSBoundParameters)
    }
}
class ResourceProviderManifestPropertiesProviderAuthentication
{
    [string[]] $allowedAudiences
}
function New-AzureNativeTypeProviderhubResourceProviderManifestPropertiesProviderAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $allowedAudiences
    )

    process
    {
        return $([ResourceProviderManifestPropertiesProviderAuthentication]$PSBoundParameters)
    }
}
class ResourceProviderManifestPropertiesTemplateDeploymentOptions
{
    [bool] $preflightSupported
    [string[]] $preflightOptions
}
function New-AzureNativeTypeProviderhubResourceProviderManifestPropertiesTemplateDeploymentOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $preflightSupported,
        [parameter(mandatory=$False,HelpMessage=')')]
        $preflightOptions
    )

    process
    {
        return $([ResourceProviderManifestPropertiesTemplateDeploymentOptions]$PSBoundParameters)
    }
}
class ResourceProviderCapabilities
{
    [ValidateSet('NotSpecified', 'Allow', 'Disallow')]
    [string] $effect
    [ValidateSet('NotSpecified', 'Allow', 'Disallow')]
    [string] $quotaId
    [ValidateSet('NotSpecified', 'Allow', 'Disallow')]
    [string[]] $requiredFeatures
}
function New-AzureNativeTypeProviderhubResourceProviderCapabilities
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Allow', 'Disallow')]
        $effect,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $quotaId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures
    )

    process
    {
        return $([ResourceProviderCapabilities]$PSBoundParameters)
    }
}
class SubscriptionStateOverrideAction
{
    [ValidateSet('NotDefined', 'DeleteAllResources', 'SoftDeleteAllResources', 'NoOp', 'BillingCancellation', 'UndoSoftDelete')]
    [string] $action
    [ValidateSet('Registered', 'Unregistered', 'Warned', 'Suspended', 'Deleted', 'WarnedToRegistered', 'WarnedToSuspended', 'WarnedToDeleted', 'WarnedToUnregistered', 'SuspendedToRegistered', 'SuspendedToWarned', 'SuspendedToDeleted', 'SuspendedToUnregistered')]
    [string] $state
}
function New-AzureNativeTypeProviderhubSubscriptionStateOverrideAction
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotDefined', 'DeleteAllResources', 'SoftDeleteAllResources', 'NoOp', 'BillingCancellation', 'UndoSoftDelete')]
        $action,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('Registered', 'Unregistered', 'Warned', 'Suspended', 'Deleted', 'WarnedToRegistered', 'WarnedToSuspended', 'WarnedToDeleted', 'WarnedToUnregistered', 'SuspendedToRegistered', 'SuspendedToWarned', 'SuspendedToDeleted', 'SuspendedToUnregistered')]
        $state
    )

    process
    {
        return $([SubscriptionStateOverrideAction]$PSBoundParameters)
    }
}
class ProviderRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $softDeleteTTL
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SubscriptionStateOverrideAction[]] $subscriptionStateOverrideActions
}
function New-AzureNativeTypeProviderhubProviderRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $softDeleteTTL,
        [parameter(mandatory=$False,HelpMessage=')')]
        $subscriptionStateOverrideActions
    )

    process
    {
        return $([ProviderRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications]$PSBoundParameters)
    }
}
class ProviderHubMetadataProviderAuthentication
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $allowedAudiences
}
function New-AzureNativeTypeProviderhubProviderHubMetadataProviderAuthentication
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $allowedAudiences
    )

    process
    {
        return $([ProviderHubMetadataProviderAuthentication]$PSBoundParameters)
    }
}
class LightHouseAuthorization
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $roleDefinitionId
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $principalId
}
function New-AzureNativeTypeProviderhubLightHouseAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $roleDefinitionId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $principalId
    )

    process
    {
        return $([LightHouseAuthorization]$PSBoundParameters)
    }
}
class ProviderHubMetadataThirdPartyProviderAuthorization
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $managedByTenantId
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [LightHouseAuthorization[]] $authorizations
}
function New-AzureNativeTypeProviderhubProviderHubMetadataThirdPartyProviderAuthorization
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $managedByTenantId,
        [parameter(mandatory=$False,HelpMessage=')')]
        $authorizations
    )

    process
    {
        return $([ProviderHubMetadataThirdPartyProviderAuthorization]$PSBoundParameters)
    }
}
class ProviderRegistrationPropertiesProviderHubMetadata
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ProviderHubMetadataProviderAuthentication] $providerAuthentication
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ResourceProviderAuthorization[]] $providerAuthorizations
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ProviderHubMetadataThirdPartyProviderAuthorization] $thirdPartyProviderAuthorization
}
function New-AzureNativeTypeProviderhubProviderRegistrationPropertiesProviderHubMetadata
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderHubMetadataProviderAuthentication]
        $providerAuthentication,
        [parameter(mandatory=$False,HelpMessage=')')]
        $providerAuthorizations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderHubMetadataThirdPartyProviderAuthorization]
        $thirdPartyProviderAuthorization
    )

    process
    {
        return $([ProviderRegistrationPropertiesProviderHubMetadata]$PSBoundParameters)
    }
}
class ResourceProviderManifestPropertiesRequestHeaderOptions
{
    [ValidateSet('NotSpecified', 'SignedUserToken', 'ClientGroupMembership', 'SignedAuxiliaryTokens', 'UnboundedClientGroupMembership')]
    [string] $optInHeaders
}
function New-AzureNativeTypeProviderhubResourceProviderManifestPropertiesRequestHeaderOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'SignedUserToken', 'ClientGroupMembership', 'SignedAuxiliaryTokens', 'UnboundedClientGroupMembership')]
        $optInHeaders
    )

    process
    {
        return $([ResourceProviderManifestPropertiesRequestHeaderOptions]$PSBoundParameters)
    }
}
class ServiceTreeInfo
{
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string] $componentId
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string] $serviceId
}
function New-AzureNativeTypeProviderhubServiceTreeInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $componentId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $serviceId
    )

    process
    {
        return $([ServiceTreeInfo]$PSBoundParameters)
    }
}
class ResourceProviderManifestPropertiesManagement
{
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [string] $incidentRoutingTeam
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [object[]] $resourceAccessRoles
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string] $resourceAccessPolicy
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string[]] $schemaOwners
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string[]] $manifestOwners
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [ServiceTreeInfo[]] $serviceTreeInfos
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string] $incidentRoutingService
    [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
    [string] $incidentContactEmail
}
function New-AzureNativeTypeProviderhubResourceProviderManifestPropertiesManagement
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $incidentRoutingTeam,
        [parameter(mandatory=$False,HelpMessage=')')]
        $resourceAccessRoles,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'AcisReadAllowed', 'AcisActionAllowed')]
        $resourceAccessPolicy,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $schemaOwners,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $manifestOwners,
        [parameter(mandatory=$False,HelpMessage=')')]
        $serviceTreeInfos,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $incidentRoutingService,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $incidentContactEmail
    )

    process
    {
        return $([ResourceProviderManifestPropertiesManagement]$PSBoundParameters)
    }
}
class ResourceProviderManifestPropertiesFeaturesRule
{
    [ValidateSet('Any', 'All')]
    [string] $requiredFeaturesPolicy
}
function New-AzureNativeTypeProviderhubResourceProviderManifestPropertiesFeaturesRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('Any', 'All')]
        $requiredFeaturesPolicy
    )

    process
    {
        return $([ResourceProviderManifestPropertiesFeaturesRule]$PSBoundParameters)
    }
}
class ProviderRegistrationProperties
{
    [string[]] $requiredFeatures
    [ResourceProviderAuthorization[]] $providerAuthorizations
    [ResourceProviderManifestPropertiesProviderAuthentication] $providerAuthentication
    [ResourceProviderManifestPropertiesTemplateDeploymentOptions] $templateDeploymentOptions
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $provisioningState
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ResourceProviderCapabilities[]] $capabilities
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ProviderRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications] $subscriptionLifecycleNotificationSpecifications
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [ProviderRegistrationPropertiesProviderHubMetadata] $providerHubMetadata
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $namespace
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $providerVersion
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [object] $metadata
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [string] $providerType
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [ResourceProviderManifestPropertiesRequestHeaderOptions] $requestHeaderOptions
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [ResourceProviderManifestPropertiesManagement] $management
    [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
    [ResourceProviderManifestPropertiesFeaturesRule] $featuresRule
}
function New-AzureNativeTypeProviderhubProviderRegistrationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures,
        [parameter(mandatory=$False,HelpMessage=')')]
        $providerAuthorizations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceProviderManifestPropertiesProviderAuthentication]
        $providerAuthentication,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceProviderManifestPropertiesTemplateDeploymentOptions]
        $templateDeploymentOptions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage=')')]
        $capabilities,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications]
        $subscriptionLifecycleNotificationSpecifications,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderRegistrationPropertiesProviderHubMetadata]
        $providerHubMetadata,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $namespace,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $providerVersion,
        [parameter(mandatory=$False,HelpMessage=')')]
        $metadata,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Internal', 'External', 'Hidden', 'RegistrationFree', 'LegacyRegistrationRequired', 'TenantOnly', 'AuthorizationFree')]
        $providerType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceProviderManifestPropertiesRequestHeaderOptions]
        $requestHeaderOptions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceProviderManifestPropertiesManagement]
        $management,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceProviderManifestPropertiesFeaturesRule]
        $featuresRule
    )

    process
    {
        return $([ProviderRegistrationProperties]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationProviderRegistration
{
    [ProviderRegistrationProperties] $properties
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationProviderRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderRegistrationProperties]
        $properties
    )

    process
    {
        return $([DefaultRolloutSpecificationProviderRegistration]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationMediumTraffic
{
    [string[]] $regions
    [string] $waitDuration
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationMediumTraffic
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $waitDuration
    )

    process
    {
        return $([DefaultRolloutSpecificationMediumTraffic]$PSBoundParameters)
    }
}
class ThrottlingMetric
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $interval
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [int] $limit
    [ValidateSet('NotSpecified', 'NumberOfRequests', 'NumberOfResources')]
    [string] $type
}
function New-AzureNativeTypeProviderhubThrottlingMetric
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $interval,
        [parameter(mandatory=$False,HelpMessage=')')]
        [int]
        $limit,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'NumberOfRequests', 'NumberOfResources')]
        $type
    )

    process
    {
        return $([ThrottlingMetric]$PSBoundParameters)
    }
}
class ThrottlingRule
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ThrottlingMetric[]] $metrics
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $action
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $requiredFeatures
}
function New-AzureNativeTypeProviderhubThrottlingRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        $metrics,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $action,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures
    )

    process
    {
        return $([ThrottlingRule]$PSBoundParameters)
    }
}
class AuthorizationActionMapping
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $desired
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $original
}
function New-AzureNativeTypeProviderhubAuthorizationActionMapping
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $desired,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $original
    )

    process
    {
        return $([AuthorizationActionMapping]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $softDeleteTTL
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [SubscriptionStateOverrideAction[]] $subscriptionStateOverrideActions
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $softDeleteTTL,
        [parameter(mandatory=$False,HelpMessage=')')]
        $subscriptionStateOverrideActions
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesCheckNameAvailabilitySpecifications
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $resourceTypesWithCustomValidation
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $enableDefaultValidation
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesCheckNameAvailabilitySpecifications
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $resourceTypesWithCustomValidation,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $enableDefaultValidation
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesCheckNameAvailabilitySpecifications]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesIdentityManagement
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $applicationId
    [ValidateSet('NotSpecified', 'SystemAssigned', 'UserAssigned', 'Actor', 'DelegatedResourceIdentity')]
    [string] $type
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesIdentityManagement
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $applicationId,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'SystemAssigned', 'UserAssigned', 'Actor', 'DelegatedResourceIdentity')]
        $type
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesIdentityManagement]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesFeaturesRule
{
    [ValidateSet('Any', 'All')]
    [string] $requiredFeaturesPolicy
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesFeaturesRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('Any', 'All')]
        $requiredFeaturesPolicy
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesFeaturesRule]$PSBoundParameters)
    }
}
class ResourceTypeExtensionOptionsResourceCreationBegin
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $response
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $request
}
function New-AzureNativeTypeProviderhubResourceTypeExtensionOptionsResourceCreationBegin
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        $response,
        [parameter(mandatory=$False,HelpMessage=')')]
        $request
    )

    process
    {
        return $([ResourceTypeExtensionOptionsResourceCreationBegin]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesExtensionOptions
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeExtensionOptionsResourceCreationBegin] $resourceCreationBegin
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesExtensionOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeExtensionOptionsResourceCreationBegin]
        $resourceCreationBegin
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesExtensionOptions]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesResourceMovePolicy
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $crossSubscriptionMoveEnabled
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $validationRequired
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $crossResourceGroupMoveEnabled
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesResourceMovePolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $crossSubscriptionMoveEnabled,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $validationRequired,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $crossResourceGroupMoveEnabled
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesResourceMovePolicy]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesRequestHeaderOptions
{
    [ValidateSet('NotSpecified', 'SignedUserToken', 'ClientGroupMembership', 'SignedAuxiliaryTokens', 'UnboundedClientGroupMembership')]
    [string] $optInHeaders
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesRequestHeaderOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'SignedUserToken', 'ClientGroupMembership', 'SignedAuxiliaryTokens', 'UnboundedClientGroupMembership')]
        $optInHeaders
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesRequestHeaderOptions]$PSBoundParameters)
    }
}
class LinkedAccessCheck
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $actionName
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $linkedType
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $linkedProperty
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $linkedAction
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $linkedActionVerb
}
function New-AzureNativeTypeProviderhubLinkedAccessCheck
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $actionName,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $linkedType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $linkedProperty,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $linkedAction,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $linkedActionVerb
    )

    process
    {
        return $([LinkedAccessCheck]$PSBoundParameters)
    }
}
class SubscriptionStateRule
{
    [ValidateSet('NotDefined', 'Enabled', 'Warned', 'PastDue', 'Disabled', 'Deleted')]
    [string] $state
    [ValidateSet('NotDefined', 'Enabled', 'Warned', 'PastDue', 'Disabled', 'Deleted')]
    [string[]] $allowedActions
}
function New-AzureNativeTypeProviderhubSubscriptionStateRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotDefined', 'Enabled', 'Warned', 'PastDue', 'Disabled', 'Deleted')]
        $state,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $allowedActions
    )

    process
    {
        return $([SubscriptionStateRule]$PSBoundParameters)
    }
}
class SwaggerSpecification
{
    [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
    [string[]] $apiVersions
    [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
    [string] $swaggerSpecFolderUri
}
function New-AzureNativeTypeProviderhubSwaggerSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $apiVersions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $swaggerSpecFolderUri
    )

    process
    {
        return $([SwaggerSpecification]$PSBoundParameters)
    }
}
class LoggingRuleHiddenPropertyPaths
{
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $hiddenPathsOnResponse
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $hiddenPathsOnRequest
}
function New-AzureNativeTypeProviderhubLoggingRuleHiddenPropertyPaths
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $hiddenPathsOnResponse,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $hiddenPathsOnRequest
    )

    process
    {
        return $([LoggingRuleHiddenPropertyPaths]$PSBoundParameters)
    }
}
class LoggingRule
{
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [LoggingRuleHiddenPropertyPaths] $hiddenPropertyPaths
    [ValidateSet('None', 'Body')]
    [string] $detailLevel
    [ValidateSet('None', 'Request', 'Response')]
    [string] $direction
    [ValidateSet('None', 'Request', 'Response')]
    [string] $action
}
function New-AzureNativeTypeProviderhubLoggingRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [LoggingRuleHiddenPropertyPaths]
        $hiddenPropertyPaths,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('None', 'Body')]
        $detailLevel,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('None', 'Request', 'Response')]
        $direction,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $action
    )

    process
    {
        return $([LoggingRule]$PSBoundParameters)
    }
}
class ResourceTypeEndpointFeaturesRule
{
    [ValidateSet('Any', 'All')]
    [string] $requiredFeaturesPolicy
}
function New-AzureNativeTypeProviderhubResourceTypeEndpointFeaturesRule
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('Any', 'All')]
        $requiredFeaturesPolicy
    )

    process
    {
        return $([ResourceTypeEndpointFeaturesRule]$PSBoundParameters)
    }
}
class ResourceTypeExtension
{
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string] $endpointUri
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string] $timeout
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $extensionCategories
}
function New-AzureNativeTypeProviderhubResourceTypeExtension
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $endpointUri,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $timeout,
        [parameter(mandatory=$False,HelpMessage=')')]
        $extensionCategories
    )

    process
    {
        return $([ResourceTypeExtension]$PSBoundParameters)
    }
}
class ResourceTypeEndpoint
{
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $requiredFeatures
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string] $timeout
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $locations
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [ResourceTypeEndpointFeaturesRule] $featuresRule
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [ResourceTypeExtension[]] $extensions
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $apiVersions
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [bool] $enabled
}
function New-AzureNativeTypeProviderhubResourceTypeEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $timeout,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $locations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeEndpointFeaturesRule]
        $featuresRule,
        [parameter(mandatory=$False,HelpMessage=')')]
        $extensions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $apiVersions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $enabled
    )

    process
    {
        return $([ResourceTypeEndpoint]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationPropertiesTemplateDeploymentOptions
{
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [bool] $preflightSupported
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string[]] $preflightOptions
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationPropertiesTemplateDeploymentOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $preflightSupported,
        [parameter(mandatory=$False,HelpMessage=')')]
        $preflightOptions
    )

    process
    {
        return $([ResourceTypeRegistrationPropertiesTemplateDeploymentOptions]$PSBoundParameters)
    }
}
class ExtendedLocationOptions
{
    [ValidateSet('NotSpecified', 'Global', 'Regional')]
    [string] $type
    [ValidateSet('NotSpecified', 'Global', 'Regional')]
    [string] $supportedPolicy
}
function New-AzureNativeTypeProviderhubExtendedLocationOptions
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $type,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $supportedPolicy
    )

    process
    {
        return $([ExtendedLocationOptions]$PSBoundParameters)
    }
}
class ResourceTypeRegistrationProperties
{
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $routingType
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ThrottlingRule[]] $throttlingRules
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ServiceTreeInfo[]] $serviceTreeInfos
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [AuthorizationActionMapping[]] $authorizationActionMappings
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications] $subscriptionLifecycleNotificationSpecifications
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $requiredFeatures
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $isPureProxy
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesCheckNameAvailabilitySpecifications] $checkNameAvailabilitySpecifications
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesIdentityManagement] $identityManagement
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string] $defaultApiVersion
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesFeaturesRule] $featuresRule
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [bool] $enableAsyncOperation
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesExtensionOptions] $extensionOptions
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesResourceMovePolicy] $resourceMovePolicy
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $disallowedActionVerbs
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [ResourceTypeRegistrationPropertiesRequestHeaderOptions] $requestHeaderOptions
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [string[]] $allowedUnauthorizedActions
    [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
    [LinkedAccessCheck[]] $linkedAccessChecks
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $provisioningState
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [SubscriptionStateRule[]] $subscriptionStateRules
    [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
    [string] $marketplaceType
    [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
    [bool] $enableThirdPartyS2S
    [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
    [SwaggerSpecification[]] $swaggerSpecifications
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [string] $resourceDeletionPolicy
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [LoggingRule[]] $loggingRules
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [ResourceTypeEndpoint[]] $endpoints
    [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
    [ResourceTypeRegistrationPropertiesTemplateDeploymentOptions] $templateDeploymentOptions
    [ValidateSet('NotSpecified', 'Global', 'Regional')]
    [string] $regionality
    [ValidateSet('NotSpecified', 'Global', 'Regional')]
    [ExtendedLocationOptions[]] $extendedLocations
}
function New-AzureNativeTypeProviderhubResourceTypeRegistrationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('Default', 'ProxyOnly', 'HostBased', 'Extension', 'Tenant', 'Fanout', 'LocationBased', 'Failover', 'CascadeExtension')]
        $routingType,
        [parameter(mandatory=$False,HelpMessage=')')]
        $throttlingRules,
        [parameter(mandatory=$False,HelpMessage=')')]
        $serviceTreeInfos,
        [parameter(mandatory=$False,HelpMessage=')')]
        $authorizationActionMappings,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesSubscriptionLifecycleNotificationSpecifications]
        $subscriptionLifecycleNotificationSpecifications,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $requiredFeatures,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $isPureProxy,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesCheckNameAvailabilitySpecifications]
        $checkNameAvailabilitySpecifications,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesIdentityManagement]
        $identityManagement,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $defaultApiVersion,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesFeaturesRule]
        $featuresRule,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $enableAsyncOperation,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesExtensionOptions]
        $extensionOptions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesResourceMovePolicy]
        $resourceMovePolicy,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $disallowedActionVerbs,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesRequestHeaderOptions]
        $requestHeaderOptions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $allowedUnauthorizedActions,
        [parameter(mandatory=$False,HelpMessage=')')]
        $linkedAccessChecks,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage=')')]
        $subscriptionStateRules,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'AddOn', 'Bypass', 'Store')]
        $marketplaceType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [bool]
        $enableThirdPartyS2S,
        [parameter(mandatory=$False,HelpMessage=')')]
        $swaggerSpecifications,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'CascadeDeleteAll', 'CascadeDeleteProxyOnlyChildren')]
        $resourceDeletionPolicy,
        [parameter(mandatory=$False,HelpMessage=')')]
        $loggingRules,
        [parameter(mandatory=$False,HelpMessage=')')]
        $endpoints,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationPropertiesTemplateDeploymentOptions]
        $templateDeploymentOptions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Global', 'Regional')]
        $regionality,
        [parameter(mandatory=$False,HelpMessage=')')]
        $extendedLocations
    )

    process
    {
        return $([ResourceTypeRegistrationProperties]$PSBoundParameters)
    }
}
class ResourceTypeRegistration
{
    [ResourceTypeRegistrationProperties] $properties
}
function New-AzureNativeTypeProviderhubResourceTypeRegistration
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationProperties]
        $properties
    )

    process
    {
        return $([ResourceTypeRegistration]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationLowTraffic
{
    [string[]] $regions
    [string] $waitDuration
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationLowTraffic
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $waitDuration
    )

    process
    {
        return $([DefaultRolloutSpecificationLowTraffic]$PSBoundParameters)
    }
}
class DefaultRolloutSpecificationRestOfTheWorldGroupOne
{
    [string[]] $regions
    [string] $waitDuration
}
function New-AzureNativeTypeProviderhubDefaultRolloutSpecificationRestOfTheWorldGroupOne
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $regions,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $waitDuration
    )

    process
    {
        return $([DefaultRolloutSpecificationRestOfTheWorldGroupOne]$PSBoundParameters)
    }
}
class DefaultRolloutPropertiesSpecification
{
    [DefaultRolloutSpecificationRestOfTheWorldGroupTwo] $restOfTheWorldGroupTwo
    [DefaultRolloutSpecificationCanary] $canary
    [DefaultRolloutSpecificationHighTraffic] $highTraffic
    [DefaultRolloutSpecificationProviderRegistration] $providerRegistration
    [DefaultRolloutSpecificationMediumTraffic] $mediumTraffic
    [ResourceTypeRegistration[]] $resourceTypeRegistrations
    [DefaultRolloutSpecificationLowTraffic] $lowTraffic
    [DefaultRolloutSpecificationRestOfTheWorldGroupOne] $restOfTheWorldGroupOne
}
function New-AzureNativeTypeProviderhubDefaultRolloutPropertiesSpecification
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationRestOfTheWorldGroupTwo]
        $restOfTheWorldGroupTwo,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationCanary]
        $canary,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationHighTraffic]
        $highTraffic,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationProviderRegistration]
        $providerRegistration,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationMediumTraffic]
        $mediumTraffic,
        [parameter(mandatory=$False,HelpMessage=')')]
        $resourceTypeRegistrations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationLowTraffic]
        $lowTraffic,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutSpecificationRestOfTheWorldGroupOne]
        $restOfTheWorldGroupOne
    )

    process
    {
        return $([DefaultRolloutPropertiesSpecification]$PSBoundParameters)
    }
}
class DefaultRolloutProperties
{
    [DefaultRolloutPropertiesStatus] $status
    [DefaultRolloutPropertiesSpecification] $specification
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $provisioningState
}
function New-AzureNativeTypeProviderhubDefaultRolloutProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutPropertiesStatus]
        $status,
        [parameter(mandatory=$False,HelpMessage=')')]
        [DefaultRolloutPropertiesSpecification]
        $specification,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
        $provisioningState
    )

    process
    {
        return $([DefaultRolloutProperties]$PSBoundParameters)
    }
}
function New-AzureNativeProviderhubDefaultRollout
{
    [Alias('azure_native_providerhub_defaultrollout')]
    param (
        [parameter(mandatory=$False,HelpMessage='The rollout name.)')]
        [string]
        $rolloutName,
        [parameter(mandatory=$False,HelpMessage='Properties of the rollout.)')]
        [DefaultRolloutProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:DefaultRollout")

        $resource.properties["providerNamespace"] = $providerNamespace

        if($PSBoundParameters.Keys -icontains 'rolloutName')
        {
            $resource.properties["rolloutName"] = $rolloutName
        }

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubResourceTypeRegistration
{
    [Alias('azure_native_providerhub_resourcetyperegistration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ResourceTypeRegistrationProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:ResourceTypeRegistration")

        $resource.properties["providerNamespace"] = $providerNamespace

        if($PSBoundParameters.Keys -icontains 'resourceType')
        {
            $resource.properties["resourceType"] = $resourceType
        }

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubOperationByProviderRegistration
{
    [Alias('azure_native_providerhub_operationbyproviderregistration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage=')')]
        $contents,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:OperationByProviderRegistration")

        $resource.properties["contents"] = $contents
        $resource.properties["providerNamespace"] = $providerNamespace

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubProviderRegistration
{
    [Alias('azure_native_providerhub_providerregistration')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage=')')]
        [ProviderRegistrationProperties]
        $properties,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:ProviderRegistration")


        if($PSBoundParameters.Keys -icontains 'providerNamespace')
        {
            $resource.properties["providerNamespace"] = $providerNamespace
        }

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
class NotificationEndpoint
{
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $locations
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $notificationDestination
}
function New-AzureNativeTypeProviderhubNotificationEndpoint
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $locations,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        $notificationDestination
    )

    process
    {
        return $([NotificationEndpoint]$PSBoundParameters)
    }
}
class NotificationRegistrationProperties
{
    [ValidateSet('NotSpecified', 'EventHub', 'WebHook')]
    [string] $notificationMode
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string] $provisioningState
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [string[]] $includedEvents
    [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
    [NotificationEndpoint[]] $notificationEndpoints
    [ValidateSet('NotSpecified', 'RegisteredSubscriptions')]
    [string] $messageScope
}
function New-AzureNativeTypeProviderhubNotificationRegistrationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'EventHub', 'WebHook')]
        $notificationMode,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'Accepted', 'Running', 'Creating', 'Created', 'Deleting', 'Deleted', 'Canceled', 'Failed', 'Succeeded', 'MovingResources', 'TransientFailure', 'RolloutInProgress')]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string[]]
        $includedEvents,
        [parameter(mandatory=$False,HelpMessage=')')]
        $notificationEndpoints,
        [parameter(mandatory=$False,HelpMessage=')')]
        [string]
        [ValidateSet('NotSpecified', 'RegisteredSubscriptions')]
        $messageScope
    )

    process
    {
        return $([NotificationRegistrationProperties]$PSBoundParameters)
    }
}
function New-AzureNativeProviderhubNotificationRegistration
{
    [Alias('azure_native_providerhub_notificationregistration')]
    param (
        [parameter(mandatory=$False,HelpMessage=')')]
        [NotificationRegistrationProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage='The notification registration.)')]
        [string]
        $notificationRegistrationName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:NotificationRegistration")

        $resource.properties["providerNamespace"] = $providerNamespace

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        if($PSBoundParameters.Keys -icontains 'notificationRegistrationName')
        {
            $resource.properties["notificationRegistrationName"] = $notificationRegistrationName
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubSkusNestedResourceTypeThird
{
    [Alias('azure_native_providerhub_skusnestedresourcetypethird')]
    param (
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory=$False,HelpMessage=')')]
        [SkuResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='The first child resource type.)')]
        [string]
        $nestedResourceTypeFirst,
        [parameter(mandatory=$False,HelpMessage='The second child resource type.)')]
        [string]
        $nestedResourceTypeSecond,
        [parameter(mandatory=$False,HelpMessage='The third child resource type.)')]
        [string]
        $nestedResourceTypeThird,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:SkusNestedResourceTypeThird")

        $resource.properties["nestedResourceTypeFirst"] = $nestedResourceTypeFirst
        $resource.properties["nestedResourceTypeSecond"] = $nestedResourceTypeSecond
        $resource.properties["nestedResourceTypeThird"] = $nestedResourceTypeThird
        $resource.properties["providerNamespace"] = $providerNamespace
        $resource.properties["resourceType"] = $resourceType

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeProviderhubSkus
{
    [Alias('azure_native_providerhub_skus')]
    param (
        [parameter(mandatory=$False,HelpMessage='The resource type.)')]
        [string]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage=')')]
        [SkuResourceProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The SKU.)')]
        [string]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The name of the resource provider hosted within ProviderHub.)')]
        [string]
        $providerNamespace,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

    process
    {
        $resource = [pulumiresource]::new($pulumiid, "azure-native:providerhub:Skus")

        $resource.properties["providerNamespace"] = $providerNamespace
        $resource.properties["resourceType"] = $resourceType

        if($PSBoundParameters.Keys -icontains 'properties')
        {
            $resource.properties["properties"] = $properties
        }

        if($PSBoundParameters.Keys -icontains 'sku')
        {
            $resource.properties["sku"] = $sku
        }

        $global:pulumiresources += $resource
        return $resource
    }
}