# Data types

## Primitive types

<table><thead><tr><th width="147.33331298828125" valign="top">Type</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top">string</td><td valign="top">A string is a statically specified piece of text, like <code>"Hello, world"</code>.</td></tr><tr><td valign="top">number</td><td valign="top">A number is a sequence of digits, like <code>8452</code> or <code>-123</code>.</td></tr><tr><td valign="top">boolean</td><td valign="top">A boolean is a binary type that has 2 values: <code>true</code> or <code>false</code>.</td></tr><tr><td valign="top">null</td><td valign="top">A null is a special type, that represents an absence of a value.</td></tr></tbody></table>

## Complex types

### Flat object

A flat object is a collection of key-value pairs, where the key is a [string](#string), and the value can be any [primitive type](#primitive-types).

{% tabs %}
{% tab title="Source" %}

```json
{
    "id": 1,
    "firstName": "James",
    "lastName": "McManson",
}
```

{% hint style="info" %}
A flat object cannot contain nested collections and arrays.
{% endhint %}
{% endtab %}
{% endtabs %}

### Object

An object is a collection of key-value pairs, where the key is a [string](#string), and the value can be any [primitive](#primitive-types) or [complex](#complex-types) type.

{% tabs %}
{% tab title="Source" %}

```json
{
    "data": [{
        "id": 1,
        "url": "http://example.com"
    }, {
        "id": 2,
        "url": "http://foobar.org"
    }],
    "additional_data": {
        "total": 2,
        "next_page": false,
        "info": null
    }
}
```

{% endtab %}
{% endtabs %}

### Array

An array is a collection of [primitive](#primitive-types) and [complex](#complex-types) types.

## IML types

IML types are special strings or [complex types](#complex-types) that can contain [IML](https://developers.make.com/custom-apps-documentation/block-elements/iml) expressions. An IML expression is a template expression that can resolve into a value.

### IML string

An IML string is a [string](#string) that can contain IML expressions in between `{{` and `}}` tags. Anything between these tags is considered an expression. IML strings are also known as template strings. IML string is an extension to string and, as such, can contain any value that a normal string can contain. It does not have to be just an IML expression. For example:

* A string of a single IML expression: `"{{body.data.firstName + ' ' + body.data.lastName}}"`
* A string without an IML expression: `"Hello, World"`
* A string with text and IML expression: `"Hello, {{body.data.name}}"`

### IML flat object

An IML flat object is a [flat object](#flat-object) that can additionally contain [IML strings](#iml-string) as values.

{% tabs %}
{% tab title="Source" %}

```json
{
    "page": "{{temp.page}}",
    "limit": 1,
    "type": "{{parameters.type}}"
}
```

{% endtab %}
{% endtabs %}

### IML object

An IML object is an [object](#object) that can additionally contain [IML strings](#iml-string) and [IML arrays](#iml-array) as values.

{% tabs %}
{% tab title="Source" %}

```json
{
    "data": [{
        "id": "{{body.id}}",
        "name": "{{body.name}}"
    }, "{{parameters.type}}"],
```

{% endtab %}
{% endtabs %}

### IML array

An IML array is an [array](#array) that can contain [IML strings](#iml-string) and [IML objects](#iml-object) as values.

{% tabs %}
{% tab title="Source" %}

```json
[   
    {
        "id": "{{body.id}}",
        "name": "{{body.name}}",
        "data": {
            "foo": "{{temp.bar}}"
        }
    }, 
    "{{parameters.type}}",
    1,
    true,
    null
]
```

{% endtab %}
{% endtabs %}
