Private/Get-ApiAllData.ps1

function Get-ApiAllData {
<#
    .SYNOPSIS
 
    .DESCRIPTION
 
    .PARAMETER InputObject
 
    .OUTPUTS
#>

    param (
        [Parameter(Mandatory)]
        [String]$BaseUri,

        [Parameter(Mandatory)]
        [String]$Url,

        [Parameter(Mandatory)]
        [PSCustomObject]$Headers

    )
    $Data = @()
    $ContentType = "application/json"
    $Response = Invoke-WebRequest -UseBasicParsing -Uri $Url -Headers $Headers -Method Get
    if ($Response.StatusCode -eq 200) {
        $Info = $Response.Content | ConvertFrom-Json
        if ($Info.value) { 
            foreach ($Value in $Info.value) {
                $Data += $Value
            }
            if ($Info.'@odata.nextLink') {
                $NextLinkUrl = $BaseUri + $Info.'@odata.nextLink'
            }
            while($NextLinkUrl) {
                $NextLinkResponse = Invoke-WebRequest -Uri $NextLinkUrl -UseBasicParsing -Method Get -Headers $Headers -ContentType $ContentType
                if($NextLinkResponse.StatusCode -eq 200)
                {
                    $NextLinkData = $NextLinkResponse.Content | ConvertFrom-Json
                    foreach ($NextLink in $NextLinkData.'value') {
                        $Data += $NextLink
                    }
                    if ($NextLinkData.'@odata.nextLink') {
                        $NextLinkUrl = $BaseUri + $NextLinkData.'@odata.nextLink'
                    }
                    else {
                        $NextLinkUrl = $null
                    }
                }
                else
                {
                    Write-Warning "Unable to get nextlink response for $($NextLinkUrl)"
                    $NextLinkUrl = $null
                }
            }
        }
        return $Data
    }
}