Modules/WorkloadHelpers/M365DSCLicensingHelper.psm1

<#
.SYNOPSIS
    Invokes a Licensing REST request.
 
.DESCRIPTION
    Sends an authenticated REST request to the Licensing workload using the current connection profile and returns the parsed response content.
 
.PARAMETER Uri
    Specifies the target URI for the REST request.
 
.PARAMETER Method
    Specifies the HTTP method to use. The default value is GET.
 
.PARAMETER Body
    Specifies the request payload to send when the method supports a body.
 
.OUTPUTS
    System.Collections.Hashtable
#>

function Invoke-M365DSCLicensingWebRequest
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param(
        [Parameter(Mandatory = $true)]
        [System.String]
        $Uri,

        [Parameter()]
        [System.String]
        $Method = 'GET',

        [Parameter()]
        [System.Collections.Hashtable]
        $Body
    )

    $headers = @{
        Authorization = (Get-MSCloudLoginConnectionProfile -Workload 'Licensing').AccessToken
    }

    $bodyValue = $null
    if (-not [System.String]::IsNullOrEmpty($Body))
    {
        $bodyValue = ConvertTo-Json $Body -Depth 10 -Compress
    }

    $response = Invoke-WebRequest -Method $Method `
        -Uri $Uri `
        -Headers $headers `
        -Body $bodyValue `
        -ContentType 'application/json' `
        -UseBasicParsing
    $result = ConvertFrom-Json $response.Content
    return $result
}