pspulumiyaml.azurenative.mobilenetwork.psm1

using module @{ ModuleName = "PSPulumiYaml"; ModuleVersion = "0.0.3"; GUID = "909344e0-a08f-45f6-8177-80e36bb2ba58" }
function Invoke-AzureNativeFunctionMobilenetworkGetSlice
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network slice.)')]
        [string]
        $sliceName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName
    )

    process
    {
        $arguments = @{}
        $arguments["mobileNetworkName"] = $mobileNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["sliceName"] = $sliceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getSlice -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetPacketCoreControlPlane
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getPacketCoreControlPlane -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetMobileNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getMobileNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetService
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the service. You must not use any of the following reserved strings - `default`, `requested` or `service`)')]
        [string]
        $serviceName
    )

    process
    {
        $arguments = @{}
        $arguments["mobileNetworkName"] = $mobileNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["serviceName"] = $serviceName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getService -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetSite
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network site.)')]
        [string]
        $siteName
    )

    process
    {
        $arguments = @{}
        $arguments["mobileNetworkName"] = $mobileNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["siteName"] = $siteName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getSite -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetSim
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the SIM.)')]
        [string]
        $simName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getSim -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetSimPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the SIM policy.)')]
        [string]
        $simPolicyName,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName
    )

    process
    {
        $arguments = @{}
        $arguments["mobileNetworkName"] = $mobileNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName
        $arguments["simPolicyName"] = $simPolicyName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getSimPolicy -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetAttachedDataNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core data plane.)')]
        [string]
        $packetCoreDataPlaneName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName,
        [parameter(mandatory=$False,HelpMessage='The name of the attached data network.)')]
        [string]
        $attachedDataNetworkName
    )

    process
    {
        $arguments = @{}
        $arguments["attachedDataNetworkName"] = $attachedDataNetworkName
        $arguments["packetCoreControlPlaneName"] = $packetCoreControlPlaneName
        $arguments["packetCoreDataPlaneName"] = $packetCoreDataPlaneName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getAttachedDataNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetDataNetwork
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network dataNetwork.)')]
        [string]
        $dataNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName
    )

    process
    {
        $arguments = @{}
        $arguments["dataNetworkName"] = $dataNetworkName
        $arguments["mobileNetworkName"] = $mobileNetworkName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getDataNetwork -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkListMobileNetworkSimIds
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:listMobileNetworkSimIds -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionMobilenetworkGetPacketCoreDataPlane
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core data plane.)')]
        [string]
        $packetCoreDataPlaneName,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName
    )

    process
    {
        $arguments = @{}
        $arguments["packetCoreControlPlaneName"] = $packetCoreControlPlaneName
        $arguments["packetCoreDataPlaneName"] = $packetCoreDataPlaneName
        $arguments["resourceGroupName"] = $resourceGroupName

        $functionObject = Invoke-PulumiFunction -Name azure-native:mobilenetwork:getPacketCoreDataPlane -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class SimPolicyResourceId
{
    [string] $id
}
function New-AzureNativeTypeMobilenetworkSimPolicyResourceId
{
    param (
        [parameter(mandatory=$False,HelpMessage='SIM Policy resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([SimPolicyResourceId]$PSBoundParameters)
    }
}
class MobileNetworkResourceId
{
    [string] $id
}
function New-AzureNativeTypeMobilenetworkMobileNetworkResourceId
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mobile Network resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([MobileNetworkResourceId]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkSim
{
    [Alias('azure_native_mobilenetwork_sim')]
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The International Mobile Subscriber Identity (IMSI) for the sim.)')]
        [string]
        $internationalMobileSubscriberIdentity,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='A list of static IP addresses assigned to this sim. Each address is assigned at a defined network scope, made up of {attached data network, slice}.)')]
        $staticIpConfiguration,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='The ki value for the sim.)')]
        [string]
        $authenticationKey,
        [parameter(mandatory=$False,HelpMessage='The Opc value for the sim.)')]
        [string]
        $operatorKeyCode,
        [parameter(mandatory=$False,HelpMessage='An optional free-form text field that can be used to record the device type this sim is associated with, for example ''Video camera''. The Azure portal allows Sims to be grouped and filtered based on this value.)')]
        [string]
        $deviceType,
        [parameter(mandatory=$False,HelpMessage='The simPolicy used by this sim.)')]
        [SimPolicyResourceId]
        $simPolicy,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The Integrated Circuit Card ID (ICC Id) for the sim.)')]
        [string]
        $integratedCircuitCardIdentifier,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The name of the SIM.)')]
        [string]
        $simName,
        [parameter(mandatory=$False,HelpMessage='Mobile network that this sim belongs to)')]
        [MobileNetworkResourceId]
        $mobileNetwork,
        [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:mobilenetwork:Sim")

        $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["internationalMobileSubscriberIdentity"] = $internationalMobileSubscriberIdentity
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Ambr
{
    [string] $downlink
    [string] $uplink
}
function New-AzureNativeTypeMobilenetworkAmbr
{
    param (
        [parameter(mandatory=$False,HelpMessage='Downlink bit rate.)')]
        [string]
        $downlink,
        [parameter(mandatory=$False,HelpMessage='Uplink bit rate.)')]
        [string]
        $uplink
    )

    process
    {
        return $([Ambr]$PSBoundParameters)
    }
}
class QosPolicy
{
    [ArgumentCompletions('NotPreemptable', 'Preemptable')]
    [string] $preemptionVulnerability
    [ArgumentCompletions('NotPreempt', 'MayPreempt')]
    [string] $preemptionCapability
    [int] $fiveQi
    [int] $allocationAndRetentionPriorityLevel
    [Ambr] $maximumBitRate
}
function New-AzureNativeTypeMobilenetworkQosPolicy
{
    param (
        [parameter(mandatory=$False,HelpMessage='QoS Flow preemption vulnerability. The Preemption Vulnerability of a QoS Flow controls whether it can be preempted by QoS Flow with a higher priority level. See 3GPP TS23.501 section 5.7.2.2 for a full description of the ARP parameters.)')]
        [string]
        [ArgumentCompletions('NotPreemptable', 'Preemptable')]
        $preemptionVulnerability,
        [parameter(mandatory=$False,HelpMessage='QoS Flow preemption capability. The Preemption Capability of a QoS Flow controls whether it can preempt another QoS Flow with a lower priority level. See 3GPP TS23.501 section 5.7.2.2 for a full description of the ARP parameters.)')]
        [string]
        [ArgumentCompletions('NotPreempt', 'MayPreempt')]
        $preemptionCapability,
        [parameter(mandatory=$False,HelpMessage='QoS Flow 5G QoS Indicator value. The 5QI identifies a specific QoS forwarding treatment to be provided to a flow. This must not be a standardized 5QI value selecting a GBR (Guaranteed Bit Rate) QoS. The illegal GBR 5QI values are: 1, 2, 3, 4, 65, 66, 67, 71, 72, 73, 74, 75, 76, 82, 83, 84, and 85. See 3GPP TS23.501 section 5.7.2.1 for a full description of the 5Qi parameter, and table 5.7.4-1 for the definition of which are the GBR 5QI values.)')]
        [int]
        $fiveQi,
        [parameter(mandatory=$False,HelpMessage='QoS Flow allocation and retention priority (ARP) level. Flows with higher priority preempt flows with lower priority, if the settings of `preemptionCapability` and `preemptionVulnerability` allow it. 1 is the highest level of priority. If this field is not specified then `5qi` is used to derive the ARP value. See 3GPP TS23.501 section 5.7.2.2 for a full description of the ARP parameters.)')]
        [int]
        $allocationAndRetentionPriorityLevel,
        [parameter(mandatory=$False,HelpMessage='The Maximum Bit Rate (MBR) for all service data flows that use this PCC Rule or Service.)')]
        [Ambr]
        $maximumBitRate
    )

    process
    {
        return $([QosPolicy]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkService
{
    [Alias('azure_native_mobilenetwork_service')]
    param (
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the service. You must not use any of the following reserved strings - `default`, `requested` or `service`)')]
        [string]
        $serviceName,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The QoS policy to use for packets matching this service. This can be overridden for particular flows using the ruleQosPolicy field in a PccRuleConfiguration. If this field is null then the UE''s simPolicy will define the QoS settings.)')]
        [QosPolicy]
        $serviceQosPolicy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='A precedence value that is used to decide between services when identifying the QoS values to use for a particular Sim. A lower value means a higher priority. This value should be unique among all services configured in the Mobile Network.)')]
        [int]
        $servicePrecedence,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The set of PCC Rules that make up this service.)')]
        $pccRules,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [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:mobilenetwork:Service")

        $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["mobileNetworkName"] = $mobileNetworkName
        $resource.properties["pccRules"] = $pccRules
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["servicePrecedence"] = $servicePrecedence

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class Snssai
{
    [string] $sd
    [int] $sst
}
function New-AzureNativeTypeMobilenetworkSnssai
{
    param (
        [parameter(mandatory=$False,HelpMessage='Slice Differentiator (SD).)')]
        [string]
        $sd,
        [parameter(mandatory=$False,HelpMessage='Slice/Service Type (SST).)')]
        [int]
        $sst
    )

    process
    {
        return $([Snssai]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkSlice
{
    [Alias('azure_native_mobilenetwork_slice')]
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The S-NSSAI (single network slice selection assistance information). Unique at the scope of a MobileNetwork.)')]
        [Snssai]
        $snssai,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network slice.)')]
        [string]
        $sliceName,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='An optional description for this network slice.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [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:mobilenetwork:Slice")

        $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["mobileNetworkName"] = $mobileNetworkName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["snssai"] = $snssai

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PortRange
{
    [int] $maxPort
    [int] $minPort
}
function New-AzureNativeTypeMobilenetworkPortRange
{
    param (
        [parameter(mandatory=$False,HelpMessage='The maximum port number)')]
        [int]
        $maxPort,
        [parameter(mandatory=$False,HelpMessage='The minimum port number)')]
        [int]
        $minPort
    )

    process
    {
        return $([PortRange]$PSBoundParameters)
    }
}
class PinholeTimeouts
{
    [int] $tcp
    [int] $udp
    [int] $icmp
}
function New-AzureNativeTypeMobilenetworkPinholeTimeouts
{
    param (
        [parameter(mandatory=$False,HelpMessage='Pinhole timeout for TCP pinholes in seconds. Default for TCP is 2 hours 4 minutes per RFC 5382 section 5.)')]
        [int]
        $tcp,
        [parameter(mandatory=$False,HelpMessage='Pinhole timeout for UDP pinholes in seconds. Default for UDP is 5 minutes per RFC 4787 section 4.3.)')]
        [int]
        $udp,
        [parameter(mandatory=$False,HelpMessage='Pinhole timeout for ICMP pinholes in seconds. Default for ICMP Echo is 60 seconds per RFC 5508 section 3.2.)')]
        [int]
        $icmp
    )

    process
    {
        return $([PinholeTimeouts]$PSBoundParameters)
    }
}
class PortReuseHoldTimes
{
    [int] $udp
    [int] $tcp
}
function New-AzureNativeTypeMobilenetworkPortReuseHoldTimes
{
    param (
        [parameter(mandatory=$False,HelpMessage='Minimum time in seconds that will pass before a UDP port that was used by a closed pinhole can be reused. Default for UDP is 1 minute.)')]
        [int]
        $udp,
        [parameter(mandatory=$False,HelpMessage='Minimum time in seconds that will pass before a TCP port that was used by a closed pinhole can be reused. Default for TCP is 2 minutes.)')]
        [int]
        $tcp
    )

    process
    {
        return $([PortReuseHoldTimes]$PSBoundParameters)
    }
}
class NaptConfiguration
{
    [PortRange] $portRange
    [PinholeTimeouts] $pinholeTimeouts
    [int] $pinholeLimits
    [ArgumentCompletions('Enabled', 'Disabled')]
    [string] $enabled
    [PortReuseHoldTimes] $portReuseHoldTime
}
function New-AzureNativeTypeMobilenetworkNaptConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Range of port numbers to use as translated ports on each translated address.
If not specified and NAPT is enabled, this range defaults to 1,024 - 65,535. (Ports under 1,024 should not be used because these are special purpose ports reserved by IANA.))'
)]
        [PortRange]
        $portRange,
        [parameter(mandatory=$False,HelpMessage='Expiry times of inactive NAPT pinholes, in seconds. All timers must be at least 1 second.)')]
        [PinholeTimeouts]
        $pinholeTimeouts,
        [parameter(mandatory=$False,HelpMessage='Maximum number of UDP and TCP pinholes that can be open simultaneously on the core interface.)')]
        [int]
        $pinholeLimits,
        [parameter(mandatory=$False,HelpMessage='Whether NAPT is enabled for connections to this attachedDataNetwork.)')]
        [string]
        [ArgumentCompletions('Enabled', 'Disabled')]
        $enabled,
        [parameter(mandatory=$False,HelpMessage='The minimum time (in seconds) that will pass before a port that was used by a closed pinhole can be recycled for use by another pinhole. All hold times must be minimum 1 second.)')]
        [PortReuseHoldTimes]
        $portReuseHoldTime
    )

    process
    {
        return $([NaptConfiguration]$PSBoundParameters)
    }
}
class InterfaceProperties
{
    [string] $name
}
function New-AzureNativeTypeMobilenetworkInterfaceProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The logical name for this interface. This should match one of the interfaces configured on your Azure Stack Edge machine.)')]
        [string]
        $name
    )

    process
    {
        return $([InterfaceProperties]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkAttachedDataNetwork
{
    [Alias('azure_native_mobilenetwork_attacheddatanetwork')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The Network Address and Port Translation configuration.
If not specified the attached data network uses a default NAPT configuration with NAPT enabled.)'
)]
        [NaptConfiguration]
        $naptConfiguration,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core data plane.)')]
        [string]
        $packetCoreDataPlaneName,
        [parameter(mandatory=$False,HelpMessage='The user plane interface on the data network. In 5G networks this is called as N6 interface whereas in 4G networks this is called as SGi interface.)')]
        [InterfaceProperties]
        $userPlaneDataInterface,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The user equipment address pool prefixes for the attached data network that are dynamically assigned by the core to UEs when they set up a PDU session.
