'Invoke-WebRequest : The remote server returned an error: (404) Not Found

I am trying to call a Postman API to get a list of groups assigned to a list of apps but I get below error:

Invoke-WebRequest : The remote server returned an error: (404) Not Found.
At C:\Users\703307405\Desktop\IM SSO\Okta_Scripts\apps\GroupsAssignedtoApp.ps1:19 char:13
+ $response = Invoke-WebRequest $next -Method 'GET' -Headers $headers - ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
ConvertFrom-Json : Cannot bind argument to parameter 'InputObject' because it is null.
At C:\Users\703307405\Desktop\IM SSO\Okta_Scripts\apps\GroupsAssignedtoApp.ps1:21 char:28
+ $member = ConvertFrom-Json $response.Content
+                            ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [ConvertFrom-Json], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertFrom
   JsonCommand

Below is my script. I have a list of app IDs in a text file that I'm using for input:

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept", "application/json")
$headers.Add("Content-Type", "application/json")
$headers.Add("Authorization", "SSWS {{apikey}}")
$log = "groups_with_apps.csv"
"application ID" + "," + "application Name" + ","  + "ID-GroupsAssigned to App" + "," + "Name-GroupAssigned to App" + "," + "GroupType"  | Add-Content -path output/$log
foreach($line in Get-Content -Path input.txt) 
{
$splitarray = $line.Split(",")
$appid  =  $splitarray[0]
$appname   =  $splitarray[1]
$next = '{{url}}/api/v1/apps/' + $appid + '/groups'
$response = Invoke-WebRequest $next -Method 'GET' -Headers $headers -UseBasicParsing
$member = ConvertFrom-Json $response.Content
foreach($m in $member)
{
  $groupid= $m.id
  
  $groupget =  '{{url}}/api/v1/groups/' + $groupid
  
  $getgroupname = Invoke-WebRequest $groupget -Method 'GET' -Headers $headers -UseBasicParsing
  $member2 = ConvertFrom-Json $getgroupname.Content
 
 foreach($n in $member2)
 { $groupname = $n.profile.name 
    $grouptype = $n.type
 }
$appid + "," + $appname + "," + $groupid + "," + $groupname + "," + $grouptype | Add-Content -path output/$log
  
}
Start-Sleep -s 2
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source