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.
Copy
# 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