ilert Documentation
WebsiteAPI ReferenceLoginStart for Free
  • Getting Started
    • Core concepts
    • FAQ
      • Renaming of Incidents to Alerts
    • Import from PagerDuty
    • Import from StatusPage.io
  • Alerting
    • Dashboard
    • Alert sources
    • Notification settings
      • Mute notifications
    • Support hours
    • Maintenance windows
    • Heartbeat monitoring
      • Prometheus Heartbeat Example
      • CLI Heartbeat Examples
    • Deployment events
    • 🏛️Understanding event flows
    • ilert sender IDs, domains and IPs
      • SMS and voice alerts in China
  • On-call management & Escalations
    • Escalation policies
    • On-call schedules
      • My on-call shifts
      • Recurring schedules
      • Static schedules
    • Coverage requests
  • ChatOps
    • Overview
    • Integration for Slack
      • Receive and respond to alerts in Slack
      • Create a dedicated Slack channel for an existing alert
      • Create alerts in Slack
      • Look up who is on-call
    • Microsoft Teams Integration
      • Microsoft Teams Chat Integration
        • Microsoft Teams Integration via Incoming Webhook
        • Microsoft Teams Integration via Workflows
      • Microsoft Teams Meeting Integration
      • Create a channel for an existing alert in Microsoft Teams
      • Create alerts in Microsoft Teams
      • Look up who is on-call in Microsoft Teams
  • Incident comms & status pages
    • Getting started
    • Services
    • Incidents
    • Status pages
      • Public vs private status pages
      • Audience-specific status page
    • Metrics
      • Import metrics from Datadog
      • Import metrics from Prometheus
  • 🪄ilert AI
    • Introduction
    • Using ilert AI for efficient incident communication
    • Using ilert AI for post-mortem creation
    • Using ilert AI for schedule generation
    • Using ilert AI for alert grouping
    • Global Search enhanced by ilert AI
      • Bulk resolving similar alerts
  • Call Routing
    • Getting started with call routing
    • Routing calls using call flows
    • Call routing (legacy)
      • Routing calls based on support hours
      • Voicemail only mode
      • Managing call routing alerts
      • Adding webhooks and outbound chat messages
      • Uploading custom audio responses
  • User Administration
    • User roles and permissions
    • Team-based organisation
    • Single sign on
      • Setting up SSO with GSuite
      • Setting up SSO with Microsoft Azure Active Directory
      • Setting up SSO with Okta
      • Setting up SSO with Auth0
      • Auto provisioning users & teams
    • 🔐Two-factor authentication / MFA
  • Reports
    • Overview
    • Alerts
  • Mobile App
    • Getting started with ilert mobile app
    • Mobile app notification settings
    • Critical push notifications and DND overrides
      • iOS critical alerts configuration
      • Android Push Notification DND Configuration
    • On-call widget
  • INTEGRATIONS
    • Types of integrations
    • Inbound integrations
      • 4me Integration
      • Ansible Automation Platform AWX Integration
      • Amazon CloudWatch Integration
      • Amazon SNS Integration
        • Amazon SNS Inbound Integration
        • Amazon SNS Outbound via AWS Lambda
      • Azure Alerts Integration
        • Azure Activity Logs
        • Azure Metric
        • Azure Logs
        • Azure Service Health
        • Azure Sentinel
        • Budget Alert
      • Apica Integration
      • AppDynamics Integration
      • AppSignal Integration
      • AWS Budgets Integration
      • AWS Cloudtrail Integration
      • AWS DevOps Guru Integration
      • AWS GuardDuty Integration
      • AWS Personal Health Dashboard Integration
      • AWS Security Hub Integration
      • Autotask Inbound Integration
      • Auvik Integration
      • Catchpoint Integration
      • Checkly Integration
      • Checkmk Integration
        • Checkmk Integration (v 1.x)
        • Checkmk Integration (v 2.0+ )
      • Cisco Meraki Integration
      • Cisco ThousandEyes Integration
      • Cisco Webex
      • Cloudflare Integration
      • ClusterControl Integration
      • Connectwise Manage Integration
      • Cortex Integration
      • Cortex XSOAR (formerly Demisto) Integration
      • CrowdStrike Integration
      • Dash0 Integration
      • Datadog Integration
      • Dynatrace Integration
      • Elastic Watcher Integration
      • Email Inbound Integration
        • Email Key Extraction and Resolve Examples
        • Automatically resolve Alerts with Emails
        • Migrating legacy email settings
      • FreshService Integration
      • Gatus Integration
      • GitHub Integration
        • GitHub Advanced Security Integration
        • GitHub Inbound Check Run (Actions) Integration
        • GitHub Inbound Issue Integration
        • GitHub advanced settings
      • GitLab Integration
      • Google Cloud Monitoring (formerly Stackdriver) Integration
      • Google Security Command Center
      • Grafana Integration Overview
        • Grafana Integration
        • Grafana Integration (v 9.x)
      • Graylog Integration
      • HaloITSM Integration
      • HaloPSA Integration
      • HashiCorp Consul
      • Healthchecks.io Integration
      • HetrixTools Integration
      • Honeybadger Integration
      • Honeycomb Integration
      • Hyperping Integration
      • CrowdStrike Falcon LogScale Integration
      • IBM Cloud Functions Integration
      • Icinga Integration
      • InfluxDB Integration
      • Instana Integration
      • IT-Conductor Integration
      • IXON Cloud Integration
      • Jira Inbound Integration
      • JumpCloud Integration
      • Kafka Integration
      • Kapacitor Integration
      • Kentix AlarmManager
      • Keep Integration
      • Kibana Integration
      • Kubernetes Integration
      • LibreNMS Integration
      • Lightstep Integration
      • Loki integration
      • Mezmo Integration
      • Microsoft SCOM
      • Mimir Integration
      • MongoDB Atlas Integration
      • MXToolBox Integration
      • MQTT Integration
      • Nagios Integration
      • N-central Integration
      • Netdata Integration
      • New Relic Integration
        • New Relic Integration (deprecated)
        • New Relic Workflow Integration
      • Oh Dear Integration
      • PandoraFMS Integration
      • Panther Integration
      • Particle Integration
      • Pingdom Integration
      • PostHog Integration
      • Postman Monitors Integration
      • Prometheus Integration
      • PRTG Network Monitor Integration
      • Prisma Cloud Integration
      • Push Notifications
      • RapidSpike Integration
      • Raygun Integration
      • Rollbar Integration
      • Salesforce Integration
      • Samsara Integration
      • Search Guard Integration
      • Sematext Integration
      • Sensu Integration
      • Sentry Integration
      • Server Density Integration
      • ServerGuard24 Integration
      • ServiceNow Inbound Integration
      • SignalFx Integration
      • Site24x7 Integration
      • SMS Integration
      • SolarWinds Integration
      • Splunk Integration
      • StatusCake Integration
      • StatusHub Integration
      • StatusPage Integration
      • Sumo Logic Integration
      • Sysdig Integration
      • TOPdesk Inbound Integration
      • TeamCity integration
      • Terraform Cloud / Terraform Enterprise
      • Tulip Integration
      • Twilio Alarms Integration
      • Twilio Errors Integration
      • Ubidots Integration
      • Uptime Kuma Integration
      • UptimeRobot Integration
      • VictoriaMetrics Integration
      • Zabbix Integration
        • Zabbix 4.4+ Integration
        • Zabbix 2.2 – 4.3 Integration
      • Zammad Inbound Integration
      • Zapier Inbound Integration
      • Zendesk Inbound Integration
    • Outbound integrations
      • Autotask Outbound Integration
      • DingTalk Integration
      • Discord Integration
      • Email Outbound Integration
      • Jira Outbound Integration
      • GitHub Outbound Issue Integration
      • Mattermost Integration
      • ServiceNow Outbound Integration
      • Telegram Integration
      • TOPdesk Outbound Integration
      • Webhook Integration
      • Zammad Outbound Integration
      • Zapier Outbound Integration
      • Zendesk Outbound Integration
      • Zoom Integration
        • Zoom Chat Integration
        • Zoom Meeting Integration
    • Deployment integrations
      • API deployment pipeline
      • Argo CD deployment pipeline
      • Github deployment pipeline
      • GitLab deployment pipeline
  • API
    • API Reference
    • API Version History
      • API user preference migration 2023
      • Discontinuation of Uptime Monitoring
    • Rate Limiting
    • Client Libraries
      • ilert Agent - ilagent
      • Go Client
      • Rust Client
      • Javascript / Node.js Client
    • Terraform
      • Importing ilert UI resources into Terraform state
    • 👩‍💻ICL - ilert condition language
    • ➿ITL - ilert template language
    • API endpoints / samples
      • Creating alerts through events
      • Importing public status page subscribers
    • 🔥Developing ilert Apps
      • Get started with ilert Apps
      • Understanding OAuth2
      • Developing a Backend App with OAuth2
      • Developing a web or native App with OAuth2 and PKCE
      • Token lifetimes, error codes, app verification, etc.
  • Contact us
  • ilert Release Notes
