Summary

The testPagerDutyAction() mutation sends a test event to a PagerDuty action. It returns a pass or fail result with a descriptive message. Use it after creating or updating a PagerDuty action. Confirm that the routing key, severity, and event payload reach PagerDuty as expected. The mutation accepts mock trigger and event data. No real alert condition is required.

Syntax

graphql
testPagerDutyAction(
      input: TestPagerDutyAction!
   ): TestResult!

The mutation accepts a single required input argument of type TestPagerDutyAction!. All input fields are required: view name, action name, severity level, routing key, proxy setting, trigger name, and JSON event data. The mutation returns a non-null TestResult! object. It includes a success flag and a descriptive message.

Input parameters

The TestPagerDutyAction! input type requires all fields. Provide the view name, action name, routing key, and severity level. Also supply a proxy setting, mock trigger name, and JSON event data.

Table: TestPagerDutyAction Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
eventDataStringyes Long-Term JSON data representing one or more events. One event can be supplied as a JSON object. Multiple events must be supplied as a list of JSON objects.
nameStringyes Long-Term The name of the action.
routingKeyStringyes Long-Term The routing key to authenticate with PagerDuty.
severityStringyes Long-Term The severity level to give to the message.
triggerNameStringyes Long-Term The name of the action. This is a mock value; the trigger doesn't have to exist.
useProxyBooleanyes Long-Term Defines whether the action should use the configured proxy to make web requests.
viewNameStringyes Long-Term The name of the view of the action.

Example

Raw
graphql
mutation {
  testPagerDutyAction( input: 
    { viewName: "humio",
      name: "act-now",
      severity: "severe"
      routingKey: "abc123",
      useProxy: false,
      triggerName: "bang",
      eventData: "[{\"#type\":\"kv\"}]",
      } )
  { success }
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation { ^
  testPagerDutyAction( input:  ^
    { viewName: \"humio\", ^
      name: \"act-now\", ^
      severity: \"severe\" ^
      routingKey: \"abc123\", ^
      useProxy: false, ^
      triggerName: \"bang\", ^
      eventData: \"[{\\"#type\\":\\"kv\\"}]\", ^
      } ) ^
  { success } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation {
  testPagerDutyAction( input: 
    { viewName: \"humio\",
      name: \"act-now\",
      severity: \"severe\"
      routingKey: \"abc123\",
      useProxy: false,
      triggerName: \"bang\",
      eventData: \"[{\\"#type\\":\\"kv\\"}]\",
      } )
  { success }
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "testPagerDutyAction": {
      "success": false
    }
  }
}

Returned values

The mutation returns a non-null TestResult! object. The result includes a success flag and a message describing the test outcome.

Table: TestResult Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
messageStringyes Long-Term A message explaining the test result.
successBooleanyes Long-Term True if the test was a success, false otherwise.