# FormFieldTypes

## Introduction

`FormFieldTypes` associated to `FormFields` by their key describe how inputs are displayed for the end user and which kind of information needs to be submitted and stored in `FormMessageFields` [when sending a Form.](https://docs.api.intratool.de/api-reference/forms#send)

Every `FormFieldType` offers a generic default configuration and describes how a concrete configuration is validated when creating a `FormField`.

## List

Get a list of all `FormFieldTypes`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/forms/field-types`

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/forms/field-types', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": "text",
    "icon_id": 72,
    "name": "Eingabefeld",
    "default_config": {},
    "unique": false,
    "relevant": true,
    "sort_number": 1,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 00:00:00"
  },
  {
    "id": "rich-text",
    "icon_id": 73,
    "name": "Freitext",
    "default_config": {},
    "unique": false,
    "relevant": true,
    "sort_number": 2,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 00:00:00"
  },
  {
    "id": "checkbox",
    "icon_id": 74,
    "name": "Mehrfachauswahl",
    "default_config": {
      "options": {
        "option-1": "Option 1"
      },
      "inline": false
    },
    "unique": false,
    "relevant": true,
    "sort_number": 3,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 13:44:14"
  },
  {
    "id": "radio",
    "icon_id": 42,
    "name": "Auswahl",
    "default_config": {
      "options": {
        "option-1": "Option 1"
      },
      "inline": false
    },
    "unique": false,
    "relevant": true,
    "sort_number": 4,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 13:44:14"
  },
  {
    "id": "select",
    "icon_id": 71,
    "name": "Ausklappmen\u00fc",
    "default_config": {
      "options": {
        "option-1": "Option 1"
      }
    },
    "unique": false,
    "relevant": true,
    "sort_number": 5,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 00:00:00"
  },
  {
    "id": "datetime",
    "icon_id": 3,
    "name": "Datum/Zeit",
    "default_config": {
      "type": "date",
      "format": "d.m.Y"
    },
    "unique": false,
    "relevant": true,
    "sort_number": 6,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 00:00:00"
  },
  {
    "id": "file-upload",
    "icon_id": 19,
    "name": "Datei-Upload",
    "default_config": {
      "path": "/Formular-Uploads/",
      "send_as_attachment": false
    },
    "unique": false,
    "relevant": true,
    "sort_number": 7,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 13:44:14"
  },
  {
    "id": "recipient-select",
    "icon_id": 4,
    "name": "Empf\u00e4nger-Auswahl",
    "default_config": {
      "options": {},
      "multi_select": false
    },
    "unique": true,
    "relevant": true,
    "sort_number": 8,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 13:44:14"
  },
  {
    "id": "description",
    "icon_id": 56,
    "name": "Beschreibung",
    "default_config": {},
    "unique": false,
    "relevant": true,
    "sort_number": 9,
    "created_at": "2019-01-21 00:00:00",
    "updated_at": "2019-01-21 13:44:14"
  }
]
```

## Show

Show a single `FormFieldType` by `id`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/forms/field-types/{id}`

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/forms/field-types/rich-text', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
[]
```

## Text

The default type for displaying a simple input field.

**Key:** `text`

**Configuration**

No further configuration available.

## RichText

A field that is displayed as an input box and with basic RTE features.

**Key** `rich-text`

**Configuration**

No further configuration available.

## Description

A label field to display text in the form to describe sections. This is not actually and HTML input field and will not be processed in [FormMessages](https://docs.api.intratool.de/api-reference/forms/form-messages).

**Key:** `description`

**Configuration**

No further configuration available.

## DateTime

A field that is displayed as DateInput and a DatePicker.

**Key:** `datetime`

**Configuration**

| Key      | Description                                                                | Type   | Default | Example |
| -------- | -------------------------------------------------------------------------- | ------ | ------- | ------- |
| `type`   | The type of the date field. Can be either time or date                     | string | `date`  | `time`  |
| `format` | The date format. Has to be a valid date format for either `time` or `date` | string | `d.m.Y` | `H:i`   |

## FileUpload

A field that is displayed as FileInput to upload a file from form.

**Key** `file-upload`

**Configuration**

| Key                  | Description                                                               | Type    | Default              | Example      |
| -------------------- | ------------------------------------------------------------------------- | ------- | -------------------- | ------------ |
| `path`               | The path the file should be uploaded to on `Filemanager`                  | string  | `/Formular-Uploads/` | `/folder-1/` |
| `send_as_attachment` | Indicates if the file should be attached on sent mails or shown as a Link | boolean | `false`              | `true`       |

## Radio

A field that is displayed as radio input to select one of the configured values.

**Key** `radio`

**Configuration**

| Key       | Description                                                 | Type    | Default                      | Example                                              |
| --------- | ----------------------------------------------------------- | ------- | ---------------------------- | ---------------------------------------------------- |
| `options` | The definition of option-keys and their values              | object  | `{ "option-1": "Option 1" }` | `{ "option-1": "Option 1", "option-2": "Option 2" }` |
| `inline`  | Indicates if the possible values should be displayed inline | boolean | `false`                      | `true`                                               |

## Checkbox

A field that is displayed as checkboxes to select one or more of the configured values.

**Key** `checkbox`

**Configuration**

| Key       | Description                                                 | Type    | Default                      | Example                                              |
| --------- | ----------------------------------------------------------- | ------- | ---------------------------- | ---------------------------------------------------- |
| `options` | The definition of option-keys and their values              | object  | `{ "option-1": "Option 1" }` | `{ "option-1": "Option 1", "option-2": "Option 2" }` |
| `inline`  | Indicates if the possible values should be displayed inline | boolean | `false`                      | `true`                                               |

## Recipient-Select

A field to select recipients of a [Form](https://docs.api.intratool.de/api-reference/forms/forms). This field type is unique for every [Form](https://docs.api.intratool.de/api-reference/forms/forms) and will have effect on the `recipient` field of a [FormMessage](https://docs.api.intratool.de/api-reference/forms/form-messages) when it's created.

While sending [FormMessages](https://docs.api.intratool.de/api-reference/forms/form-messages), the values of this field will be used as the receiver(s).

**Key** `recipient-select`

**Configuration**

| Key            | Description                                                  | Type    | Default | Example                                  |
| -------------- | ------------------------------------------------------------ | ------- | ------- | ---------------------------------------- |
| `options`      | The definition of option-keys and their values               | object  | `{}`    | `{ "Example name": "name@example.com" }` |
| `multi_select` | Indicates if it's possible to select more than one recipient | boolean | `false` | `true`                                   |

{% hint style="warning" %}
You can set more than one recipient for one option by separating the email addresses with commas
{% endhint %}