Powered by GitBook
LogoLogo

Product

  • Alerting & Notification
  • On-call Management & Escalations
  • Call Routing
  • Status Pages

Resources

  • Blog
  • Case Studies
  • Security
  • API Reference

Legal

  • Privacy policy
  • Imprint

Increase Your Uptime

  • Start for Free
  • Get a Demo

(c) 2011 - 2025 ilert GmbH

On this page
  • Functions
  • Descriptions
  • Examples
  • Blocks
  • Sections [if]
  • Loops [for]

Was this helpful?

Edit on GitHub
  1. API

ITL - ilert template language

The ITL enables you to customize and design alerts tailored to your specific use cases. In addition to offering flexibility in formatting and structuring alerts, it also provides a variety of built-in functions to further enhance the alerts' readablility.

In the UI's text mode, you may use the Insert data... dropdown to help you add template variables quickly - the text syntax works like this:

Type
Sample
Description

Text

Some text

You may, of course, add generic text content to your liking.

Variable

{{var}}

Extract content of the event and insert it. Note: there is no further sanitizing of the values.

Accessing nested variables

{{ var.subfield.evenMore }}

Access sub fields

Accessing fields of an array

{{ var.arrayField[0].more }}

Access array contents

Access more complex keys

{{ var.compl:ex\ key-123.noproblem }}

