Public/ResourceProviders/Microsoft.ServiceBus/New-ArmServiceBusTopicSubscriptionResource.ps1

function New-ArmServiceBusTopicSubscriptionResource {
    [CmdletBinding(SupportsShouldProcess = $True)]
    [OutputType("ServiceBusTopicSubscription")]
    Param(
        [Parameter(Mandatory)]
        [ValidatePattern('^(\[.*\]|[a-zA-Z0-9]*)$')]
        [string]
        $Name,
        [string]
        $ApiVersion = '2017-04-01',
        [string]
        $Location = $script:Location,
        [Parameter(Mandatory, ValueFromPipeline)]
        [String]
        $TopicName,
        [string]
        $LockDuration ="PT30S",
        [Switch]
        $EnableSession,
        [string]
        $MessageTimeToLive = "P14D",
        [Switch]
        $DisableDeadLetteringOnMessageExpiration,
        [Switch]
        $DisableBatchedOperations,
        [int]
        $MaxRetryCount = 10,
        [switch]
        $DeadLetteringOnFilterEvaluationExceptions
    )

    If ($PSCmdlet.ShouldProcess("Creates a new Arm ServiceBus topic subscription object")) {
        $ServiceBusTopicSubscription = [PSCustomObject][ordered]@{
            _ResourceId = New-ArmFunctionResourceId -ResourceType Microsoft.ServiceBus/namespaces/topics/subscriptions -ResourceName1 $TopicName -ResourceName2 $Name
            PSTypeName  = "ServiceBusTopicSubscription"
            type        = 'Microsoft.ServiceBus/namespaces/topics/subscriptions'
            name        = "[concat($TopicName, '/$Name')]"
            apiVersion  = $ApiVersion
            location    = $Location
            properties  = @{
                lockDuration                        = $LockDuration
                requiresSession                     = $EnableSession.ToBool()
                defaultMessageTimeToLive            = $MessageTimeToLive
                deadLetteringOnMessageExpiration    = -not $DisableDeadLetteringOnMessageExpiration.ToBool()
                deadLetteringOnFilterEvaluationExceptions  = -not $DeadLetteringOnFilterEvaluationExceptions.ToBool()
                maxDeliveryCount                    = $MaxRetryCount
                status                              = "Active"
                enableBatchedOperations             = -not $DisableBatchedOperations.ToBool()
                autoDeleteOnIdle                    = "P10675199DT2H48M5.4775807S"
            }
            resources   = @()
            dependsOn   = @()
        }

        $ServiceBusTopicSubscription.PSTypeNames.Add("ArmResource")
        return $ServiceBusTopicSubscription
    }
}