ISL
ISL is a low-code interpreted scripting language and runtime container designed to provide developers and non-developers an easy way to write, test, and deploy user developed code inside any service.
The ISL supports an intuitive simplified syntax with features that make data acquisition and data transformations easy with minimal lines of code. In addition, the language supports easy extensibility allowing it to be used as a multi-purpose service extensibility language.
The ISL can be embedded in any JVM based project to provide runtime based extensibility through a fast and lightweight runtime.
Overview
ISL is a WYSIWYG scripting language designed for data transformations of JSON to JSON objects.
⌨️ If it looks like a JSON it’s a valid ISL :)
⏩ Checkout the Overview for examples and the basics of the ISL.
⏩ Checkout the QuickStart Guide for how to use ISL in 2 minutes.
‼️ Checkout the Best Practices to understand how to run ISL efficiently.
Example
In the most simple form the ISL is a JSON transformation language:
Given Input JSON:
{
"title": "IPod Nano - 8GB",
"body_html": "It's the small iPod with a big idea: Video.",
"id": 632910392,
"images": [
{
"id": 850703190,
"src": "http://example.com/burton.jpg"
}
],
"options": {
"name": "Color",
"values": ["Pink", "Red", "Green", "Black"]
},
"status": "active",
"tags": "Emotive, Flash Memory, MP3, Music",
"updated_at": 1645004735,
"vendor": "Apple"
}
And Transformation:

Will output:
{
"id": 632910392,
"name": "IPod Nano - 8GB",
"short_description": "IPod Nano - 8GB by Apple",
"primary_image": {
"id": 850703190,
"url": "http://example.com/burton.jpg"
},
"is_active": true,
"option_name": "Color",
"option_values": "Pink,Red,Green,Black",
"updated": "2022-02-47 09:45"
}
Major Features
- JSON Compatible Object Building
item: { field: true, "my-property": 12 }. - Comprehensive Conditions, If/Else & Switch statements including RegEx Switch Case
- Script Imports.
- Math Expressions
$total: {{ $amount * $quantity * 1.2 }}. - Functional Expressions for:
- Easily Extensible with
- functions:
@.Service.Function( ... ). - modifiers:
| calculate_tax( ... ). - wildcard modifiers:
| encode.base64( ... ). - block statement extensions similar to pagination support
@.Pagination.Page() { ... block ... }.
- functions:
- Pagination Strategies for Page and Cursor.
- Utilities for dealing with Time & Dates, Signatures & Hashing.
- Support for parsing XML and outputting XML, parsing CSV.
- Support for advanced String Interpolation
Hi there $name. Today is ${ @.Date.Now() | to.string("yyyy MM dd") }.. - Support for
find,matchandreplaceusing Regular Expressions.
Learning And Support
See the documentation in this repository for comprehensive guides and examples.
JSON DSL
For Kotlin users ISL also bring a new JSON based DSL to simplify the creation of JSON nodes from Kotlin:
import com.intuit.isl.dsl.*
val value = node {
put ("first name", "John")
put ("last name", "Smith")
put ("age", 23 )
array ("addresses")[
node ("work"){
put("line1", "123 Intuit Way")
}
]
}
val jsonNode = value.node; // access the internal JsonNode that was generated
Latest Version
Check the releases page for the latest version.
Change Log
Checkout out the changelog for the changes.