Complex keys can be accessed by escaping whitespaces or simply writing them out e.g. colons. No index style needed.

Applying functions to variables

{{var.lowerCase()}}

See Functions below, for a list of all functions.

Passing arguments to functions

{{var.splitTakeAt("one two", 10)}}

Sections (if/else blocks)

See Sections below.

Loops (for blocks)

See Loops below.

Note that when rendering variables their content is not (HTML) escaped.

Functions

ITL allows you to apply functions for different use cases, such as string manipulation, date-time formatting, joining arrays. This flexibility makes it simple to handle text formatting, data extraction, and transformations, all within the same template.

Descriptions

Function
Description
Parameters

substring

Displays characters from the given start index(1) to the specified end index(2). (It is required to provide at least one parameter.)

substring(Integer(1)) substring(Integer(1), Integer(2))

lowerCase

Displays characters in lower case.

upperCase

Displays characters in upper case.

replaceAll

Replaces each of a given character sequence(1) with a new sequence(2).

replaceAll(String(1), String(2))

splitTakeAt

Divides a string into an array of substrings based on a character sequence as the delimiter.

splitTakeAt(String(1), Integer(2))

startsWithTake

Matches a given character sequence(1) with the start of a variable's value and replaces it with a different character sequence(2) if it matches.

startsWithTake(String(1), String(2))

equalsTake

Matches a given character sequence(1) with a variable's value and replaces it with a different character sequence(2) if it matches.

equalsTake(String(1), String(2))

endsWithTake

Matches a given character sequence(1) with the end of a variable's value and replaces it with a different character sequence(2) if it matches.

endsWithTake(String(1), String(2))

containsTake

Replaces a variable's value with a character sequence(2) if it contains a given character sequence(1).

containsTake(String(1), String(2))

startsWithTakeOrDrop

Matches a given character sequence(1) with the start of a variable's value and replaces it with a different character sequence(2) if it matches; otherwise, it does not display anything.

startsWithTakeOrDrop(String(1), String(2))

equalsTakeOrDrop

Matches a given character sequence(1) with a variable's value and replaces it with a different character sequence(2) if it matches; otherwise, it does not display anything.

equalsWithTakeOrDrop(String(1), String(2))

endsWithTakeOrDrop

Matches a given character sequence(1) with the end of a variable's value and replaces it with a different character sequence(2) if it matches; otherwise, it does not display anything.

endsWithTakeOrDrop(String(1), String(2))

containsTakeOrDrop

Replaces a variable's value with a character sequence(2) if it contains a given character sequence(1); otherwise, it does not display anything.

containsTakeOrDrop(String(1), String(2))

startsWithElse

Matches a given character sequence(1) with the start of a variable's value and replaces it with a different character sequence(2) if it doesn't match.

