> For the complete documentation index, see [llms.txt](https://help.ica.illumina.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.ica.illumina.com/project/p-flow/f-pipelines/json-based-input-forms/inputform-json.md).

# inputForm.json

## inputForm.json

The JSON schema allowing you to define the input parameters. See the [JSON Schema](/project/p-flow/f-pipelines/json-based-input-forms/inputform-json/inputform.json-syntax.md) page for syntax details.

{% hint style="info" %}
The inputForm.json file has a size limit of 10 MB and a maximum of 200 fields.
{% endhint %}

## Field types <a href="#pipelineinputforms-parametertypes" id="pipelineinputforms-parametertypes"></a>

<table><thead><tr><th width="126.18359375">Type</th><th>Usage</th></tr></thead><tbody><tr><td>checkbox</td><td>A <strong>true/false</strong> checkbox that supports the option of being required, for example when you want the checkbox checked to accept the terms of use. This is done by setting minValues is to 1. (corresponds to the booleanType in xml).</td></tr><tr><td>data</td><td>Data such as <strong>files</strong>. The optional <em>nameFilter</em> is a data filename filter pattern for parts of the expected filename.</td></tr><tr><td>fieldgroup</td><td>Can contain parameters or other groups. Useful for <strong>building complex data structures</strong>. Can have repeating sets of parameters, for instance when a father/mother/child choice needs to be linked to each file input. So if you want to have the same elements multiple times in your form, combine them into a fieldgroup.<br>Fieldgroups do not support the emptyValuesAllowed attribute.</td></tr><tr><td>integer</td><td>Corresponds to java <strong>Integer</strong>. Supports min and max values.</td></tr><tr><td>number</td><td>The value is of <strong>Number</strong> type in javascript and <strong>Double</strong> type in java. (corresponds to doubleType in xml).</td></tr><tr><td>radio</td><td>A radio button group to <strong>select one from a list of choices</strong>. The values to choose from must be unique.</td></tr><tr><td>section</td><td>For <strong>splitting up fields</strong>, to give structure to the form. Rendered as subtitles. No values are to be assigned to these fields.</td></tr><tr><td>select</td><td>A <strong>dropdown</strong> selection to select one from a list of choices. This can be used for both single-level lists and tree-based lists. A choice entry set to <em>disabled</em> can be helpful to build the hierarchy tree without being selectable.</td></tr><tr><td>text</td><td>To <strong>display informational messages</strong>. No values are to be assigned to these fields.</td></tr><tr><td>textbox</td><td>Corresponds to <strong>stringType</strong> in xml. Supports regex and length limitations.</td></tr></tbody></table>

## Field Parameter Attributes <a href="#pipelineinputforms-parameterattributes" id="pipelineinputforms-parameterattributes"></a>

These attributes can be used to configure the fields.

<table><thead><tr><th width="217.51953125">Attribute</th><th>Purpose</th></tr></thead><tbody><tr><td>choices</td><td><p>A <strong>list of choices</strong> with for each a <em>value</em>, <em>text</em> (is label), <em>selected</em> (only 1 true supported), disabled.</p><p><em>parent</em> can be used to build hierarchical choice trees.</p><p><em>availableWhen</em> can be used for conditional presence of the choice based on values of other fields.</p><p>Parent and value must be unique, you cannot use the same value for both.</p></td></tr><tr><td>dataFilter</td><td>For defining the filtering when type is 'data'. Use <strong>nameFilter</strong> for matching the name of the file, <strong>dataFormat</strong> for file format and <strong>dataType</strong> for selecting between files and directories. (<em>To see the data formats, open the file details in Platform Core and look at the Format on the data details. You can expand the dropdown list to see the syntax.)</em> The <strong>dataType="file"</strong> also accepts S3 and HTTP(S) URLs.</td></tr><tr><td>disabled</td><td>Shows the parameter but makes editing it impossible. The value can still be altered by onRender.js.</td></tr><tr><td>dropValueWhenDisabled</td><td>When this is present and true and the field has <em>disabled</em> being true, then the value will be omitted during the submit handling (on the onSubmit result).</td></tr><tr><td>emptyValuesAllowed</td><td>When maxValues is 1 or not set and emptyValuesAllowed is true, the values may contain null entries. Default is false.</td></tr><tr><td>fields</td><td>The list of sub fields for type fieldgroup.</td></tr><tr><td>helpText</td><td>A helper text about the parameter. Will be displayed in smaller font with the parameter.</td></tr><tr><td>hidden</td><td>Makes this parameter hidden. Can be made visible later in onRender.js or can be used to set hardcoded values of which the user should be aware.</td></tr><tr><td>label</td><td>The display label for this parameter. Optional but recommended, id will be used if missing.</td></tr><tr><td>max</td><td><p>Maximal allowed value for '<strong>integer</strong>' and '<strong>number</strong>' type.</p><ul><li>for 'integer' type fields the minimal and maximal values are -100000000000000000 and 100000000000000000.</li><li>for 'number' type fields the max precision is 15 significant digits and the exponent needs to be between -300 and +300.</li></ul></td></tr><tr><td>min</td><td><p>Minimal allowed value for '<strong>integer</strong>' and '<strong>number</strong>' type.</p><ul><li>for 'integer' type fields the minimal and maximal values are -100000000000000000 and 100000000000000000.</li><li>for 'number' type fields the max precision is 15 significant digits and the exponent needs to be between -300 and +300.</li></ul></td></tr><tr><td>maxValues</td><td>The maximal amount of values that need to be present. Default when not set is 1.</td></tr><tr><td>minValues</td><td>The minimal amount of values that needs to be present. Default when not set is 0. Set to >=1 to make the field required.</td></tr><tr><td>minMaxValuesMessage</td><td>The error message displayed when minValues or maxValues is not adhered to. When not set, a default message is generated.</td></tr><tr><td>maxLength</td><td>Only applied on type="textbox". Value is a positive integer.</td></tr><tr><td>minLength</td><td>Only applied on type="textbox". Value is a positive integer.</td></tr><tr><td>placeHolderText</td><td>An optional short hint ( a word or short phrase) to aid the user when the field has no value.</td></tr><tr><td>regex</td><td>The regex pattern the value must adhere to. Only applied on type="textbox".</td></tr><tr><td>regexErrorMessage</td><td>The optional error message when the value does not adhere to the "regex". A default message will be used if this parameter is not present. It is highly recommended to set this as the default message will show the regex which is typically very technical.</td></tr><tr><td>tooltipText</td><td>An optional HTML markdown-formatted text describing detail what the user is expected to enter in the field. This text is displayed when selecting the (i) icon next to the field and is avaialble for every field type.</td></tr><tr><td>updateRenderOnChange</td><td>When true, the onRender javascript function is triggered each time the user changes the value of this field. Default is false.</td></tr><tr><td>value</td><td>The value of the parameter. Can be considered default value. Can be an array for multi-value fields. For number-type values the exponent needs to be between -300 and +300 and max precision is 15. For integer-type values the value needs to between -100000000000000000 and 100000000000000000"</td></tr></tbody></table>

#### Tooltip vs Placeholder example

The tooltip text is only displayed when you hover over the (i) symbol next to the field and can be used for extensive explanations with formatting. The placeholder text is limited in size and only shown when no value has been entered in the field.

{% code overflow="wrap" expandable="true" %}

```json
{  
"id":"markup",
"type":"textbox",
"label":"markup field",
"tooltipText":"<font color='#FF0000' size='48'><b>Formatted</b></font><br><font color='green' size='24'><b>text</font>",
"placeHolderText":"Enter the information for this field"
}
```

{% endcode %}

<figure><img src="https://3193631692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MWUqIqZhOK_i4HqCUpT%2Fuploads%2Fgit-blob-b0ebf042c007a4cd0515e305dcbbaa8845992931%2Fimage%20(154).png?alt=media" alt=""><figcaption></figcaption></figure>

<details>

<summary>Tree structure example</summary>

"choices" can be used for a single list or for a tree-structured list. See below for an example for how to set up a tree structure.

```json
{
  "fields": [
    {
      "id": "myTreeList",
      "type": "select",
      "label": "Selection Tree Example",
      "choices": [
        {
          "text": "trunk",
          "value": "treetrunk"
        },
        {
          "text": "branch",
          "value": "treebranch",
          "parent":"treetrunk"
        },
        {
          "text": "leaf",
          "value": "treeleaf",
          "parent":"treebranch"
        },
        {
          "text": "bird",
          "value": "happybird",
          "parent":"treebranch"
        },
        {
          "text": "cat",
          "value": "cat",
          "parent": "treetrunk",
          "disabled": true
        }
      ],
      "minValues": 1,
      "maxValues": 3,
      "helpText": "This is a tree example"
    }
  ]
}
```

</details>

## Experimental Features

<table><thead><tr><th width="267">Feature</th><th></th></tr></thead><tbody><tr><td>Streamable inputs</td><td>Adding <code>"streamable":true</code> to an input field of type "<strong>data</strong>" makes it a streamable input.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://help.ica.illumina.com/project/p-flow/f-pipelines/json-based-input-forms/inputform-json.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
