function Invoke-AutotaskProvision { param ( [Parameter(Mandatory)] [string]$CompanyName, [Parameter(Mandatory)] [string]$PhoneNumber, [Parameter(Mandatory)] [hashtable]$Credentials ) if (-not $Credentials["AutotaskURL"] -or -not $Credentials["AutotaskIntCode"] -or -not $Credentials["AutotaskUsername"] -or -not $Credentials["AutotaskSecret"]) { throw "Missing Autotask credentials in hashtable." } $BaseURL = $Credentials["AutotaskURL"] $Url = "https://$BaseURL/atservicesrest/v1.0/companies" $Headers = @{ "ApiIntegrationcode" = $Credentials["AutotaskIntCode"] "UserName" = $Credentials["AutotaskUsername"] "Secret" = $Credentials["AutotaskSecret"] "Content-Type" = "application/json" } $Body = @{ companyName = $CompanyName companyType = 1 phone = $PhoneNumber ownerResourceID = 4 } | ConvertTo-Json -Depth 3 try { $Response = Invoke-RestMethod -Uri $Url -Method Post -Headers $Headers -Body $Body $Response.itemId, $Response.id, $Response.companyID, $Response.item.id | Where-Object { $_ } | Select-Object -First 1 } catch { throw "[Autotask] Provisioning failed: $($_.Exception.Message)" } }