startsWithElse(String(1), String(2))

equalsElse

Matches a given character sequence(1) with the variable's value and replaces it with a different character sequence(2) if it doesn't match.

equalsElse(String(1), String(2))

endsWithElse

Matches a given character sequence(1) with the end of a variable's value and replaces it with a different character sequence(2) if it doesn't match.

endsWithElse(String(1), String(2))

containsElse

Replaces a variable's value with a character sequence(2) if it doesn't contain a given character sequence(1).

containsElse(String(1), String(2))

startsWithElseOrDrop

Matches a given character sequence(1) with the start of a variable's value and replaces it with a different character sequence(2) if it doesn't match; otherwise, it does not display anything.

startsWithElseOrDrop(String(1), String(2))

equalsElseOrDrop

Matches a given character sequence(1) with the variable's value and replaces it with a different character sequence(2) if it doesn't match; otherwise, it does not display anything.

equalsElseOrDrop(String(1), String(2))

endsWithElseOrDrop

Matches a given character sequence(1) with the end of a variable's value and replaces it with a different character sequence(2) if it doesn't match; otherwise, it does not display anything.

endsWithElseOrDrop(String(1), String(2))

containsElseOrDrop

Matches a given character sequence(1) with a variable's value and replaces it with a different character sequence(2) if it doesn't match; otherwise, it does not display anything.

containsElseOrDrop(String(1), String(2))

formatUnixMs

  • F: Full text style (Sunday, January 29, 2023 at 12:05:37 AM Coordinated Universal Time)

  • L: Long text style(January 29, 2023 at 12:05:37 AM UTC)

  • M: Medium text style(Jan 29, 2023, 12:05:37 AM)

  • S: Short text style(1/29/23, 12:05 AM)

Any other character will lead to medium text style as default.

formatUnixMs() formatUnixMs(String(1))

formatUnixSec

  • F: Full text style (Sunday, January 29, 2023 at 12:05:37 AM Coordinated Universal Time)

  • L: Long text style(January 29, 2023 at 12:05:37 AM UTC)

  • M: Medium text style(Jan 29, 2023, 12:05:37 AM)

  • S: Short text style(1/29/23, 12:05 AM)

Any other character will lead to medium text style as default.

formatUnixSec() formatUnixSec(String(1))

formatDateString

  • F: Full text style (Sunday, January 29, 2023 at 12:05:37 AM Coordinated Universal Time)

  • L: Long text style(January 29, 2023 at 12:05:37 AM UTC)

  • M: Medium text style(Jan 29, 2023, 12:05:37 AM)

  • S: Short text style(1/29/23, 12:05 AM)

Any other character will lead to medium text style as default.

formatDateString() formatDateString(String(1))

join

Displays a text composed of array values joined by a given delimiter(1). If no delimiter is provided, the function defaults to ", ".

join() join(String(1))

joinFromObjectArray

Displays a text composed of object array(1) values joined by a given delimiter(2). If no delimiter is provided, the function defaults to a new line.

joinFromObjectArr(String(1)) joinFromObjectArr(String(1), String(2))

extractRegex

Extract a regex from a string field.

extractRegex(String(1))

extractRegexGroups

Extract regex groups from a string field. Group extraction results are concatted without delimiter.

extractRegexGroups(String(1))

Examples

Function
Sample
Input data
Output

substring

{{ var.substring(3) }} {{ var.substring(5, 7) }}

result res

lowerCase

{{ var.lowerCase() }}

gavin belson from hooli

upperCase

{{ var.upperCase() }}

GAVIN BELSON FROM HOOLI

replaceAll

{{ var.replaceAll("Gavin Belson", "Richard Hendricks") }}

Richard Hendricks owns Hooli

splitTakeAt

{{ var.splitTakeAt("Belson, ", 1) }}

Richard Hendricks and Russ Hanneman are in the tres commas club

startsWithTake

{{ var.startsWithTake("I am the best", "In your dreams - Bertram Gilfoyle") }}

In your dreams - Bertram Gilfoyle

equalsTake

{{ var.equalsTake("I am better than Gilfoyle - Dinesh Chugtai", "Not true - Bertram Gilfoyle") }}

Not true - Bertram Gilfoyle

endsWithTake

{{ var.endsWithTake("Dinesh Chugtai", "Flys - Bertram Gilfoyle") }}

Flys - Bertram Gilfoyle

containsTake

