Summary

The testVictorOpsAction() mutation sends a test request to a VictorOps webhook URL and returns a TestResult object indicating whether the request succeeded. Run this mutation after creating or updating a VictorOps action to confirm that the webhook URL, message type, and event payload are valid before the action fires in production. The mutation accepts mock trigger and event data, so no real alert condition is required.

Syntax

graphql
testVictorOpsAction(
      input: TestVictorOpsAction!
   ): TestResult!

The input argument accepts a TestVictorOpsAction object, which is required and non-nullable. The input type includes the same fields as createVictorOpsAction(), plus two test-specific fields: triggerName, a mock trigger name that does not need to exist, and eventData, a JSON string supplying one or more events to simulate a realistic payload. The required fields are viewName, name, messageType, notifyUrl, useProxy, triggerName, and eventData. See the Input Parameters section for all fields and descriptions.

The mutation returns a non-nullable TestResult object indicating whether the test succeeded and including a descriptive message. See the Returned Values section for details.

Example

Raw
graphql
mutation {
  testVictorOpsAction( input: 
    { viewName: "humio",
      name: "act-up",
      messageType: "warning",
      notifyUrl: "https://victorops.company.com",
      useProxy: false,
      triggerName: "wake-up",
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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 { ^
  testVictorOpsAction( input:  ^
    { viewName: \"humio\", ^
      name: \"act-up\", ^
      messageType: \"warning\", ^
      notifyUrl: \"https://victorops.company.com\", ^
      useProxy: false, ^
      triggerName: \"wake-up\", ^
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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 {
  testVictorOpsAction( input: 
    { viewName: \"humio\",
      name: \"act-up\",
      messageType: \"warning\",
      notifyUrl: \"https://victorops.company.com\",
      useProxy: false,
      triggerName: \"wake-up\",
      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": {
    "testVictorOpsAction": {
      "success": false
    }
  }
}

Input Parameters

The TestVictorOpsAction input type requires viewName, name, messageType, notifyUrl, useProxy, triggerName, and eventData. Supply triggerName as a mock value; the referenced trigger does not need to exist. Supply eventData as a JSON object for a single event or a JSON array of objects for multiple events to make the test more realistic.

Table: TestVictorOpsAction 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.
messageTypeStringyes Long-Term The type of the VictorOps message to make.
nameStringyes Long-Term The name of the action.
notifyUrlStringyes Long-Term The VictorOps webhook URL where to send the request.
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.

Returned Values

The mutation returns a TestResult object indicating whether the test succeeded and providing a descriptive message. Review this result to confirm your configuration is correct before creating a permanent action.

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.