PowerShell Example: Perform an Ad-hoc Search with Filter
The following example shows how to perform an ad-hoc search for Incidents using a filter.
# Set server login variables $serverName = "your server" $apiKey = "your client id" $userName = "CSDAdmin" $password = "CSDAdmin" $baseUri = "http://${serverName}/CherwellAPI/" # Get an access token $tokenUri = $baseUri + "token" $authMode = "Internal" $tokenRequestBody = @{ "Accept" = "application/json"; "grant_type" = "password"; "client_id" = $apiKey; "username" = $userName; "password"= $password } $tokenResponse = Invoke-RestMethod -Method POST -Uri "${tokenUri}?auth_mode=${authMode}&api_key=${apiKey}" -Body $tokenRequestBody $requestHeader = @{ Authorization = "Bearer $($tokenResponse.access_token)" } # Get the business object summary for Incident. This will give us the busObId $summaryUri = $baseUri + "api/V1/getbusinessobjectsummary/busobname/Incident" $summaryResponse = Invoke-RestMethod -Method GET -Uri $summaryUri -ContentType application/json -Header $requestHeader $busObId = $summaryResponse[0].busobId # Get the business object template for Incident. We need this to get the field id for ShortDescription $templateUri = $baseUri + "api/V1/getbusinessobjecttemplate" $templateRequestBody = @{ busObId = $busobId includeAll = $true } | ConvertTo-Json $templateResponse = Invoke-RestMethod -Method POST -Uri $templateUri -ContentType application/json -Header $requestHeader -Body $templateRequestBody $shortDescField = $templateResponse.fields | Where-Object {$_.name -eq "ShortDescription"} # Put together the request $searchResultsRequest = @{ Q BusObId = $busobId; Filters = @( @{ fieldId = $shortDescField.fieldId; Operator = "eq"; Value = "Printer Issue" }) } | ConvertTo-Json # Run the search $searchUri = $baseUri + "api/V1/getsearchresults" $searchResultsResponse = Invoke-RestMethod -Method POST -Uri $searchUri -ContentType application/json -Header $requestHeader -Body $searchResultsRequest Write-Host $searchResultsResponse