# 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](/custom-apps-documentation/block-elements/iml.md) 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.make.com/custom-apps-documentation/block-elements/types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
