Summary

The testHumioRepoAction() mutation sends a test event through a LogScale repository action to verify the action is configured correctly. Use it after creating or updating a repository action to confirm the action delivers data to its target repository before enabling it in a live alert or scheduled search. The mutation accepts mock trigger context and event data, so no real alert needs to fire during testing.

Syntax

graphql
testHumioRepoAction(
      input: TestHumioRepoAction!
   ): TestResult!

The required input argument accepts a non-nullable TestHumioRepoAction object containing all fields needed to identify the action and simulate a trigger event. The mutation returns a non-nullable TestResult object with a boolean success indicator and a message describing the outcome.

Example

Raw
graphql
mutation {
  testHumioRepoAction( input: 
    { viewName: "humio",
      name: "react",
      ingestToken: "123abc",
      triggerName: "fire",
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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 { ^
  testHumioRepoAction( input:  ^
    { viewName: \"humio\", ^
      name: \"react\", ^
      ingestToken: \"123abc\", ^
      triggerName: \"fire\", ^
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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 {
  testHumioRepoAction( input: 
    { viewName: \"humio\",
      name: \"react\",
      ingestToken: \"123abc\",
      triggerName: \"fire\",
      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": {
    "testHumioRepoAction": {
      "success": false
    }
  }
}

Input Parameters

The viewName argument specifies the repository or view that owns the action. The name argument identifies the action to test. The ingestToken argument provides an ingest token for the destination repository the action writes to. Supply a mock triggerName and eventData to simulate a trigger event. All fields are required.

Table: TestHumioRepoAction Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
eventDataStringyes Long-Term JSON data representing the events to send through the action. Provide a single event as a JSON object or multiple events as a JSON array of objects.
ingestTokenStringyes Long-Term An ingest token for the repository the action writes to. The action uses this token to authenticate when delivering the test event.
nameStringyes Long-Term The name of the repository action to test.
triggerNameStringyes Long-Term A name for the simulated trigger. This value does not need to correspond to an existing trigger — it provides mock trigger context for the action under test.
viewNameStringyes Long-Term The name of the repository or view that owns the action being tested.

Returned Values

The mutation returns a TestResult object. Check the success field to determine whether the action reached its target and processed the event data. If the test fails, the message field provides a description of the failure to help diagnose misconfiguration.

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.