Summary

The updateParserFromTemplate() mutation updates an existing parser in a LogScale repository using a YAML specification. The mutation replaces the parser's full configuration from the provided template. To update only specific fields without replacing the full configuration, use updateParserV2() instead.

Syntax

graphql
updateParserFromTemplate(
      input: UpdateParserFromTemplateInput!
   ): Parser!

The mutation accepts a single required argument, input, of type UpdateParserFromTemplateInput!. All three fields in the input are required: repositoryName identifies the target repository, id identifies the parser to update, and yamlTemplate provides the full YAML specification. The mutation returns a non-null Parser! object.

Input parameters

Provide the target repository name in repositoryName, the unique identifier of the parser to update in id, and the full YAML parser specification in yamlTemplate. All three fields are required. To retrieve a parser identifier, use the repositories() query.

Example

Raw
graphql
mutation {
  updateParserFromTemplate(
    input: { 
        repositoryName: "humio",
        id: "abc123",
        yamlTemplate: "..."
      }
  ) { id, name }
}
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 {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}"
}
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 {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}"
}
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 { ^
  updateParserFromTemplate( ^
    input: {  ^
        repositoryName: \"humio\", ^
        id: \"abc123\", ^
        yamlTemplate: \"...\" ^
      } ^
  ) { id, name } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}"
}'
    "$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 {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}";
$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 {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}"
}'''

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 {
  updateParserFromTemplate(
    input: { 
        repositoryName: \"humio\",
        id: \"abc123\",
        yamlTemplate: \"...\"
      }
  ) { id, name }
}"
}
);


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": {
    "updateParserFromTemplate": {
      "id": "abc123",
      "name": "my-parser"
    }
  }
}

Returned values

The mutation returns a non-null Parser! object representing the updated parser. The returned fields include the parser's name, description, script, tag fields, fields removed before parsing, test cases, and a YAML template for recreating the parser configuration.