Private/Get-TableRetention.ps1

function Get-TableRetention {
    <#
    .SYNOPSIS
        Fetches workspace default retention and per-table retention/plan
        configuration from the Log Analytics APIs.
    .OUTPUTS
        PSCustomObject with WorkspaceRetentionDays (int) and Tables (array of
        PSCustomObjects with TableName, Plan, RetentionInDays,
        TotalRetentionInDays, ArchiveRetentionInDays).
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][PSCustomObject]$Context
    )

    $headers = @{ Authorization = "Bearer $($Context.ArmToken)" }

    # Workspace-level default retention
    $wsUri = "https://management.azure.com$($Context.ResourceId)?api-version=2023-09-01"
    $wsResponse = Invoke-AzRestWithRetry -Uri $wsUri -Headers $headers
    $workspaceRetention = [int]$wsResponse.properties.retentionInDays

    # Per-table retention and plan
    $uri = "https://management.azure.com$($Context.ResourceId)/tables?api-version=2025-07-01"
    $response = Invoke-AzRestWithRetry -Uri $uri -Headers $headers

    $tables = foreach ($table in $response.value) {
        $props = $table.properties

        # Extract column names from schema (columns + standardColumns), excluding hidden
        $allCols = @()
        if ($props.schema) {
            $schemaCols    = @($props.schema.columns         | Where-Object { -not $_.isHidden } | ForEach-Object { $_.name })
            $standardCols  = @($props.schema.standardColumns | Where-Object { -not $_.isHidden } | ForEach-Object { $_.name })
            $allCols = @($schemaCols + $standardCols | Sort-Object -Unique)
        }

        [PSCustomObject]@{
            TableName              = $table.name
            Plan                   = $props.plan                        # Analytics | Basic | Auxiliary
            RetentionInDays        = [int]$props.retentionInDays        # interactive/hot
            TotalRetentionInDays   = [int]$props.totalRetentionInDays   # hot + archive
            ArchiveRetentionInDays = [int]$props.archiveRetentionInDays # total - retention
            TableSubType           = $props.tableSubType                # Any | Classic | DataCollectionRuleBased
            Columns                = $allCols                           # string[] of visible column names
        }
    }

    [PSCustomObject]@{
        WorkspaceRetentionDays = $workspaceRetention
        Tables                 = @($tables)
    }
}