PowerShell Example: Run a One-Step Action that Includes a Prompt

These Powershell commands provide an example for running a One-Step™ Action using a OneStepActionRequest that provides an existing Incident and adds a Journal to it. In this One-Step Action, the contents are determined by a prompt.

                        # 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)" }

# Build a One-Step Action Request that will run an Incident One-Step Action
# from the Global scope that adds a Journal to a specific Incident with the
# details for the Journal being provided by a prompt
$incidentBusObId = "6dd53665c0c24cab86870a21cf6434ae"
$recordId = "9451a88b3582418263efdf4fe0a5709443f8176be6"
$oneStepId = "9451b5d71fba1b00c809b5477691ebcde8f49786cd"
$promptInput = "This journal was created by the REST API"
# Either the promptDefId or the promptName can be used to provide a value for
# the prompt. If both are provided, it will match based on the ID.
$oneStepActionRequestBody = @"
{
  "acquireLicense": "true",
  "busObId": "${incidentBusObId}",
  "busObRecId": "${recordId}",
  "oneStepActionStandInKey": "DefType:OneStepDef#Scope:Global#Id:${oneStepId}#Owner:${incidentBusObId}",
  "promptValues": [
    {
      "promptDefId": "9451b5d880b9dd6497188d45d8a91fa1d9dad4856b",
      "promptName": "JournalDetailsPrompt",
      "value": "$promptInput"
    }
  ]
}
"@

$oneStepActionUri = ${baseUri} + "api/V1/runonestepaction"
$oneStepActionResponse = Invoke-RestMethod -Method POST -Uri $oneStepActionUri -Header $requestHeader -ContentType "application/json" -Body $oneStepActionRequestBody