{{ var.containsTake("rocks", "Pied Piper rocks") }}

Pied Piper rocks

startsWithTakeOrDrop

{{ var.startsWithTakeOrDrop("I am the best", "In your dreams - Bertram Gilfoyle") }}

1:

2:

1: In your dreams - Bertram Gilfoyle 2:

equalsTakeOrDrop

{{ var.equalsTakeOrDrop("I am better than Gilfoyle - Dinesh Chugtai", "Not true - Bertram Gilfoyle") }}

1:

2:

1: Not true - Bertram Gilfoyle 2:

endsWithTakeOrDrop

{{ var.endsWithTakeOrDrop("Dinesh Chugtai", "Flys - Bertram Gilfoyle") }}

1:

2:

1: Flys - Bertram Gilfoyle 2:

containsTakeOrDrop

{{ var.containsTakeOrDrop("rocks", "Pied Piper rocks") }}

1:

2:

1: Pied Piper rocks 2:

startsWithElse

{{ var.startsWithElse("I am the best", "In your dreams - Bertram Gilfoyle") }}

1.

2:

1: I am the best software engineer at Pied Piper - Dinesh Chugtai 2: In your dreams - Bertram Gilfoyle

equalsElse

{{ var.equalsElse("I am better than Gilfoyle - Dinesh Chugtai", "Not true - Bertram Gilfoyle") }}

1:

2:

1: I am better than Gilfoyle - Dinesh Chugtai 2: Not true - Bertram Gilfoyle

endsWithElse

{{ var.endsWithElse("Dinesh Chugtai", "Flys - Bertram Gilfoyle") }}

1:

2:

1: I am the fastest coder - Dinesh Chugtai 2: Flys - Bertram Gilfoyle

containsElse

{{ var.containsElse("rocks", "Pied Piper rocks") }}

1:

2:

1: Hooli rocks 2: Pied Piper rocks

startsWithElseOrDrop

{{ var.startsWithElseOrDrop("I am the best", "In your dreams - Bertram Gilfoyle") }}

1.

2:

1: 2: In your dreams - Bertram Gilfoyle

equalsElseOrDrop

{{ var.equalsElseOrDrop("I am better than Gilfoyle - Dinesh Chugtai", "Not true - Bertram Gilfoyle") }}

1:

2:

1: 2: Not true - Bertram Gilfoyle

endsWithElseOrDrop

{{ var.endsWithElseOrDrop("Dinesh Chugtai", "Flys - Bertram Gilfoyle") }}

1:

2:

1: 2: Flys - Bertram Gilfoyle

containsElseOrDrop

{{ var.containsElseOrDrop("rocks", "Pied Piper rocks") }}

1:

2:

1: 2: Pied Piper rocks

formatUnixMs

{{ var.formatUnixMs() }} {{ var.formatUnixMs("S") }}

1: Jan 29, 2023, 12:05:37 AM 2: 1/29/23, 12:05 AM

formatUnixSec

{{ var.formatUnixSec() }} {{ var.formatUnixSec("S") }}

1: Jan 29, 2023, 12:05:37 AM 2: 1/29/23, 12:05 AM

formatDateString

{{ var.formatDateString() }} {{ var.formatDateString("S") }}

1: May 25, 2021, 9:24:56 PM 2: 5/25/21, 9:24 PM

join

{{ var.join() }} {{ var.join("- ") }}

1: PiedPiper, Hooli, "Aviato" 2: PiedPiper- Hooli- Aviato

joinFromObjectArray

{{ companies.joinFromObjectArr("name") }} {{ companies.joinFromObjectArr("ceo", "+") }}

1: PiedPiper Hooli NewPiedPiper Raviga 2: PiedPiper+Hooli+NewPiedPiper+Raviga

extractRegex

extractRegexGroups

Blocks

The ITL also supports block based sections and loops, providing flexibility in handling complex templates and varying data sets efficiently.

Sections [if]

Sections allow for conditional rendering, where specific content is displayed only if a certain value exists or meets a given condition. Positive conditions check if a value is present or true, while inverted conditions render content when the value is false or missing. A section begins with a hash # and ends with a slash /.


