pspulumiyaml.azurenative.costmanagement.psm1

using module pspulumiyaml
function Invoke-AzureNativeFunctionCostmanagementGetReportByDepartment
{
    param (
        [parameter(mandatory=$False,HelpMessage='Department ID)')]
        [string]
        $departmentId,
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName
    )

    process
    {
        $arguments = @{}
        $arguments["departmentId"] = $departmentId
        $arguments["reportName"] = $reportName

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getReportByDepartment -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetCloudConnector
{
    param (
        [parameter(mandatory=$False,HelpMessage='May be used to expand the collectionInfo property. By default, collectionInfo is not included.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Connector Name.)')]
        [string]
        $connectorName
    )

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

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getCloudConnector -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetReportByResourceGroupName
{
    param (
        [parameter(mandatory=$False,HelpMessage='Azure Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getReportByResourceGroupName -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetViewByScope
{
    param (
        [parameter(mandatory=$False,HelpMessage='View name)')]
        [string]
        $viewName,
        [parameter(mandatory=$False,HelpMessage='The scope associated with view operations. This includes ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''providers/Microsoft.Management/managementGroups/{managementGroupId}'' for Management Group scope, ''providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for External Billing Account scope and ''providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for External Subscription scope.)')]
        [string]
        $scope
    )

    process
    {
        $arguments = @{}
        $arguments["scope"] = $scope
        $arguments["viewName"] = $viewName

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getViewByScope -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetReportByBillingAccount
{
    param (
        [parameter(mandatory=$False,HelpMessage='BillingAccount ID)')]
        [string]
        $billingAccountId,
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName
    )

    process
    {
        $arguments = @{}
        $arguments["billingAccountId"] = $billingAccountId
        $arguments["reportName"] = $reportName

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getReportByBillingAccount -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetScheduledActionByScope
{
    param (
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The scope associated with scheduled action operations. This includes ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for External Billing Account scope and ''providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for External Subscription scope.)')]
        [string]
        $scope
    )

    process
    {
        $arguments = @{}
        $arguments["name"] = $name
        $arguments["scope"] = $scope

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getScheduledActionByScope -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetReport
{
    param (
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getReport -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetScheduledAction
{
    param (
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $name
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getScheduledAction -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetCostAllocationRule
{
    param (
        [parameter(mandatory=$False,HelpMessage='BillingAccount ID)')]
        [string]
        $billingAccountId,
        [parameter(mandatory=$False,HelpMessage='Cost allocation rule name. The name cannot include spaces or any non alphanumeric characters other than ''_'' and ''-''. The max length is 260 characters.)')]
        [string]
        $ruleName
    )

    process
    {
        $arguments = @{}
        $arguments["billingAccountId"] = $billingAccountId
        $arguments["ruleName"] = $ruleName

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getCostAllocationRule -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetView
{
    param (
        [parameter(mandatory=$False,HelpMessage='View name)')]
        [string]
        $viewName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getView -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetExport
{
    param (
        [parameter(mandatory=$False,HelpMessage='May be used to expand the properties within an export. Currently only ''runHistory'' is supported and will return information for the last 10 executions of the export.)')]
        [string]
        $expand,
        [parameter(mandatory=$False,HelpMessage='Export Name.)')]
        [string]
        $exportName,
        [parameter(mandatory=$False,HelpMessage='The scope associated with export operations. This includes ''/subscriptions/{subscriptionId}/'' for subscription scope, ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope and ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''/providers/Microsoft.Management/managementGroups/{managementGroupId} for Management Group scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for billingProfile scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}'' for invoiceSection scope, and ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}'' specific for partners.)')]
        [string]
        $scope
    )

    process
    {
        $arguments = @{}
        $arguments["exportName"] = $exportName
        $arguments["scope"] = $scope

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getExport -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
function Invoke-AzureNativeFunctionCostmanagementGetSetting
{
    param (
        [parameter(mandatory=$False,HelpMessage='Name of the setting. Allowed values: myscope)')]
        [string]
        $settingName
    )

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

        $functionObject = Invoke-PulumiFunction -Name azure-native:costmanagement:getSetting -variableName $([guid]::NewGuid().Guid) -Arguments $arguments
        return $functionObject
    }
}
class FileDestination
{
    [string[]] $fileFormats
}
function New-AzureNativeTypeCostmanagementFileDestination
{
    param (
        [parameter(mandatory=$False,HelpMessage='Destination of the view data. Currently only csv format is supported.)')]
        $fileFormats
    )

    process
    {
        return $([FileDestination]$PSBoundParameters)
    }
}
class ScheduleProperties
{
    [string] $endDate
    [int] $hourOfDay
    [ValidateSet('Daily', 'Weekly', 'Monthly')]
    [string] $frequency
    [ValidateSet('Daily', 'Weekly', 'Monthly')]
    [string] $startDate
    [ValidateSet('Daily', 'Weekly', 'Monthly')]
    [string[]] $weeksOfMonth
    [ValidateSet('Daily', 'Weekly', 'Monthly')]
    [string[]] $daysOfWeek
    [ValidateSet('Daily', 'Weekly', 'Monthly')]
    [int] $dayOfMonth
}
function New-AzureNativeTypeCostmanagementScheduleProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date and time of the scheduled action (UTC).)')]
        [string]
        $endDate,
        [parameter(mandatory=$False,HelpMessage='UTC time at which cost analysis data will be emailed.)')]
        [int]
        $hourOfDay,
        [parameter(mandatory=$False,HelpMessage='Frequency of the schedule.)')]
        [string]
        [ValidateSet('Daily', 'Weekly', 'Monthly')]
        $frequency,
        [parameter(mandatory=$False,HelpMessage='The start date and time of the scheduled action (UTC).)')]
        [string]
        $startDate,
        [parameter(mandatory=$False,HelpMessage='Weeks in which cost analysis data will be emailed. This property is applicable when frequency is Monthly and used in combination with daysOfWeek.)')]
        $weeksOfMonth,
        [parameter(mandatory=$False,HelpMessage='Day names in english on which cost analysis data will be emailed. This property is applicable when frequency is Weekly or Monthly.)')]
        $daysOfWeek,
        [parameter(mandatory=$False,HelpMessage='UTC day on which cost analysis data will be emailed. Must be between 1 and 31. This property is applicable when frequency is Monthly and overrides weeksOfMonth or daysOfWeek.)')]
        [int]
        $dayOfMonth
    )

    process
    {
        return $([ScheduleProperties]$PSBoundParameters)
    }
}
class NotificationProperties
{
    [string] $subject
    [string[]] $to
    [string] $message
}
function New-AzureNativeTypeCostmanagementNotificationProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Subject of the email. Length is limited to 70 characters.)')]
        [string]
        $subject,
        [parameter(mandatory=$False,HelpMessage='Array of email addresses.)')]
        [string[]]
        $to,
        [parameter(mandatory=$False,HelpMessage='Optional message to be added in the email. Length is limited to 250 characters.)')]
        [string]
        $message
    )

    process
    {
        return $([NotificationProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCostmanagementScheduledActionByScope
{
    [Alias('azure_native_costmanagement_scheduledactionbyscope')]
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of the scheduled action.)')]
        [string]
        [ValidateSet('Email')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Destination format of the view data.)')]
        [FileDestination]
        $fileDestination,
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Status of the scheduled action.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $status,
        [parameter(mandatory=$False,HelpMessage='Schedule of the scheduled action.)')]
        [ScheduleProperties]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='Cost Management scope like ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for ExternalBillingAccount scope, and ''/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for ExternalSubscription scope.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Notification properties based on scheduled action kind.)')]
        [NotificationProperties]
        $notification,
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Cost analysis viewId used for scheduled action. For example, ''/providers/Microsoft.CostManagement/views/swaggerExample'')')]
        [string]
        $viewId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["displayName"] = $displayName
        $resource.properties["notification"] = $notification
        $resource.properties["schedule"] = $schedule
        $resource.properties["scope"] = $scope
        $resource.properties["status"] = $status
        $resource.properties["viewId"] = $viewId

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementSetting
{
    [Alias('azure_native_costmanagement_setting')]
    param (
        [parameter(mandatory=$False,HelpMessage='Array of scopes with additional details used by Cost Management in the Azure portal.)')]
        $cache,
        [parameter(mandatory=$False,HelpMessage='Sets the default scope the current user will see when they sign into Azure Cost Management in the Azure portal.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Name of the setting. Allowed values: myscope)')]
        [string]
        $settingName,
        [parameter(mandatory=$False,HelpMessage='Indicates what scope Cost Management in the Azure portal should default to. Allowed values: LastUsed.)')]
        [string]
        $startOn,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ReportTimePeriod
{
    [string] $to
    [string] $from
}
function New-AzureNativeTypeCostmanagementReportTimePeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date to pull data to.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='The start date to pull data from.)')]
        [string]
        $from
    )

    process
    {
        return $([ReportTimePeriod]$PSBoundParameters)
    }
}
class ReportGrouping
{
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [string] $name
    [ValidateSet('Tag', 'Dimension')]
    [string] $type
}
function New-AzureNativeTypeCostmanagementReportGrouping
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the column to group.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Has type of the column to group.)')]
        [string]
        [ValidateSet('Tag', 'Dimension')]
        $type
    )

    process
    {
        return $([ReportGrouping]$PSBoundParameters)
    }
}
class ReportDatasetConfiguration
{
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [string[]] $columns
}
function New-AzureNativeTypeCostmanagementReportDatasetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of column names to be included in the report. Any valid report column name is allowed. If not provided, then report includes all columns.)')]
        [string[]]
        $columns
    )

    process
    {
        return $([ReportDatasetConfiguration]$PSBoundParameters)
    }
}
class ReportComparisonExpression
{
    [ValidateSet('Daily', 'Hourly')]
    [string[]] $values
    [ValidateSet('Daily', 'Hourly')]
    [string] $name
    [ValidateSet('In', 'Contains')]
    [string] $operator
}
function New-AzureNativeTypeCostmanagementReportComparisonExpression
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of values to use for comparison)')]
        [string[]]
        $values,
        [parameter(mandatory=$False,HelpMessage='The name of the column to use in comparison.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The operator to use for comparison.)')]
        [string]
        [ValidateSet('In', 'Contains')]
        $operator
    )

    process
    {
        return $([ReportComparisonExpression]$PSBoundParameters)
    }
}
class ReportFilter
{
    [ValidateSet('Daily', 'Hourly')]
    [ReportFilter[]] $and
    [ValidateSet('Daily', 'Hourly')]
    [ReportComparisonExpression] $tag
    [ValidateSet('Daily', 'Hourly')]
    [ReportFilter] $not
    [ValidateSet('Daily', 'Hourly')]
    [ReportFilter[]] $or
    [ValidateSet('Daily', 'Hourly')]
    [ReportComparisonExpression] $dimension
}
function New-AzureNativeTypeCostmanagementReportFilter
{
    param (
        [parameter(mandatory=$False,HelpMessage='The logical "AND" expression. Must have at least 2 items.)')]
        $and,
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a tag)')]
        [ReportComparisonExpression]
        $tag,
        [parameter(mandatory=$False,HelpMessage='The logical "NOT" expression.)')]
        [ReportFilter]
        $not,
        [parameter(mandatory=$False,HelpMessage='The logical "OR" expression. Must have at least 2 items.)')]
        $or,
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a dimension)')]
        [ReportComparisonExpression]
        $dimension
    )

    process
    {
        return $([ReportFilter]$PSBoundParameters)
    }
}
class ReportDataset
{
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [ReportGrouping[]] $grouping
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [ReportDatasetConfiguration] $configuration
    [ValidateSet('Daily', 'Hourly')]
    [string] $granularity
    [ValidateSet('Daily', 'Hourly')]
    [ReportFilter] $filter
    [ValidateSet('Daily', 'Hourly')]
    [object] $aggregation
}
class ReportAggregation
{
    [string] $name
    [ValidateSet('Avg', 'Max', 'Min', 'Sum')]
    [string] $function
}
function New-AzureNativeTypeCostmanagementReportAggregation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the column to aggregate.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the aggregation function to use.)')]
        [string]
        [ValidateSet('Avg', 'Max', 'Min', 'Sum')]
        $function
    )

    process
    {
        return $([ReportAggregation]$PSBoundParameters)
    }
}
function New-AzureNativeTypeCostmanagementReportDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of group by expression to use in the report. Report can have up to 2 group by clauses.)')]
        $grouping,
        [parameter(mandatory=$False,HelpMessage='Has configuration information for the data in the report. The configuration will be ignored if aggregation and grouping are provided.)')]
        [ReportDatasetConfiguration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='The granularity of rows in the report.)')]
        [string]
        [ValidateSet('Daily', 'Hourly')]
        $granularity,
        [parameter(mandatory=$False,HelpMessage='Has filter expression to use in the report.)')]
        [ReportFilter]
        $filter,
        [parameter(mandatory=$False,HelpMessage='Dictionary of aggregation expression to use in the report. The key of each item in the dictionary is the alias for the aggregated column. Report can have up to 2 aggregation clauses.)')]
        [ReportAggregation]
        $aggregation
    )

    process
    {
        return $([ReportDataset]$PSBoundParameters)
    }
}
class ReportDefinition
{
    [ReportTimePeriod] $timePeriod
    [ValidateSet('Usage')]
    [string] $type
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [string] $timeframe
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [ReportDataset] $dataset
}
function New-AzureNativeTypeCostmanagementReportDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has time period for pulling data for the report.)')]
        [ReportTimePeriod]
        $timePeriod,
        [parameter(mandatory=$False,HelpMessage='The type of the report.)')]
        [string]
        [ValidateSet('Usage')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The time frame for pulling data for the report. If custom, then a specific time period must be provided.)')]
        [string]
        [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
        $timeframe,
        [parameter(mandatory=$False,HelpMessage='Has definition for data in this report.)')]
        [ReportDataset]
        $dataset
    )

    process
    {
        return $([ReportDefinition]$PSBoundParameters)
    }
}
class ReportDeliveryDestination
{
    [string] $rootFolderPath
    [string] $resourceId
    [string] $container
}
function New-AzureNativeTypeCostmanagementReportDeliveryDestination
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the directory where reports will be uploaded.)')]
        [string]
        $rootFolderPath,
        [parameter(mandatory=$False,HelpMessage='The resource id of the storage account where reports will be delivered.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='The name of the container where reports will be uploaded.)')]
        [string]
        $container
    )

    process
    {
        return $([ReportDeliveryDestination]$PSBoundParameters)
    }
}
class ReportDeliveryInfo
{
    [ReportDeliveryDestination] $destination
}
function New-AzureNativeTypeCostmanagementReportDeliveryInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has destination for the report being delivered.)')]
        [ReportDeliveryDestination]
        $destination
    )

    process
    {
        return $([ReportDeliveryInfo]$PSBoundParameters)
    }
}
class ReportRecurrencePeriod
{
    [string] $to
    [string] $from
}
function New-AzureNativeTypeCostmanagementReportRecurrencePeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date of recurrence.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='The start date of recurrence.)')]
        [string]
        $from
    )

    process
    {
        return $([ReportRecurrencePeriod]$PSBoundParameters)
    }
}
class ReportSchedule
{
    [ReportRecurrencePeriod] $recurrencePeriod
    [ValidateSet('Daily', 'Weekly', 'Monthly', 'Annually')]
    [string] $recurrence
    [ValidateSet('Active', 'Inactive')]
    [string] $status
}
function New-AzureNativeTypeCostmanagementReportSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has start and end date of the recurrence. The start date must be in future. If present, the end date must be greater than start date.)')]
        [ReportRecurrencePeriod]
        $recurrencePeriod,
        [parameter(mandatory=$False,HelpMessage='The schedule recurrence.)')]
        [string]
        [ValidateSet('Daily', 'Weekly', 'Monthly', 'Annually')]
        $recurrence,
        [parameter(mandatory=$False,HelpMessage='The status of the schedule. Whether active or not. If inactive, the report''s scheduled execution is paused.)')]
        [string]
        [ValidateSet('Active', 'Inactive')]
        $status
    )

    process
    {
        return $([ReportSchedule]$PSBoundParameters)
    }
}
function New-AzureNativeCostmanagementReportByResourceGroupName
{
    [Alias('azure_native_costmanagement_reportbyresourcegroupname')]
    param (
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName,
        [parameter(mandatory=$False,HelpMessage='Has definition for the report.)')]
        [ReportDefinition]
        $definition,
        [parameter(mandatory=$False,HelpMessage='Has delivery information for the report.)')]
        [ReportDeliveryInfo]
        $deliveryInfo,
        [parameter(mandatory=$False,HelpMessage='The format of the report being delivered.)')]
        [string]
        [ValidateSet('Csv')]
        $format,
        [parameter(mandatory=$False,HelpMessage='Azure Resource Group Name.)')]
        [string]
        $resourceGroupName,
        [parameter(mandatory=$False,HelpMessage='Has schedule information for the report.)')]
        [ReportSchedule]
        $schedule,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["definition"] = $definition
        $resource.properties["deliveryInfo"] = $deliveryInfo
        $resource.properties["resourceGroupName"] = $resourceGroupName

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementReport
{
    [Alias('azure_native_costmanagement_report')]
    param (
        [parameter(mandatory=$False,HelpMessage='The format of the report being delivered.)')]
        [string]
        [ValidateSet('Csv')]
        $format,
        [parameter(mandatory=$False,HelpMessage='Has definition for the report.)')]
        [ReportDefinition]
        $definition,
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName,
        [parameter(mandatory=$False,HelpMessage='Has schedule information for the report.)')]
        [ReportSchedule]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='Has delivery information for the report.)')]
        [ReportDeliveryInfo]
        $deliveryInfo,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["definition"] = $definition
        $resource.properties["deliveryInfo"] = $deliveryInfo

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ReportConfigDatasetConfiguration
{
    [string[]] $columns
}
function New-AzureNativeTypeCostmanagementReportConfigDatasetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of column names to be included in the report. Any valid report column name is allowed. If not provided, then report includes all columns.)')]
        [string[]]
        $columns
    )

    process
    {
        return $([ReportConfigDatasetConfiguration]$PSBoundParameters)
    }
}
class ReportConfigComparisonExpression
{
    [string[]] $values
    [string] $name
    [ValidateSet('In', 'Contains')]
    [string] $operator
}
function New-AzureNativeTypeCostmanagementReportConfigComparisonExpression
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of values to use for comparison)')]
        [string[]]
        $values,
        [parameter(mandatory=$False,HelpMessage='The name of the column to use in comparison.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The operator to use for comparison.)')]
        [string]
        [ValidateSet('In', 'Contains')]
        $operator
    )

    process
    {
        return $([ReportConfigComparisonExpression]$PSBoundParameters)
    }
}
class ReportConfigFilter
{
    [ReportConfigComparisonExpression] $tagValue
    [ReportConfigComparisonExpression] $tagKey
    [ReportConfigFilter[]] $and
    [ReportConfigFilter[]] $or
    [ReportConfigComparisonExpression] $dimensions
    [ReportConfigComparisonExpression] $tags
}
function New-AzureNativeTypeCostmanagementReportConfigFilter
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a tag value)')]
        [ReportConfigComparisonExpression]
        $tagValue,
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a tag key)')]
        [ReportConfigComparisonExpression]
        $tagKey,
        [parameter(mandatory=$False,HelpMessage='The logical "AND" expression. Must have at least 2 items.)')]
        $and,
        [parameter(mandatory=$False,HelpMessage='The logical "OR" expression. Must have at least 2 items.)')]
        $or,
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a dimension)')]
        [ReportConfigComparisonExpression]
        $dimensions,
        [parameter(mandatory=$False,HelpMessage='Has comparison expression for a tag)')]
        [ReportConfigComparisonExpression]
        $tags
    )

    process
    {
        return $([ReportConfigFilter]$PSBoundParameters)
    }
}
class ReportConfigSorting
{
    [string] $name
    [string] $direction
}
function New-AzureNativeTypeCostmanagementReportConfigSorting
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the column to sort.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Direction of sort.)')]
        [string]
        $direction
    )

    process
    {
        return $([ReportConfigSorting]$PSBoundParameters)
    }
}
class ReportConfigGrouping
{
    [string] $name
    [ValidateSet('Tag', 'Dimension')]
    [string] $type
}
function New-AzureNativeTypeCostmanagementReportConfigGrouping
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the column to group. This version supports subscription lowest possible grain.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Has type of the column to group.)')]
        [string]
        [ValidateSet('Tag', 'Dimension')]
        $type
    )

    process
    {
        return $([ReportConfigGrouping]$PSBoundParameters)
    }
}
class ReportConfigDataset
{
    [ReportConfigDatasetConfiguration] $configuration
    [ReportConfigFilter] $filter
    [ReportConfigSorting[]] $sorting
    [ReportConfigGrouping[]] $grouping
    [object] $aggregation
    [ValidateSet('Daily', 'Monthly')]
    [string] $granularity
}
class ReportConfigAggregation
{
    [string] $name
    [ValidateSet('Avg', 'Max', 'Min', 'Sum')]
    [string] $function
}
function New-AzureNativeTypeCostmanagementReportConfigAggregation
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the column to aggregate.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='The name of the aggregation function to use.)')]
        [string]
        [ValidateSet('Avg', 'Max', 'Min', 'Sum')]
        $function
    )

    process
    {
        return $([ReportConfigAggregation]$PSBoundParameters)
    }
}
function New-AzureNativeTypeCostmanagementReportConfigDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has configuration information for the data in the report. The configuration will be ignored if aggregation and grouping are provided.)')]
        [ReportConfigDatasetConfiguration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='Has filter expression to use in the report.)')]
        [ReportConfigFilter]
        $filter,
        [parameter(mandatory=$False,HelpMessage='Array of order by expression to use in the report.)')]
        $sorting,
        [parameter(mandatory=$False,HelpMessage='Array of group by expression to use in the report. Report can have up to 2 group by clauses.)')]
        $grouping,
        [parameter(mandatory=$False,HelpMessage='Dictionary of aggregation expression to use in the report. The key of each item in the dictionary is the alias for the aggregated column. Report can have up to 2 aggregation clauses.)')]
        [ReportConfigAggregation]
        $aggregation,
        [parameter(mandatory=$False,HelpMessage='The granularity of rows in the report.)')]
        [string]
        [ValidateSet('Daily', 'Monthly')]
        $granularity
    )

    process
    {
        return $([ReportConfigDataset]$PSBoundParameters)
    }
}
class ReportConfigTimePeriod
{
    [string] $to
    [string] $from
}
function New-AzureNativeTypeCostmanagementReportConfigTimePeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date to pull data to.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='The start date to pull data from.)')]
        [string]
        $from
    )

    process
    {
        return $([ReportConfigTimePeriod]$PSBoundParameters)
    }
}
function New-AzureNativeCostmanagementViewByScope
{
    [Alias('azure_native_costmanagement_viewbyscope')]
    param (
        [parameter(mandatory=$False,HelpMessage='Show costs accumulated over time.)')]
        [string]
        [ValidateSet('true', 'false')]
        $accumulated,
        [parameter(mandatory=$False,HelpMessage='Chart type of the main view in Cost Analysis. Required.)')]
        [string]
        [ValidateSet('Area', 'Line', 'StackedColumn', 'GroupedColumn', 'Table')]
        $chart,
        [parameter(mandatory=$False,HelpMessage='Metric to use when displaying costs.)')]
        [string]
        [ValidateSet('ActualCost', 'AmortizedCost', 'AHUB')]
        $metric,
        [parameter(mandatory=$False,HelpMessage='Configuration of 3 sub-views in the Cost Analysis UI.)')]
        $pivots,
        [parameter(mandatory=$False,HelpMessage='The time frame for pulling data for the report. If custom, then a specific time period must be provided.)')]
        [string]
        [ValidateSet('WeekToDate', 'MonthToDate', 'YearToDate', 'Custom')]
        $timeframe,
        [parameter(mandatory=$False,HelpMessage='List of KPIs to show in Cost Analysis UI.)')]
        $kpis,
        [parameter(mandatory=$False,HelpMessage='Has definition for data in this report config.)')]
        [ReportConfigDataset]
        $dataSet,
        [parameter(mandatory=$False,HelpMessage='User input name of the view. Required.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Cost Management scope to save the view on. This includes ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''providers/Microsoft.Management/managementGroups/{managementGroupId}'' for Management Group scope, ''/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for ExternalBillingAccount scope, and ''/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for ExternalSubscription scope.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='View name)')]
        [string]
        $viewName,
        [parameter(mandatory=$False,HelpMessage='The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.)')]
        [string]
        [ValidateSet('Usage')]
        $type,
        [parameter(mandatory=$False,HelpMessage='eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Has time period for pulling data for the report.)')]
        [ReportConfigTimePeriod]
        $timePeriod,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["scope"] = $scope
        $resource.properties["timeframe"] = $timeframe
        $resource.properties["type"] = $type

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementCloudConnector
{
    [Alias('azure_native_costmanagement_cloudconnector')]
    param (
        [parameter(mandatory=$False,HelpMessage='Credentials secret (eg AWS ExternalId))')]
        [string]
        $credentialsSecret,
        [parameter(mandatory=$False,HelpMessage='Default ManagementGroupId)')]
        [string]
        $defaultManagementGroupId,
        [parameter(mandatory=$False,HelpMessage='Connector kind (eg aws))')]
        [string]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Connector DisplayName)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Identifying source report. (For AWS this is a CUR report name, defined with Daily and with Resources))')]
        [string]
        $reportId,
        [parameter(mandatory=$False,HelpMessage='Billing SubscriptionId)')]
        [string]
        $subscriptionId,
        [parameter(mandatory=$False,HelpMessage='Credentials authentication key (eg AWS ARN))')]
        [string]
        $credentialsKey,
        [parameter(mandatory=$False,HelpMessage='Connector billing model)')]
        [string]
        [ValidateSet('trial', 'autoUpgrade', 'premium', 'expired')]
        $billingModel,
        [parameter(mandatory=$False,HelpMessage='Connector Name.)')]
        [string]
        $connectorName,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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


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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementReportByBillingAccount
{
    [Alias('azure_native_costmanagement_reportbybillingaccount')]
    param (
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName,
        [parameter(mandatory=$False,HelpMessage='The format of the report being delivered.)')]
        [string]
        [ValidateSet('Csv')]
        $format,
        [parameter(mandatory=$False,HelpMessage='Has definition for the report.)')]
        [ReportDefinition]
        $definition,
        [parameter(mandatory=$False,HelpMessage='Has delivery information for the report.)')]
        [ReportDeliveryInfo]
        $deliveryInfo,
        [parameter(mandatory=$False,HelpMessage='BillingAccount ID)')]
        [string]
        $billingAccountId,
        [parameter(mandatory=$False,HelpMessage='Has schedule information for the report.)')]
        [ReportSchedule]
        $schedule,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["billingAccountId"] = $billingAccountId
        $resource.properties["definition"] = $definition
        $resource.properties["deliveryInfo"] = $deliveryInfo

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementScheduledAction
{
    [Alias('azure_native_costmanagement_scheduledaction')]
    param (
        [parameter(mandatory=$False,HelpMessage='Kind of the scheduled action.)')]
        [string]
        [ValidateSet('Email')]
        $kind,
        [parameter(mandatory=$False,HelpMessage='Destination format of the view data.)')]
        [FileDestination]
        $fileDestination,
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Status of the scheduled action.)')]
        [string]
        [ValidateSet('Disabled', 'Enabled')]
        $status,
        [parameter(mandatory=$False,HelpMessage='Schedule of the scheduled action.)')]
        [ScheduleProperties]
        $schedule,
        [parameter(mandatory=$False,HelpMessage='Cost Management scope like ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for ExternalBillingAccount scope, and ''/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for ExternalSubscription scope.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Notification properties based on scheduled action kind.)')]
        [NotificationProperties]
        $notification,
        [parameter(mandatory=$False,HelpMessage='Scheduled action name.)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Cost analysis viewId used for scheduled action. For example, ''/providers/Microsoft.CostManagement/views/swaggerExample'')')]
        [string]
        $viewId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["displayName"] = $displayName
        $resource.properties["notification"] = $notification
        $resource.properties["schedule"] = $schedule
        $resource.properties["status"] = $status
        $resource.properties["viewId"] = $viewId

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class ExportTimePeriod
{
    [string] $to
    [string] $from
}
function New-AzureNativeTypeCostmanagementExportTimePeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date for export data.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='The start date for export data.)')]
        [string]
        $from
    )

    process
    {
        return $([ExportTimePeriod]$PSBoundParameters)
    }
}
class ExportDatasetConfiguration
{
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [string[]] $columns
}
function New-AzureNativeTypeCostmanagementExportDatasetConfiguration
{
    param (
        [parameter(mandatory=$False,HelpMessage='Array of column names to be included in the export. If not provided then the export will include all available columns. The available columns can vary by customer channel (see examples).)')]
        [string[]]
        $columns
    )

    process
    {
        return $([ExportDatasetConfiguration]$PSBoundParameters)
    }
}
class ExportDataset
{
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [ExportDatasetConfiguration] $configuration
    [ValidateSet('Daily', 'Hourly')]
    [string] $granularity
}
function New-AzureNativeTypeCostmanagementExportDataset
{
    param (
        [parameter(mandatory=$False,HelpMessage='The export dataset configuration.)')]
        [ExportDatasetConfiguration]
        $configuration,
        [parameter(mandatory=$False,HelpMessage='The granularity of rows in the export. Currently only ''Daily'' is supported.)')]
        [string]
        [ValidateSet('Daily', 'Hourly')]
        $granularity
    )

    process
    {
        return $([ExportDataset]$PSBoundParameters)
    }
}
class ExportDefinition
{
    [ExportTimePeriod] $timePeriod
    [ValidateSet('Usage', 'ActualCost', 'AmortizedCost')]
    [string] $type
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [string] $timeframe
    [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
    [ExportDataset] $dataSet
}
function New-AzureNativeTypeCostmanagementExportDefinition
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has time period for pulling data for the export.)')]
        [ExportTimePeriod]
        $timePeriod,
        [parameter(mandatory=$False,HelpMessage='The type of the export. Note that ''Usage'' is equivalent to ''ActualCost'' and is applicable to exports that do not yet provide data for charges or amortization for service reservations.)')]
        [string]
        [ValidateSet('Usage', 'ActualCost', 'AmortizedCost')]
        $type,
        [parameter(mandatory=$False,HelpMessage='The time frame for pulling data for the export. If custom, then a specific time period must be provided.)')]
        [string]
        [ValidateSet('WeekToDate', 'MonthToDate', 'Custom')]
        $timeframe,
        [parameter(mandatory=$False,HelpMessage='The definition for data in the export.)')]
        [ExportDataset]
        $dataSet
    )

    process
    {
        return $([ExportDefinition]$PSBoundParameters)
    }
}
class ExportDeliveryDestination
{
    [string] $rootFolderPath
    [string] $resourceId
    [string] $container
}
function New-AzureNativeTypeCostmanagementExportDeliveryDestination
{
    param (
        [parameter(mandatory=$False,HelpMessage='The name of the directory where exports will be uploaded.)')]
        [string]
        $rootFolderPath,
        [parameter(mandatory=$False,HelpMessage='The resource id of the storage account where exports will be delivered.)')]
        [string]
        $resourceId,
        [parameter(mandatory=$False,HelpMessage='The name of the container where exports will be uploaded.)')]
        [string]
        $container
    )

    process
    {
        return $([ExportDeliveryDestination]$PSBoundParameters)
    }
}
class ExportDeliveryInfo
{
    [ExportDeliveryDestination] $destination
}
function New-AzureNativeTypeCostmanagementExportDeliveryInfo
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has destination for the export being delivered.)')]
        [ExportDeliveryDestination]
        $destination
    )

    process
    {
        return $([ExportDeliveryInfo]$PSBoundParameters)
    }
}
class ExportRecurrencePeriod
{
    [string] $to
    [string] $from
}
function New-AzureNativeTypeCostmanagementExportRecurrencePeriod
{
    param (
        [parameter(mandatory=$False,HelpMessage='The end date of recurrence.)')]
        [string]
        $to,
        [parameter(mandatory=$False,HelpMessage='The start date of recurrence.)')]
        [string]
        $from
    )

    process
    {
        return $([ExportRecurrencePeriod]$PSBoundParameters)
    }
}
class ExportSchedule
{
    [ExportRecurrencePeriod] $recurrencePeriod
    [ValidateSet('Daily', 'Weekly', 'Monthly', 'Annually')]
    [string] $recurrence
    [ValidateSet('Active', 'Inactive')]
    [string] $status
}
function New-AzureNativeTypeCostmanagementExportSchedule
{
    param (
        [parameter(mandatory=$False,HelpMessage='Has start and end date of the recurrence. The start date must be in future. If present, the end date must be greater than start date.)')]
        [ExportRecurrencePeriod]
        $recurrencePeriod,
        [parameter(mandatory=$False,HelpMessage='The schedule recurrence.)')]
        [string]
        [ValidateSet('Daily', 'Weekly', 'Monthly', 'Annually')]
        $recurrence,
        [parameter(mandatory=$False,HelpMessage='The status of the export''s schedule. If ''Inactive'', the export''s schedule is paused.)')]
        [string]
        [ValidateSet('Active', 'Inactive')]
        $status
    )

    process
    {
        return $([ExportSchedule]$PSBoundParameters)
    }
}
function New-AzureNativeCostmanagementExport
{
    [Alias('azure_native_costmanagement_export')]
    param (
        [parameter(mandatory=$False,HelpMessage='The scope associated with export operations. This includes ''/subscriptions/{subscriptionId}/'' for subscription scope, ''/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope and ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''/providers/Microsoft.Management/managementGroups/{managementGroupId} for Management Group scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for billingProfile scope, ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}'' for invoiceSection scope, and ''/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}'' specific for partners.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='Export Name.)')]
        [string]
        $exportName,
        [parameter(mandatory=$False,HelpMessage='Has the definition for the export.)')]
        [ExportDefinition]
        $definition,
        [parameter(mandatory=$False,HelpMessage='Has delivery information for the export.)')]
        [ExportDeliveryInfo]
        $deliveryInfo,
        [parameter(mandatory=$False,HelpMessage='The format of the export being delivered. Currently only ''Csv'' is supported.)')]
        [string]
        [ValidateSet('Csv')]
        $format,
        [parameter(mandatory=$False,HelpMessage='eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Has schedule information for the export.)')]
        [ExportSchedule]
        $schedule,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["definition"] = $definition
        $resource.properties["deliveryInfo"] = $deliveryInfo
        $resource.properties["scope"] = $scope

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementView
{
    [Alias('azure_native_costmanagement_view')]
    param (
        [parameter(mandatory=$False,HelpMessage='Show costs accumulated over time.)')]
        [string]
        [ValidateSet('true', 'false')]
        $accumulated,
        [parameter(mandatory=$False,HelpMessage='Chart type of the main view in Cost Analysis. Required.)')]
        [string]
        [ValidateSet('Area', 'Line', 'StackedColumn', 'GroupedColumn', 'Table')]
        $chart,
        [parameter(mandatory=$False,HelpMessage='Metric to use when displaying costs.)')]
        [string]
        [ValidateSet('ActualCost', 'AmortizedCost', 'AHUB')]
        $metric,
        [parameter(mandatory=$False,HelpMessage='Configuration of 3 sub-views in the Cost Analysis UI.)')]
        $pivots,
        [parameter(mandatory=$False,HelpMessage='The time frame for pulling data for the report. If custom, then a specific time period must be provided.)')]
        [string]
        [ValidateSet('WeekToDate', 'MonthToDate', 'YearToDate', 'Custom')]
        $timeframe,
        [parameter(mandatory=$False,HelpMessage='List of KPIs to show in Cost Analysis UI.)')]
        $kpis,
        [parameter(mandatory=$False,HelpMessage='Has definition for data in this report config.)')]
        [ReportConfigDataset]
        $dataSet,
        [parameter(mandatory=$False,HelpMessage='User input name of the view. Required.)')]
        [string]
        $displayName,
        [parameter(mandatory=$False,HelpMessage='Cost Management scope to save the view on. This includes ''subscriptions/{subscriptionId}'' for subscription scope, ''subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'' for resourceGroup scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}'' for Billing Account scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}'' for Department scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}'' for EnrollmentAccount scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}'' for BillingProfile scope, ''providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}'' for InvoiceSection scope, ''providers/Microsoft.Management/managementGroups/{managementGroupId}'' for Management Group scope, ''/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}'' for ExternalBillingAccount scope, and ''/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}'' for ExternalSubscription scope.)')]
        [string]
        $scope,
        [parameter(mandatory=$False,HelpMessage='View name)')]
        [string]
        $viewName,
        [parameter(mandatory=$False,HelpMessage='The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.)')]
        [string]
        [ValidateSet('Usage')]
        $type,
        [parameter(mandatory=$False,HelpMessage='eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.)')]
        [string]
        $eTag,
        [parameter(mandatory=$False,HelpMessage='Has time period for pulling data for the report.)')]
        [ReportConfigTimePeriod]
        $timePeriod,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["timeframe"] = $timeframe
        $resource.properties["type"] = $type

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

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

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

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

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

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

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

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
class CostAllocationProportion
{
    [ValidateSet('Dimension', 'Tag')]
    [string] $name
    [ValidateSet('Dimension', 'Tag')]
    [int] $percentage
}
function New-AzureNativeTypeCostmanagementCostAllocationProportion
{
    param (
        [parameter(mandatory=$False,HelpMessage='Target resource for cost allocation)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Percentage of source cost to allocate to this resource. This value can be specified to two decimal places and the total percentage of all resources in this rule must sum to 100.00.)')]
        [int]
        $percentage
    )

    process
    {
        return $([CostAllocationProportion]$PSBoundParameters)
    }
}
class TargetCostAllocationResource
{
    [ValidateSet('Dimension', 'Tag')]
    [string] $resourceType
    [ValidateSet('Dimension', 'Tag')]
    [string] $name
    [ValidateSet('Dimension', 'Tag')]
    [CostAllocationProportion[]] $values
    [ValidateSet('FixedProportion')]
    [string] $policyType
}
function New-AzureNativeTypeCostmanagementTargetCostAllocationResource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of resources contained in this cost allocation rule)')]
        [string]
        [ValidateSet('Dimension', 'Tag')]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='If resource type is dimension, this must be either ResourceGroupName or SubscriptionId. If resource type is tag, this must be a valid Azure tag)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Target resources for cost allocation. This list cannot contain more than 25 values.)')]
        $values,
        [parameter(mandatory=$False,HelpMessage='Method of cost allocation for the rule)')]
        [string]
        [ValidateSet('FixedProportion')]
        $policyType
    )

    process
    {
        return $([TargetCostAllocationResource]$PSBoundParameters)
    }
}
class SourceCostAllocationResource
{
    [ValidateSet('Dimension', 'Tag')]
    [string] $resourceType
    [ValidateSet('Dimension', 'Tag')]
    [string] $name
    [ValidateSet('Dimension', 'Tag')]
    [string[]] $values
}
function New-AzureNativeTypeCostmanagementSourceCostAllocationResource
{
    param (
        [parameter(mandatory=$False,HelpMessage='Type of resources contained in this cost allocation rule)')]
        [string]
        [ValidateSet('Dimension', 'Tag')]
        $resourceType,
        [parameter(mandatory=$False,HelpMessage='If resource type is dimension, this must be either ResourceGroupName or SubscriptionId. If resource type is tag, this must be a valid Azure tag)')]
        [string]
        $name,
        [parameter(mandatory=$False,HelpMessage='Source Resources for cost allocation. This list cannot contain more than 25 values.)')]
        [string[]]
        $values
    )

    process
    {
        return $([SourceCostAllocationResource]$PSBoundParameters)
    }
}
class CostAllocationRuleDetails
{
    [TargetCostAllocationResource[]] $targetResources
    [SourceCostAllocationResource[]] $sourceResources
}
function New-AzureNativeTypeCostmanagementCostAllocationRuleDetails
{
    param (
        [parameter(mandatory=$False,HelpMessage='Target resources for cost allocation. At this time, this list can contain no more than one element.)')]
        $targetResources,
        [parameter(mandatory=$False,HelpMessage='Source resources for cost allocation. At this time, this list can contain no more than one element.)')]
        $sourceResources
    )

    process
    {
        return $([CostAllocationRuleDetails]$PSBoundParameters)
    }
}
class CostAllocationRuleProperties
{
    [string] $description
    [CostAllocationRuleDetails] $details
    [ValidateSet('NotActive', 'Active', 'Processing')]
    [string] $status
}
function New-AzureNativeTypeCostmanagementCostAllocationRuleProperties
{
    param (
        [parameter(mandatory=$False,HelpMessage='Description of a cost allocation rule.)')]
        [string]
        $description,
        [parameter(mandatory=$False,HelpMessage='Resource information for the cost allocation rule)')]
        [CostAllocationRuleDetails]
        $details,
        [parameter(mandatory=$False,HelpMessage='Status of the rule)')]
        [string]
        [ValidateSet('NotActive', 'Active', 'Processing')]
        $status
    )

    process
    {
        return $([CostAllocationRuleProperties]$PSBoundParameters)
    }
}
function New-AzureNativeCostmanagementCostAllocationRule
{
    [Alias('azure_native_costmanagement_costallocationrule')]
    param (
        [parameter(mandatory=$False,HelpMessage='Cost allocation rule properties)')]
        [CostAllocationRuleProperties]
        $properties,
        [parameter(mandatory=$False,HelpMessage='Cost allocation rule name. The name cannot include spaces or any non alphanumeric characters other than ''_'' and ''-''. The max length is 260 characters.)')]
        [string]
        $ruleName,
        [parameter(mandatory=$False,HelpMessage='BillingAccount ID)')]
        [string]
        $billingAccountId,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

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

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

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

        $global:pulumiresources += $resource
        return $resource
    }
}
function New-AzureNativeCostmanagementReportByDepartment
{
    [Alias('azure_native_costmanagement_reportbydepartment')]
    param (
        [parameter(mandatory=$False,HelpMessage='Report Name.)')]
        [string]
        $reportName,
        [parameter(mandatory=$False,HelpMessage='Has definition for the report.)')]
        [ReportDefinition]
        $definition,
        [parameter(mandatory=$False,HelpMessage='Has delivery information for the report.)')]
        [ReportDeliveryInfo]
        $deliveryInfo,
        [parameter(mandatory=$False,HelpMessage='Department ID)')]
        [string]
        $departmentId,
        [parameter(mandatory=$False,HelpMessage='The format of the report being delivered.)')]
        [string]
        [ValidateSet('Csv')]
        $format,
        [parameter(mandatory=$False,HelpMessage='Has schedule information for the report.)')]
        [ReportSchedule]
        $schedule,
        [parameter(mandatory,HelpMessage='The reference to call when you want to make a dependency to another resource')]
        [string]
        $pulumiid
    )

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

        $resource.properties["definition"] = $definition
        $resource.properties["deliveryInfo"] = $deliveryInfo
        $resource.properties["departmentId"] = $departmentId

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

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

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

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