$tcxurl="mypbx.mydomain.de" # needs port if not 443
$jsonauthbody = (@{
Username="100" # 3CX user, maybe email address
Password="Super_Secret0815" # 3CX user password
SecurityCode=""
} | ConvertTo-Json)
$LoginResponse = Invoke-RestMethod -Uri "https://$tcxurl/webclient/api/Login/GetAccessToken" -Body $jsonauthbody -Method POST -ContentType "application/json"
if( $LoginResponse.Status -ne "AuthSuccess" ) {
Write-Host "abort: authentication not successful"
exit -1
}
$headers = @{Authorization = "Bearer $($LoginResponse.Token.access_token)"}
$userids = ((Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Users" -headers $headers -Method GET -ContentType "application/json").Value | sort-object { $_.Number}).Id
$usernrlen = (Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Users($($userids[0]))" -headers $headers -Method GET -ContentType "application/json").Number.Length
Write-Host $("{0,$usernrlen} | {1,-20} | {2,-20}" -f "Nr", "AuthID", "AuthPassword")
Write-Host "$("-" * $($usernrlen+1))+----------------------+------------------------"
Foreach ($userid in $userids) {
$ext = (Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Users($userid)" -headers $headers -Method GET -ContentType "application/json")
Write-Host $("{0,$usernrlen} | {1,-20} | {2,-20}" -f $ext.Number, $ext.AuthId, $ext.AuthPassword)
}