functions/Get-DrmmAccountDevices.ps1

function Get-DrmmAccountDevices
{

<#
.SYNOPSIS
Fetches the devices of the authenticated user's account.
 
.DESCRIPTION
Returns account device settings, device type, patch management and UDF's.
 
DevicesPage {
devices (Array[Device]),
pageDetails (PaginationData)
}
Device {
a64Bit (boolean, optional),
antivirus (Antivirus, optional),
cagVersion (string, optional),
creationDate (integer, optional),
deleted (boolean, optional),
description (string, optional),
deviceClass (string, optional) = ['device', 'printer', 'esxihost', 'unknown'],
deviceType (DevicesType, optional),
displayVersion (string, optional),
domain (string, optional),
extIpAddress (string, optional),
hostname (string, optional),
id (integer, optional),
intIpAddress (string, optional),
lastAuditDate (integer, optional),
lastLoggedInUser (string, optional),
lastReboot (integer, optional),
lastSeen (integer, optional),
online (boolean, optional),
operatingSystem (string, optional),
patchManagement (PatchManagement, optional),
portalUrl (string, optional),
rebootRequired (boolean, optional),
siteId (integer, optional),
siteName (string, optional),
siteUid (string, optional),
snmpEnabled (boolean, optional),
softwareStatus (string, optional),
suspended (boolean, optional),
udf (Udf, optional),
uid (string, optional),
warrantyDate (string, optional)
}
PaginationData {
count (integer, optional),
nextPageUrl (string, optional),
prevPageUrl (string, optional)
}
Antivirus {
antivirusProduct (string, optional),
antivirusStatus (string, optional) = ['RunningAndUpToDate', 'RunningAndNotUpToDate', 'NotRunning', 'NotDetected']
}
DevicesType {
category (string, optional),
type (string, optional)
}
PatchManagement {
patchStatus (string, optional) = ['NoPolicy', 'NoData', 'RebootRequired', 'InstallError', 'ApprovedPending', 'FullyPatched'],
patchesApprovedPending (integer, optional),
patchesInstalled (integer, optional),
patchesNotApproved (integer, optional)
}
Udf {
udf1 (string, optional),
udf10 (string, optional),
udf11 (string, optional),
udf12 (string, optional),
udf13 (string, optional),
udf14 (string, optional),
udf15 (string, optional),
udf16 (string, optional),
udf17 (string, optional),
udf18 (string, optional),
udf19 (string, optional),
udf2 (string, optional),
udf20 (string, optional),
udf21 (string, optional),
udf22 (string, optional),
udf23 (string, optional),
udf24 (string, optional),
udf25 (string, optional),
udf26 (string, optional),
udf27 (string, optional),
udf28 (string, optional),
udf29 (string, optional),
udf3 (string, optional),
udf30 (string, optional),
udf4 (string, optional),
udf5 (string, optional),
udf6 (string, optional),
udf7 (string, optional),
udf8 (string, optional),
udf9 (string, optional)
}
 
#>


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

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

    # Return all account devices
    return $Results
}