Summary

The createDashboardFromTemplateV2() mutation creates a dashboard in a specified view from a YAML template specification. The template defines the dashboard's panels, queries, and layout. An optional name argument overrides the name embedded in the template, so you can instantiate the same template multiple times with distinct names. To create a dashboard from a template stored in an installed package, use createDashboardFromPackageTemplate() instead.

Syntax

graphql
createDashboardFromTemplateV2(
      input: CreateDashboardFromTemplateV2Input!
   ): Dashboard!

The mutation accepts a single required input argument of type CreateDashboardFromTemplateV2Input. The input requires viewName and yamlTemplate. The optional name argument overrides the name defined in the template. The mutation returns a non-null Dashboard! object representing the newly created dashboard.

Example

The following example uses an ellipsis (...) in place of the full YAML template to reduce length:

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

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 {
  createDashboardFromTemplateV2(input:
      { viewName: \"humio\",
        name: \"my-fancy-dashboard\",
        yamlTemplate: \"...\"
      } )
  { id }
}"
}
);


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": {
    "createDashboardFromTemplateV2": {
      "id": "abc123"
    }
  }
}

Input Parameters

The input object requires the name of the target view and a YAML string defining the dashboard structure, including its panels and queries. The optional name field overrides the name embedded in yamlTemplate; omit it to use the name defined in the template. The following table describes all input fields:

Table: CreateDashboardFromTemplateV2Input Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
nameString  Long-Term The name of the dashboard.
viewNameRepoOrViewNameyes Long-Term The name of the view of the dashboard.
yamlTemplateYAMLyes Long-Term A template that can be used to recreate the dashboard. YAML is a scalar.

Returned Values

The mutation returns the newly created Dashboard! object. The id field contains the unique identifier needed to reference this dashboard in subsequent mutations such as updateDashboard(), renameDashboard(), and deleteDashboardV3(). The following table lists all available fields:

Table: Dashboard Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
allowedActionsAssetActionyes Short-Term The allowed asset actions. See AssetAction Table). This is feature is a preview and may be changed.
createdInfoAssetCommitMetadata  Long-Term Metadata related to the creation of the dashboard. See AssetCommitMetadata.
defaultFilterDashboardFilter  Long-Term The default filter used with the dashboard (see DashboardFilter Table).
defaultSharedTimeEnabledBooleanyes Long-Term Whether the shared time by default is enabled.
defaultSharedTimeEndStringyes Long-Term The default shared ending time.
defaultSharedTimeStartStringyes Long-Term The default shared starting time.
descriptionString  Long-Term A description of the dashboard.
displayNameStringyes Long-Term The display name of the dashboard.
filtersDashboardFilteryes Long-Term The filters used with the dashboard. See DashboardFilter.
idStringyes Long-Term The unique identifier for the dashboard.
isStarredBooleanyes Long-Term Whether the dashboard is marked with a star.
labelsStringyes Long-Term Any labels associated with the dashboard.
modifiedInfoAssetCommitMetadata  Long-Term Metadata related to the latest modification of the dashboard. See AssetCommitMetadata.
nameStringyes Long-Term The name of the dashboard.
packagePackageInstallation  Long-Term The package, if there is one, in which the dashboard is included (see PackageInstallation Table).
packageIdVersionedPackageSpecifier  Long-Term The unique identifiers of the package. VersionedPackageSpecifier is a scalar.
parametersDashboardParameteryes Long-Term List of dashboard parameters (see DashboardParameter Table).
readOnlyTokensDashboardLinkyes Long-Term List of tokens used to access the dashboard without logging in. Useful for wall mounted dashboards or public dashboards. See DashboardLink.
resourceStringyes Short-Term The resource identifier for this dashboard.
searchDomainSearchDomainyes Long-Term The search domain for the dashboard. See SearchDomain.
sectionsSectionyes Long-Term The sections for the dashboard. See Section.
seriesSeriesConfigyes Long-Term The series configuration for the dashboard. See SeriesConfig.
seriesColorPaletteString  Short-Term Stability: Short-term
templateYamlStringyes  deprecated in 1.225A YAML formatted string that describes the dashboard. It does not contain links or permissions, and is safe to share and use for making copies of a dashboard.
timeJumpSizeInMsInt  Long-Term The skip time in milliseconds for the dashboard.
updateFrequencyDashboardUpdateFrequencyTypeyes Long-Term The frequency in which dashboard is updated. See DashboardUpdateFrequencyType, and the explanations under the DashboardParameter.
widgetsWidgetyes Long-Term Widgets for the dashboard (see Widget Table).
yamlTemplateYAMLyes Long-Term A yaml formatted string that describes the dashboard. YAML is a scalar. It doesn't contain links or permissions, and is safe to share and use for making copies of a dashboard. This replaced templateYaml starting in LogScale version 1.165.