At least one of userEquipmentAddressPoolPrefix and userEquipmentStaticAddressPoolPrefix must be defined. If both are defined then they must be the same size.)'
)]
        [string[]]
        $userEquipmentAddressPoolPrefix,
        [parameter(mandatory=$False,HelpMessage='The name of the attached data network.)')]
        [string]
        $attachedDataNetworkName,
        [parameter(mandatory=$False,HelpMessage='The user equipment address pool prefixes for the attached data network that are statically assigned by the core to UEs when they set up a PDU session.
The mapping of static IP to sim is configured in staticIpConfiguration on the sim resource.
At least one of userEquipmentAddressPoolPrefix and userEquipmentStaticAddressPoolPrefix must be defined. If both are defined then they must be the same size.)'
)]
        [string[]]
        $userEquipmentStaticAddressPoolPrefix,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [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:mobilenetwork:AttachedDataNetwork")

        $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["packetCoreControlPlaneName"] = $packetCoreControlPlaneName
        $resource.properties["packetCoreDataPlaneName"] = $packetCoreDataPlaneName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["userPlaneDataInterface"] = $userPlaneDataInterface

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class PlmnId
{
    [string] $mnc
    [string] $mcc
}
function New-AzureNativeTypeMobilenetworkPlmnId
{
    param (
        [parameter(mandatory=$False,HelpMessage='Mobile Network Code (MNC).)')]
        [string]
        $mnc,
        [parameter(mandatory=$False,HelpMessage='Mobile Country Code (MCC).)')]
        [string]
        $mcc
    )

    process
    {
        return $([PlmnId]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkMobileNetwork
{
    [Alias('azure_native_mobilenetwork_mobilenetwork')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The unique public land mobile network identifier for the network. This is made up of the Mobile Country Code and Mobile Network Code, as defined in https://www.itu.int/rec/T-REC-E.212. The values 001-01 and 001-001 can be used for testing and the values 999-99 and 999-999 can be used on internal private networks.)')]
        [PlmnId]
        $publicLandMobileNetworkIdentifier,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [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:mobilenetwork:MobileNetwork")

        $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["publicLandMobileNetworkIdentifier"] = $publicLandMobileNetworkIdentifier
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CustomLocationResourceId
{
    [string] $id
}
function New-AzureNativeTypeMobilenetworkCustomLocationResourceId
{
    param (
        [parameter(mandatory=$False,HelpMessage='Azure ARC custom location resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([CustomLocationResourceId]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkPacketCoreControlPlane
{
    [Alias('azure_native_mobilenetwork_packetcorecontrolplane')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='Azure ARC custom location where the packet core is deployed.)')]
        [CustomLocationResourceId]
        $customLocation,
        [parameter(mandatory=$False,HelpMessage='The control plane interface on the access network. In 5G networks this is called as N2 interface whereas in 4G networks this is called as S1-MME interface.)')]
        [InterfaceProperties]
        $controlPlaneAccessInterface,
        [parameter(mandatory=$False,HelpMessage='The core network technology generation.)')]
        [string]
        [ArgumentCompletions('5GC', 'EPC')]
        $coreNetworkTechnology,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='The version of the packet core software that is deployed.)')]
        [string]
        $version,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='Mobile network that this packet core control plane belongs to)')]
        [MobileNetworkResourceId]
        $mobileNetwork,
        [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:mobilenetwork:PacketCoreControlPlane")

        $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["controlPlaneAccessInterface"] = $controlPlaneAccessInterface
        $resource.properties["mobileNetwork"] = $mobileNetwork
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMobilenetworkDataNetwork
{
    [Alias('azure_native_mobilenetwork_datanetwork')]
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network dataNetwork.)')]
        [string]
        $dataNetworkName,
        [parameter(mandatory=$False,HelpMessage='An optional description for this data network.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [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:mobilenetwork:DataNetwork")

        $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["mobileNetworkName"] = $mobileNetworkName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMobilenetworkSite
{
    [Alias('azure_native_mobilenetwork_site')]
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network site.)')]
        [string]
        $siteName,
        [parameter(mandatory=$False,HelpMessage='An array of ids of the network functions deployed on the site, maintained by the user.)')]
        $networkFunctions,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [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:mobilenetwork:Site")

        $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["mobileNetworkName"] = $mobileNetworkName
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeMobilenetworkPacketCoreDataPlane
{
    [Alias('azure_native_mobilenetwork_packetcoredataplane')]
    param (
        [parameter(mandatory=$False,HelpMessage='The user plane interface on the access network. In 5G networks this is called as N3 interface whereas in 4G networks this is called the S1-U interface.)')]
        [InterfaceProperties]
        $userPlaneAccessInterface,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core control plane.)')]
        [string]
        $packetCoreControlPlaneName,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [parameter(mandatory=$False,HelpMessage='The name of the packet core data plane.)')]
        [string]
        $packetCoreDataPlaneName,
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [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:mobilenetwork:PacketCoreDataPlane")

        $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["packetCoreControlPlaneName"] = $packetCoreControlPlaneName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["userPlaneAccessInterface"] = $userPlaneAccessInterface

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class SliceResourceId
{
    [string] $id
}
function New-AzureNativeTypeMobilenetworkSliceResourceId
{
    param (
        [parameter(mandatory=$False,HelpMessage='Slice resource ID.)')]
        [string]
        $id
    )

    process
    {
        return $([SliceResourceId]$PSBoundParameters)
    }
}
function New-AzureNativeMobilenetworkSimPolicy
{
    [Alias('azure_native_mobilenetwork_simpolicy')]
    param (
        [parameter(mandatory=$False,HelpMessage='The geo-location where the resource lives)')]
        [string]
        $location,
        [parameter(mandatory=$False,HelpMessage='The name of the mobile network.)')]
        [string]
        $mobileNetworkName,
        [parameter(mandatory=$False,HelpMessage='The name of the SIM policy.)')]
        [string]
        $simPolicyName,
        [parameter(mandatory=$False,HelpMessage='The identity that created the resource.)')]
        [string]
        $createdBy,
        [parameter(mandatory=$False,HelpMessage='Resource tags.)')]
        [hashtable]
        $tags,
        [parameter(mandatory=$False,HelpMessage='The type of identity that last modified the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $lastModifiedByType,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource last modification (UTC))')]
        [string]
        $lastModifiedAt,
        [parameter(mandatory=$False,HelpMessage='The timestamp of resource creation (UTC).)')]
        [string]
        $createdAt,
        [parameter(mandatory=$False,HelpMessage='Interval for the UE periodic registration update procedure, in seconds.)')]
        [int]
        $registrationTimer,
        [parameter(mandatory=$False,HelpMessage='RAT/Frequency Selection Priority Index, defined in 3GPP TS 36.413. This is an optional setting and by default is unspecified.)')]
        [int]
        $rfspIndex,
        [parameter(mandatory=$False,HelpMessage='The name of the resource group. The name is case insensitive.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Aggregate maximum bit rate across all non-GBR QoS flows of all PDU sessions of a given UE. See 3GPP TS23.501 section 5.7.2.6 for a full description of the UE-AMBR.)')]
        [Ambr]
        $ueAmbr,
        [parameter(mandatory=$False,HelpMessage='The allowed slices and the settings to use for them. The list must not contain duplicate items and must contain at least one item.)')]
        $sliceConfigurations,
        [parameter(mandatory=$False,HelpMessage='The default slice to use if the UE does not explicitly specify it. This slice must exist in the `sliceConfigurations` map.)')]
        [SliceResourceId]
        $defaultSlice,
        [parameter(mandatory=$False,HelpMessage='The identity that last modified the resource.)')]
        [string]
        $lastModifiedBy,
        [parameter(mandatory=$False,HelpMessage='The type of identity that created the resource.)')]
        [string]
        [ArgumentCompletions('User', 'Application', 'ManagedIdentity', 'Key')]
        $createdByType,
        [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:mobilenetwork:SimPolicy")

        $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["defaultSlice"] = $defaultSlice
        $resource.properties["mobileNetworkName"] = $mobileNetworkName
        $resource.properties["resourceGroupName"] = $resourceGroupName
        $resource.properties["sliceConfigurations"] = $sliceConfigurations
        $resource.properties["ueAmbr"] = $ueAmbr

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

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

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

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

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

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

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

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

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

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

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

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