Private/Invoke-JamfAPICall.ps1
function Invoke-JamfAPICall { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Path, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$BaseURL, [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] $Body, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Method, [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string]$AppType = 'application/json' ) BEGIN { $app_Type = $AppType $app_Headers = @{ Server = $TokenJamfPSPro.Server BaseURL = $BaseURL Accept = $app_Type } } PROCESS { try { Write-Information "Uri: $Path" if ( $Body ) { $Response = Invoke-RestMethod $Path -Authentication Bearer -Token $TokenJamfPSPro.token -ContentType $app_Type -Headers $app_Headers -Method $Method -Body $Body -ErrorAction Stop } else { $Response = Invoke-RestMethod $Path -Authentication Bearer -Token $TokenJamfPSPro.token -ContentType $app_Type -Headers $app_Headers -Method $Method -ErrorAction Stop } # Expand result if only 1 property at top if ( ($Response.PSObject.Properties | Measure-Object).Count -eq 1 ) { ($Response | Where-Object {$_.getType().Name -eq 'PSCustomObject'}).PSObject.Properties.Value } else { $Response } $Response | Add-Member -NotePropertyName 'IsSuccessStatusCode' -NotePropertyValue $true return $Response } catch { $ErrorMessage = $_ $ErrorMessage | Add-Member -NotePropertyName IsSuccessStatusCode -NotePropertyValue $false return $ErrorMessage } } } |