{{ #isTrue }}
Hello
{{ /isTrue }}
World!

{{ #isFalse }}
Hello
{{ /isFalse }}
World!

Using the following context:

{
    "isTrue": true,
    "isFalse": false
}
Hello World!
World!

Inverted sections [else]

Inverted sections only render content based on the inverse value of a context key.

An inverted section begins with a caret ^ and ends with a slash /. Example:

Hello

{{ #isTrue }}
World!
{{ /isTrue }}
{{ ^isTrue }}
Tim!
{{ /isTrue }}
Hello

{{ #isFalse }}
World!
{{ /isFalse }}
{{ ^isFalse }}
Tim!
{{ /isFalse }}

Using the following context:

{
    "isTrue": true,
    "isFalse": false
}
Hello World!
Hello Tim!

Loops [for]

Loops allow to iterate over each item of a list or array of data and display render them as text.

A loop is written in the same way as a section. It begins with a hash # and ends with a slash /. Inside the loop, you place the key that represents the list or array item to be iterated over.


{{ #simple }}
{{.}}
{{ /simple }}

{{ #nested }}
{{ name }}
{{ /nested }}

Using the following context:

{
    "simple": ["Pied Piper", "Hooli", "Raviga"],
    "nested": [
        { "name": "Richard Hendricks" },
        { "name": "Gavin Belson" },
        { "name": "Peter Gregory" }
    ]
}
Pied Piper
Hooli
Raviga
Richard Hendricks
Gavin Belson
Peter Gregory
PreviousICL - ilert condition languageNextAPI endpoints / samples

Last updated 1 month ago

Was this helpful?

Formats a variable's value from milliseconds into date-time format. Additionally, it accepts a format style character (1) as a parameter. Valid format characters are:

Formats a variable's value from seconds into date-time format. Additionally, it accepts a format style character (1) as a parameter. Valid format characters are:

Formats a variable's value into date format. Additionally, it accepts a format style character (1) as a parameter. Valid format characters are:

are only applicable to absolute variable keys, therefore they cannot be used on the relative variable keys generated by loop blocks. While they are still resolved inside of the block, their content is repeated which each loop iteration.

➿
{{ #var }}
true
{{ /var }}
{{ ^var }}
false
{{ /var }}
{{ #array }}
{{ firstName }} {{ lastName }}
{{ /array }}
{
    "var": "Test result"
}
{
    "var": "Gavin Belson from Hooli"
}
{
    "var": "Gavin Belson from Hooli"
}
{
    "var": "Gavin Belson owns Hooli"
}
{
    "var": "Gavin Belson, Richard Hendricks and Russ Hanneman are in the tres commas club"
}
{
    "var": "I am the best software engineer at Pied Piper - Dinesh Chugtai"
}
{
    "var": "I am better than Gilfoyle - Dinesh Chugtai"
}
{
    "var": "I am the fastest coder - Dinesh Chugtai"
}
{
    "var": "Hooli rocks"
}
{
    "var": "I am the best software engineer at Pied Piper - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am better than Gilfoyle - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am the fastest coder - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "Hooli rocks"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am the best software engineer at Pied Piper - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am better than Gilfoyle - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am the fastest coder - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "Hooli rocks"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am the best software engineer at Pied Piper - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am better than Gilfoyle - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "I am the fastest coder - Dinesh Chugtai"
}
{
    "var": "Pied Piper"
}
{
    "var": "Hooli rocks"
}
{
    "var": "Pied Piper"
}
{
    "ms": 1674950737000
}
{
    "sec": 1674950737
}
{
    "str": "2021-05-25T21:24:56.771Z"
}
{
    "array": ["PiedPiper", "Hooli", "Aviato"]
}
{
    "companies": [
        {
            "name": "PiedPiper",
            "ceo": "Richard Hendricks"
        },
        {
            "name": "Hooli",
            "ceo": "Gavin Belson"
        },
        {
            "name": "NewPiedPiper",
            "ceo": "Jian-Yang"
        },
        {
            "name": "Raviga",
            "ceo": "Peter Gregory"
        }
    ]
}
{{ body.extractRegex(\"[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}\") }}
{ "body": "incident resolve-f8c687a9-e0dc-48e3-b51f-8440dfd35fab -hey"
f8c687a9-e0dc-48e3-b51f-8440dfd35fab
{{ body.extractRegexGroups(\"Organization:\\s*([^\\r\\n]+)\\s*Location:[\\s\\S]+?Device:\\s*([^\\r\\n]+)\") }}
{"body": "Organization: Hans\n" +
    "Location: Otto\n" +
    "Device: Peter"}
HansPeter
ITL functions
ISO-8601
ISO-8601
ISO-8601