pspulumiyaml.azurenative.notificationhubs.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionNotificationhubsGetNotificationHubAuthorizationRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName,
        [parameter(mandatory=$False,HelpMessage='The namespace name)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='authorization rule name.)')]
        [string]
        $authorizationRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationRuleName"] = $authorizationRuleName
        $arguments["namespaceName"] = $namespaceName
        $arguments["notificationHubName"] = $notificationHubName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:getNotificationHubAuthorizationRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsListNotificationHubKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The connection string of the NotificationHub for the specified authorizationRule.)')]
        [string]
        $authorizationRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationRuleName"] = $authorizationRuleName
        $arguments["namespaceName"] = $namespaceName
        $arguments["notificationHubName"] = $notificationHubName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:listNotificationHubKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsGetNamespaceAuthorizationRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='Authorization rule name.)')]
        [string]
        $authorizationRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationRuleName"] = $authorizationRuleName
        $arguments["namespaceName"] = $namespaceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:getNamespaceAuthorizationRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsListNamespaceKeys
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The connection string of the namespace for the specified authorizationRule.)')]
        [string]
        $authorizationRuleName
    )

    process
    {
        $arguments = @{}
        $arguments["authorizationRuleName"] = $authorizationRuleName
        $arguments["namespaceName"] = $namespaceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:listNamespaceKeys -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsGetNotificationHubPnsCredentials
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName
    )

    process
    {
        $arguments = @{}
        $arguments["namespaceName"] = $namespaceName
        $arguments["notificationHubName"] = $notificationHubName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:getNotificationHubPnsCredentials -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsGetNamespace
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName
    )

    process
    {
        $arguments = @{}
        $arguments["namespaceName"] = $namespaceName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:getNamespace -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionNotificationhubsGetNotificationHub
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName
    )

    process
    {
        $arguments = @{}
        $arguments["namespaceName"] = $namespaceName
        $arguments["notificationHubName"] = $notificationHubName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:notificationhubs:getNotificationHub -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SharedAccessAuthorizationRuleProperties
{
    [ArgumentCompletions('Manage', 'Send', 'Listen')]
    [string] $rights
}
function New-AzureNativeTypeNotificationhubsSharedAccessAuthorizationRuleProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The rights associated with the rule.)')]
        $rights
    )

    process
    {
        return $([SharedAccessAuthorizationRuleProperties]$PSBoundParameters)
    }
}
function New-AzureNativeNotificationhubsNotificationHubAuthorizationRule
{
    [Alias('azure_native_notificationhubs_notificationhubauthorizationrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Properties of the Namespace AuthorizationRules.)')]
        [SharedAccessAuthorizationRuleProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='Authorization Rule Name.)')]
        [string]
        $authorizationRuleName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["namespaceName"] = $namespaceName
        $resource.properties["notificationHubName"] = $notificationHubName
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class WnsCredential
{
    [string] $secretKey
    [string] $packageSid
    [string] $windowsLiveEndpoint
}
function New-AzureNativeTypeNotificationhubsWnsCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The secret key.)')]
        [string]
        $secretKey,
        [parameter(mandatory=$False,HelpMessage='The package ID for this credential.)')]
        [string]
        $packageSid,
        [parameter(mandatory=$False,HelpMessage='The Windows Live endpoint.)')]
        [string]
        $windowsLiveEndpoint
    )

    process
    {
        return $([WnsCredential]$PSBoundParameters)
    }
}
class Sku
{
    [string] $tier
    [ArgumentCompletions('Free', 'Basic', 'Standard')]
    [string] $name
    [string] $size
    [int] $capacity
    [string] $family
}
function New-AzureNativeTypeNotificationhubsSku
{
    param (
        [parameter(mandatory=$False,HelpMessage='The tier of particular sku)')]
        [string]
        $tier,
        [parameter(mandatory=$False,HelpMessage='Name of the notification hub sku)')]
        [string]
        [ArgumentCompletions('Free', 'Basic', 'Standard')]
        $name,
        [parameter(mandatory=$False,HelpMessage='The Sku size)')]
        [string]
        $size,
        [parameter(mandatory=$False,HelpMessage='The capacity of the resource)')]
        [int]
        $capacity,
        [parameter(mandatory=$False,HelpMessage='The Sku Family)')]
        [string]
        $family
    )

    process
    {
        return $([Sku]$PSBoundParameters)
    }
}
class MpnsCredential
{
    [string] $certificateKey
    [string] $thumbprint
    [string] $mpnsCertificate
}
function New-AzureNativeTypeNotificationhubsMpnsCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The certificate key for this credential.)')]
        [string]
        $certificateKey,
        [parameter(mandatory=$False,HelpMessage='The MPNS certificate Thumbprint)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='The MPNS certificate.)')]
        [string]
        $mpnsCertificate
    )

    process
    {
        return $([MpnsCredential]$PSBoundParameters)
    }
}
class GcmCredential
{
    [string] $googleApiKey
    [string] $gcmEndpoint
}
function New-AzureNativeTypeNotificationhubsGcmCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The Google API key.)')]
        [string]
        $googleApiKey,
        [parameter(mandatory=$False,HelpMessage='The FCM legacy endpoint. Default value is ''https://fcm.googleapis.com/fcm/send'')')]
        [string]
        $gcmEndpoint
    )

    process
    {
        return $([GcmCredential]$PSBoundParameters)
    }
}
class ApnsCredential
{
    [string] $thumbprint
    [string] $endpoint
    [string] $keyId
    [string] $apnsCertificate
    [string] $token
    [string] $certificateKey
    [string] $appId
    [string] $appName
}
function New-AzureNativeTypeNotificationhubsApnsCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The APNS certificate thumbprint. Specify if using Certificate Authentication Mode.)')]
        [string]
        $thumbprint,
        [parameter(mandatory=$False,HelpMessage='The APNS endpoint of this credential. If using Certificate Authentication Mode and Sandbox specify ''gateway.sandbox.push.apple.com''. If using Certificate Authentication Mode and Production specify ''gateway.push.apple.com''. If using Token Authentication Mode and Sandbox specify ''https://api.development.push.apple.com:443/3/device''. If using Token Authentication Mode and Production specify ''https://api.push.apple.com:443/3/device''.)')]
        [string]
        $endpoint,
        [parameter(mandatory=$False,HelpMessage='A 10-character key identifier (kid) key, obtained from your developer account. Specify if using Token Authentication Mode.)')]
        [string]
        $keyId,
        [parameter(mandatory=$False,HelpMessage='The APNS certificate. Specify if using Certificate Authentication Mode.)')]
        [string]
        $apnsCertificate,
        [parameter(mandatory=$False,HelpMessage='Provider Authentication Token, obtained through your developer account. Specify if using Token Authentication Mode.)')]
        [string]
        $token,
        [parameter(mandatory=$False,HelpMessage='The APNS certificate password if it exists.)')]
        [string]
        $certificateKey,
        [parameter(mandatory=$False,HelpMessage='The issuer (iss) registered claim key. The value is a 10-character TeamId, obtained from your developer account. Specify if using Token Authentication Mode.)')]
        [string]
        $appId,
        [parameter(mandatory=$False,HelpMessage='The name of the application or BundleId. Specify if using Token Authentication Mode.)')]
        [string]
        $appName
    )

    process
    {
        return $([ApnsCredential]$PSBoundParameters)
    }
}
class AdmCredential
{
    [string] $authTokenUrl
    [string] $clientSecret
    [string] $clientId
}
function New-AzureNativeTypeNotificationhubsAdmCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='The URL of the authorization token.)')]
        [string]
        $authTokenUrl,
        [parameter(mandatory=$False,HelpMessage='The credential secret access key.)')]
        [string]
        $clientSecret,
        [parameter(mandatory=$False,HelpMessage='The client identifier.)')]
        [string]
        $clientId
    )

    process
    {
        return $([AdmCredential]$PSBoundParameters)
    }
}
class BaiduCredential
{
    [string] $baiduEndPoint
    [string] $baiduApiKey
    [string] $baiduSecretKey
}
function New-AzureNativeTypeNotificationhubsBaiduCredential
{
    param (
        [parameter(mandatory=$False,HelpMessage='Baidu Endpoint.)')]
        [string]
        $baiduEndPoint,
        [parameter(mandatory=$False,HelpMessage='Baidu Api Key.)')]
        [string]
        $baiduApiKey,
        [parameter(mandatory=$False,HelpMessage='Baidu Secret Key)')]
        [string]
        $baiduSecretKey
    )

    process
    {
        return $([BaiduCredential]$PSBoundParameters)
    }
}
function New-AzureNativeNotificationhubsNotificationHub
{
    [Alias('azure_native_notificationhubs_notificationhub')]
    param (
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='The WnsCredential of the created NotificationHub)')]
        [WnsCredential]
        $wnsCredential,
        [parameter(mandatory=$False,HelpMessage='The sku of the created namespace)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The MpnsCredential of the created NotificationHub)')]
        [MpnsCredential]
        $mpnsCredential,
        [parameter(mandatory=$False,HelpMessage='The GcmCredential of the created NotificationHub)')]
        [GcmCredential]
        $gcmCredential,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The ApnsCredential of the created NotificationHub)')]
        [ApnsCredential]
        $apnsCredential,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The notification hub name.)')]
        [string]
        $notificationHubName,
        [parameter(mandatory=$False,HelpMessage='The NotificationHub name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The AuthorizationRules of the created NotificationHub)')]
        $authorizationRules,
        [parameter(mandatory=$False,HelpMessage='The AdmCredential of the created NotificationHub)')]
        [AdmCredential]
        $admCredential,
        [parameter(mandatory=$False,HelpMessage='The RegistrationTtl of the created NotificationHub)')]
        [string]
        $registrationTtl,
        [parameter(mandatory=$False,HelpMessage='The BaiduCredential of the created NotificationHub)')]
        [BaiduCredential]
        $baiduCredential,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["namespaceName"] = $namespaceName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNotificationhubsNamespace
{
    [Alias('azure_native_notificationhubs_namespace')]
    param (
        [parameter(mandatory=$False,HelpMessage='Provisioning state of the Namespace.)')]
        [string]
        $provisioningState,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The time the namespace was created.)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='Resource tags)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='Resource location)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The sku of the created namespace)')]
        [Sku]
        $sku,
        [parameter(mandatory=$False,HelpMessage='The namespace type.)')]
        $namespaceType,
        [parameter(mandatory=$False,HelpMessage='Data center for the namespace)')]
        [string]
        $dataCenter,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='Endpoint you can use to perform NotificationHub operations.)')]
        [string]
        $serviceBusEndpoint,
        [parameter(mandatory=$False,HelpMessage='Specifies the targeted region in which the namespace should be created. It can be any of the following values: Australia East, Australia Southeast, Central US, East US, East US 2, West US, North Central US, South Central US, East Asia, Southeast Asia, Brazil South, Japan East, Japan West, North Europe, West Europe)')]
        [string]
        $region,
        [parameter(mandatory=$False,HelpMessage='Whether or not the namespace is currently enabled.)')]
        [bool]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='Status of the namespace. It can be any of these values:1 = Created/Active2 = Creating3 = Suspended4 = Deleting)')]
        [string]
        $status,
        [parameter(mandatory=$False,HelpMessage='The time the namespace was updated.)')]
        [string]
        $updatedAt,
        [parameter(mandatory=$False,HelpMessage='Whether or not the namespace is set as Critical.)')]
        [bool]
        $critical,
        [parameter(mandatory=$False,HelpMessage='The Id of the Azure subscription associated with the namespace.)')]
        [string]
        $subscriptionId,
        [parameter(mandatory=$False,HelpMessage='ScaleUnit where the namespace gets created)')]
        [string]
        $scaleUnit,
        [parameter(mandatory=$False,HelpMessage='The name of the namespace.)')]
        [string]
        $name,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeNotificationhubsNamespaceAuthorizationRule
{
    [Alias('azure_native_notificationhubs_namespaceauthorizationrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Properties of the Namespace AuthorizationRules.)')]
        [SharedAccessAuthorizationRuleProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The namespace name.)')]
        [string]
        $namespaceName,
        [parameter(mandatory=$False,HelpMessage='Authorization Rule Name.)')]
        [string]
        $authorizationRuleName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid,
        [parameter(HelpMessage='Specifies a list of named output properties that should be treated as secrets, which means they will be encrypted. It augments the list of values that Pulumi detects, based on secret inputs to the resource.')]
        [string[]]
        $PulumiSecretOutputs,
        [parameter(HelpMessage='The aliases parameter provides a list of aliases for a resource or component resource. If youre changing the name, type, or parent path of a resource or component resource, you can add the old name to the list of aliases for a resource to ensure that existing resources will be migrated to the new name instead of being deleted and replaced with the new named resource.')]
        [string[]]
        $PulumiAliases,
        [parameter(HelpMessage='The customTimeouts parameter provides a set of custom timeouts for create, update, and delete operations on a resource. These timeouts are specified using a duration string such as 5m (5 minutes), 40s (40 seconds), or 1d (1 day). Supported duration units are ns, us (or µs), ms, s, m, and h (nanoseconds, microseconds, milliseconds, seconds, minutes, and hours, respectively).')]
        [pulumicustomtimeouts]
        $PulumiCustomTimeouts,
        [parameter(HelpMessage='Setting the PulumiDeleteBeforeReplace parameter to true means that Pulumi will delete the existing resource before creating its replacement. Be aware that this behavior has a cascading impact on dependencies so more resources may be replaced, which can lead to downtime. However, this option may be necessary for some resources that manage scarce resources behind the scenes, and/or resources that cannot exist side-by-side.')]
        [bool]
        $PulumiDeleteBeforeReplace,
        [parameter(HelpMessage='Creates a list of explicit dependencies between resources.The DependsOn parameter ensures that resource creation, update, and deletion operations are done in the correct order.')]
        [object[]]
        $PulumiDependsOn,
        [parameter(HelpMessage='Specifies a list of properties that Pulumi will ignore when it updates existing resources. Any properties specified in this list that are also specified in the resources arguments will only be used when creating the resource.')]
        [string[]]
        $PulumiIgnoreChanges,
        [parameter(HelpMessage='Imports an existing cloud resource so that Pulumi can manage it. To import a resource, first specify the PulumiImport parameter with the resources ID')]
        [string]
        $PulumiImport = [NullString]::Value,
        [parameter(HelpMessage='Specifies a parent for a resource. It is used to associate children with the parents that encapsulate or are responsible for them.')]
        [object]
        $PulumiParent = [NullString]::Value,
        [parameter(HelpMessage='Marks a resource as protected. A protected resource cannot be deleted directly, and it will be an error to do a Pulumi deployment which tries to delete a protected resource for any reason.')]
        [bool]
        $PulumiProtect,
        [parameter(HelpMessage='Sets a provider for the resource. The default is to inherit this value from the parent resource, and to use the ambient provider specified by Pulumi configuration for resources without a parent.')]
        [object]
        $PulumiProvider = [NullString]::Value,
        [parameter(HelpMessage='Sets a list of providers for the resource and its children. This list is combined with resource parents providers lists. If no value is provided, the providers list is identical to the parent. When determining which provider to use for a resource, the providers list is used if provider is not supplied.')]
        [object[]]
        $PulumiProviders,
        [parameter(HelpMessage='Used to indicate that changes to certain properties on a resource should force a replacement of the resource instead of an in-place update. Typically users rely on the resource provider to make this decision based on whether the input property is one that the provider knows how to update in place, or if not, requires a replacement to modify. However, there are cases where users want to replace a resource on a change to an input property even if the resource provider itself doesnt believe it has to replace the resource.')]
        [string[]]
        $PulumiReplaceOnChanges,
        [parameter(HelpMessage='Marks a resource to be retained. If this option is set then Pulumi will not call through to the resource providers Delete method when deleting or replacing the resource during pulumi up or pulumi destroy. As a result, the resource will not be deleted from the backing cloud provider, but will be removed from the Pulumi state.')]
        [bool]
        $PulumiRetainOnDelete,
        [parameter(HelpMessage='Specifies a provider version to use when operating on a resource. This version overrides the version information inferred from the current package. This option should be used rarely.')]
        [string]
        $PulumiProviderVersion = [NullString]::Value
    )

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

        $resource.options.additionalSecretOutputs = $PulumiSecretOutputs
        $resource.options.aliases = $PulumiAliases
        $resource.options.customTimeouts = $PulumiCustomTimeouts
        $resource.options.deleteBeforeReplace = $PulumiDeleteBeforeReplace
        $resource.options.ignoreChanges = $PulumiIgnoreChanges
        $resource.options.import = if([string]::IsNullOrEmpty($PulumiImport)) { [NullString]::Value } else { $PulumiImport }
        $resource.options.protect = $PulumiProtect
        $resource.options.replaceOnChanges = $PulumiReplaceOnChanges
        $resource.options.retainOnDelete = $PulumiRetainOnDelete
        $resource.options.version = if([string]::IsNullOrEmpty($PulumiProviderVersion)) { [NullString]::Value } else { $PulumiProviderVersion }

        foreach($Dependency in $DependsOn)
        {
            if($Dependency -is [pulumiresource])
            {
                $resource.options.dependson += $Dependency.Reference()
            } else
            {
                $resource.options.dependson += $Dependency
            }
        }
        if($PulumiParent -is [pulumiresource])
        {
            $resource.options.parent = $PulumiParent.Reference()
        } else
        {
            $resource.options.parent = $PulumiParent
        }
        foreach($provider in $PulumiProviders)
        {
            if($provider -is [pulumiprovider])
            {
                $resource.options.providers += $provider.Reference()
            } else
            {
                $resource.options.providers += $provider
            }
        }
        if($PulumiProvider -is [pulumiprovider])
        {
            $resource.options.provider = $PulumiProvider.Reference()
        } else
        {
            $resource.options.provider = $PulumiProvider
        }
        $resource.properties["namespaceName"] = $namespaceName
        $resource.properties["properties"] = $properties
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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