functions/Get-DrmmAccountSites.ps1

function Get-DrmmAccountSites
{

<#
.SYNOPSIS
Fetches the site records of the authenticated user's account.
 
.DESCRIPTION
Returns account site settings, device Status and proxy Settings.
 
Site {
autotaskCompanyId (string, optional),
autotaskCompanyName (string, optional),
description (string, optional),
devicesStatus (DevicesStatus, optional),
id (integer, optional),
name (string, optional),
notes (string, optional),
onDemand (boolean, optional),
portalUrl (string, optional),
proxySettings (ProxySettings, optional),
splashtopAutoInstall (boolean, optional),
uid (string, optional): Unique alphanumeric UID of this site ,
accountUid (string, optional): Unique alphanumeric UID of the account to which this site belongs
}
DevicesStatus {
numberOfDevices (integer, optional),
numberOfOfflineDevices (integer, optional),
numberOfOnlineDevices (integer, optional)
}
ProxySettings {
host (string, optional),
password (string, optional),
port (integer, optional),
type (string, optional) = ['http', 'socks4', 'socks5'],
username (string, optional)
}
 
.PARAMETERS noDeletedDevices
Do not return the 'Deleted Devices' site settings.
 
#>


    # Function Parameters
    Param (
        [Parameter(Mandatory=$False)]
        [Switch]$noDeletedDevices
    )

    # Declare Variables
    $apiMethod = 'GET'
    $maxPage = 50
    $nextPageUrl = $null
    $page = 0
    $Results = @()

    do 
    {
        $Response = New-ApiRequest -apiMethod $apiMethod -apiRequest "/v2/account/sites?max=$maxPage&page=$page" | ConvertFrom-Json
        if ($Response)
        {
            $nextPageUrl = $Response.pageDetails.nextPageUrl
            $Results += $Response.Sites
            $page++
        }
    }
    until ($nextPageUrl -eq $null)

    # Return all sites except the 'Deleted Devices' site
    if ($noDeletedDevices)
    {    
        return $Results | where name -ne 'Deleted Devices'
    }
    else
    {
        return $Results
    }
}